انجمنهای فارسی اوبونتو
تازه کار => فلسفهٔ اوبونتو، گنو/لینوکس و نرمافزارهای آزاد و متنباز => نویسنده: کیان در 07 فروردین 1392، 12:35 قظ
-
تعریف سیستم عامل رو روشن کنید تا بعد در تاپیک زیر تعیین کنیم (گنو)-(گنو/لینوکی)-(لینوکس)؟
http://forum.ubuntu.ir/index.php/topic,42982.msg490227.html#msg490227
1. سیستم عامل چی هست؟
2. سیستم عامل چی نیست؟
3. مثالهایی از سیستم عاملهای حداقلی؟
لطقا نگید این رو بخون یا اون رو بخون. اگر جایی از متنی مدنظرتونه اون قسمت رو نقل قول کنید، چون همگی ما یک چیزایی خوندیم و یک چیزایی بلدیم. فکرتون رو منسجم کنید و مستدل تعریف سیستم عامل رو بگید. در آخر هم اگر تونستید ازش نتیجه بگیرید که هسته لینوکس بدون گنو می تونه یک سیستم عامل باشه یا نه.
-
این دوتا رو حتما بخونید. سیستم عامل در:
ویکی پدیا فارسی (http://fa.wikipedia.org/wiki/%D8%B3%DB%8C%D8%B3%D8%AA%D9%85%E2%80%8C%D8%B9%D8%A7%D9%85%D9%84) - ویکی پدیا انگلیسی (http://en.wikipedia.org/wiki/Operating_system)
-
خب طبق تعاریفی که از 2 کتاب تانن باوم و سیلبرشاتس دستگیرم شده ، رابطی بین سخت افزار و کاربر. که البته اینجا کاربر هرچیزی میتونه باشه حتی برنامه های کاربردی.
مثالی از یک سیستم عامل حداقلی :
http://mikeos.berlios.de/write-your-own-os.html
اینجا نشون میده حتی چیزی که Hello World رو روی صفحه نشون میده هم یک سیستم عامل هست.
و اینکه سیستم عامل چی نیست؟
این لینک رو بخون :
http://wiki.osdev.org/Introduction#What_is_an_Operating_System.3F
خب اینها مختصر اطلاعات هستند ، مطئنا توی کتب تخصصی مطالب بهتری یافت میشه :)
-
خب طبق تعاریفی که از 2 کتاب تانن باوم و سیلبرشاتس دستگیرم شده ، رابطی بین سخت افزار و کاربر. که البته اینجا کاربر هرچیزی میتونه باشه حتی برنامه های کاربردی.
ولی من هیچ وقت کاربر رو با برنامه کاربردی یکسان نمیدونم. رابط بین سخت افزار و نرم افزار - سخت افزار و کاربر بهتره.(نظر من)
-
یه سوال هم من اضافه میکنم.
سیستم عامل شامل چیه؟ مثلا چیزی مثل میزکار جز سیستم عامله یا نه؟
-
خب طبق تعاریفی که از 2 کتاب تانن باوم و سیلبرشاتس دستگیرم شده ، رابطی بین سخت افزار و کاربر. که البته اینجا کاربر هرچیزی میتونه باشه حتی برنامه های کاربردی.
ولی من هیچ وقت کاربر رو با برنامه کاربردی یکسان نمیدونم. رابط بین سخت افزار و نرم افزار - سخت افزار و کاربر بهتره.(نظر من)
نه کاربر حتما نباید انسان باشه. فرض کن نرم افزاری مثل آفیس، یا نه خود رابط کاربری از مانیتور + کارت گرافیک داره استفاده میکنه ، خب به نظرت موقعی که سیستم روشن هست و انسانی نیست که ازش استفاده کنه ، اینا از این سخت افزار استفاده نمیکنند؟ این خودش ساده ترین دلیل هست که نرم افزارهای موجود هم نوعی کاربر محسوب میشن.
یه سوال هم من اضافه میکنم.
سیستم عامل شامل چیه؟ مثلا چیزی مثل میزکار جز سیستم عامله یا نه؟
به لینکهایی که دادم مراجعه کن. خیر ، نیست. حتی X.org هم نیست. پس ویندوز ، اوبونتو ، مک و ... که سرور نمایش ، مدیر نمایشگر و محیط گرافیکی کاربر دارند ، دارند سرویسهای اضافه تری نسبت به یک سیستم عامل ارائه میدن.
-
برای اینکه بفهمید سیستم عامل چی هست باید کتابی مثل "کتاب سیستم عامل دکتر حقیقت " رو بخونید .
-
به طور خلاصه سیستم عامل کلید ورود شما به دنیای سخت افزار و پایه ای ترین نرم افزاری است که هر کامپیوتر برای حتی روشن شدن اولیه باید آن را اجرا کند. من خودم سعی میکنم بیشتر نام توزیع رو بگم! که دلیلش رو در ادامه میگم. خوب بریم سر اصل مطلب! اغلب دستور های ساده مثل همین cd lsof توسط بنیاد نرم افزار آزاد اون هم برای توسعه سیستم عامل گنو خودشان نوشته شده بود! به طور خلاصه آچه اتفاق افتاد! بنیاد نرم افزار آزاد شروع به نوشتن گنو (اینجا منظور سیستم عامل است) میکنه و ابتدا به توسعه محیط توسعه نرم افزار؛ مانند کمپایلرها دستورات عمومی مانند کپی فایل، برنامه هایی برای کارهای گرافیکی و... میکنه. اما لینوس توروالدز، لینوکس را با نوشتن هسته (کرنل) اون شروع میکنه! و بعد می یاد از اپلیکیشنهای نوشته توسط گنو استفاده میکنه!به همین خاطر انصاف میگه باید از واژه گنو/لینوکس استفاده بشه گرچه خودم بیشتر سعی میکنم نام توزیع رو بگم به همون علت که به ویندوز مثلا سون نمیگن کرنل ان تی! ;D گفتن نام توزیع به نظرم عاقلانه به نظر میرسه مثلا اوبونتو فدورا آرچ ردهت و.... که همه اینها از دو بخش اصلی تشکیل شدن که توسط دوگروه مختلف ایجاد شدند. نکته ای هم که باعث شده نام لینوکس بیشتر جا بیافته این است که لینوس توروالدز از سال ۱۹۹۱ از این نام استفاده کرد و استالمن در اواسط دهه ۹۰ تز مردم خواست که نام گنو/لینوکس به این سیستم عامل گذاشته بشه یعنی درست زمانی بعد از اینکه نام لینوکس معروف و جاافتاده شدهبود. همین فاصله زمانی کافی بود تا لینوکس بیشتر جا بیافته بعضی ها هم میگن واژه لینوکس کوتاهتر و راحت تر است اما اگه از نظر تکنیکی به قضیه نگاه کنید شاید آنچنان درست نباشه و حاصل زحمات برنامه های نوشته شده توسط گنو نادید گرفته بشه. به همین خاطر شما باید این رابطه دوطرفه رو درست بتونید درک کنید
منابع:
http://www.tldp.org/LDP/sag/html/gnu-or-not.html (http://www.tldp.org/LDP/sag/html/gnu-or-not.html)
http://fa.wikipedia.org/wiki/بحث_نامگذاری_گنو/لینوکس (http://fa.wikipedia.org/wiki/بحث_نامگذاری_گنو/لینوکس)
-
خب طبق تعاریفی که از 2 کتاب تانن باوم و سیلبرشاتس دستگیرم شده ، رابطی بین سخت افزار و کاربر. که البته اینجا کاربر هرچیزی میتونه باشه حتی برنامه های کاربردی.
ولی من هیچ وقت کاربر رو با برنامه کاربردی یکسان نمیدونم. رابط بین سخت افزار و نرم افزار - سخت افزار و کاربر بهتره.(نظر من)
نه کاربر حتما نباید انسان باشه. فرض کن نرم افزاری مثل آفیس، یا نه خود رابط کاربری از مانیتور + کارت گرافیک داره استفاده میکنه ، خب به نظرت موقعی که سیستم روشن هست و انسانی نیست که ازش استفاده کنه ، اینا از این سخت افزار استفاده نمیکنند؟ این خودش ساده ترین دلیل هست که نرم افزارهای موجود هم نوعی کاربر محسوب میشن.
اتفاقا به اینها هم فکر کردم و حرف زدم. من هیچ وقت نمی تونم یه کاربر (انسان) رو با یه نرم افزار یکی بدونم. چیزهای زیادی وجود دارن که روی کاربر اثر میذاره ولی روی نرم افزار تاثیری نداره.
با توجه به قسمت دوم حرفات من حرفم رو پس میگیرم و به "سیستم عامل = رابط بین سخت افزار و نرم افزار" تغییر میدم.
-
خب طبق تعاریفی که از 2 کتاب تانن باوم و سیلبرشاتس دستگیرم شده ، رابطی بین سخت افزار و کاربر. که البته اینجا کاربر هرچیزی میتونه باشه حتی برنامه های کاربردی.
ولی من هیچ وقت کاربر رو با برنامه کاربردی یکسان نمیدونم. رابط بین سخت افزار و نرم افزار - سخت افزار و کاربر بهتره.(نظر من)
نه کاربر حتما نباید انسان باشه. فرض کن نرم افزاری مثل آفیس، یا نه خود رابط کاربری از مانیتور + کارت گرافیک داره استفاده میکنه ، خب به نظرت موقعی که سیستم روشن هست و انسانی نیست که ازش استفاده کنه ، اینا از این سخت افزار استفاده نمیکنند؟ این خودش ساده ترین دلیل هست که نرم افزارهای موجود هم نوعی کاربر محسوب میشن.
اتفاقا به اینها هم فکر کردم و حرف زدم. من هیچ وقت نمی تونم یه کاربر (انسان) رو با یه نرم افزار یکی بدونم. چیزهای زیادی وجود دارن که روی کاربر اثر میذاره ولی روی نرم افزار تاثیری نداره.
با توجه به قسمت دوم حرفات من حرفم رو پس میگیرم و به "سیستم عامل = رابط بین سخت افزار و نرم افزار" تغییر میدم.
خب تعریف کاربر رو ما نمیگیم :) افرادی مثل تانن باوم تعریفش میکنند. اگر کتاب تانن باوم رو بخونی میبینی که در ساده ترین حالبت خیلی از چیزایی که فکرشم نمیکنی کاربر محسوب میشن. البته لفظ "کاربر" کلا غلط هست (این هم نمونه ای از همون بومی سازی هاست که Download رو پایین گذاری ترجمه کرده ](*,)) و در اصل باید بگیم "سطح کاربر".
تعریف کاربر با این حساب میشه "هرچی که در سطح کاربر اجرا بشه" . که در انگلیسی بهش میگند Userland . این هم جزء مهمی از سیستم عامل محسوب میشه اما اصل سیستم عامل نیست. GNU هم یک Userland هست :)
-
گنو فقط ابزار گنو نیست. گنو مجموعهای هستش از موارد مختلف از جمله مجوز گنو، استانداردهای گنو، بوتلودر گنو، کامپایلر گنو، کتابخانههای گنو، ...
-
گنو فقط ابزار گنو نیست. گنو مجموعهای هستش از موارد مختلف از جمله مجوز گنو، استانداردهای گنو، بوتلودر گنو، کامپایلر گنو، کتابخانههای گنو، ...
منظور اینجا همون ابزارها بود :) بوت لودر هم جزئی از سیستم عامل هست ولی وقتی LiLO هست فکر نکنم گراب بوت لودر رسمی باشه. گرچه در LFS هم گراب رو آموزش داده و همچنین عموم توزیع ها ازش استفاده میکنند.
-
برای اینکه بفهمید سیستم عامل چی هست باید کتابی مثل "کتاب سیستم عامل دکتر حقیقت " رو بخونید .
بله، بله. واقعاً بهترین کتابی بود که در این زمینه خوندم. با نقل قول از اینکتاب:
تعریف سیستمعامل:
سیستمعامل (Operating System) اساسیترین برنامهی سیستمی است که رایانه را راهاندازی کرده و تا هنگامی که رایانه روشن است، مدیریت تمام منابع سیستم را برعهده میگیرد و زمینه و واسطی را فراهم میسازد که برنامههای کاربردی بتوانند به راحتی بر روی آن نوشته شوند. به عبارت دیگر، از دو دیدگاه مختلف، سیستمهای عامل دو نقش اساسی مجزّا و مستقل را ایفا میکنند:
۱. مدیر منابع (Resource Manager)
۲. ماشین توسعهیافته (Extended Machine) یا ماشین مجازی (Virtual Machine)
از دیدگاه مدیر منابع، وظیفهی سیستمعامل مدیریت کارآمد بخشهای مختلف سیستم است. از دید ماشین توسعهیافته، وظیفهی سیستمعامل، تهیهی یک ماشین مجازی برای کاربر است که استفاده از آن خیلی راحتتر از ماشین واقعی است.
خلاصه:
سیستمعامل رابطیه که باعث میشه ما بتونیم راحتتر و امنتر با رایانه کار کنیم، علاوهبر این که منابع رو هم مدیریت میکنه.
تعریف سیستمعامل شبهیونیکس:
یک سیستمعامل شبه یونیکس، مجموعهای از نرمافزارهای کاربردی، کتابخانهها و ابزارهای توسعه است به انضمام برنامهای برای مدیریت منابع و ارتباط با سختافزار که با نام هسته شناخته میشود.
-
سیستمعامل آن بخش از نرمافزار است که در مد هسته اجرا میشود. که این بخش از طریق سختافزار در مقابل مداخله کاربران محافظت میشود. همانطور که در پست بالا هم گفته شد سیستمعامل وظیفه حساس مدیریت منابع رو بر عهده داره. منابع هم شامل دو دسته منابع سختافزاری و نرمافزاری هستند. منابع سختافزاری مثل حافظه، دیسکها، چاپگرها و ... هستند. مثلا اگر قرار باشد چند کاربر به صورت همزمان از یک چاپگر استفاده کنند، سیستمعامل درخواست این کاربران رو در یک صف قرار میده تا به نوبت چاپ بشن. و به طور کلی سعی میکنه منابع سختافزاری رو در اختیار برنامهها قرار بده. بدیهی است که برنامه باید جواز استفاده از سختافزار رو داشته باشه. منابع نرمافزاری هم مانند مدیریت کاربران، پروسههای در حال اجرا، اتصالات شبکه، تعیین و بررسی سطوح دسترسی و ... . اما سیستمعامل یک ماشین مجازی هم در اختیار کاربر قرار میده. بدون سیستمعامل، کاربر برنامهنویس باید تمام پیچیدگیهای سطح پایین رو به تنهایی مدیریت کنه. مثلا برای نوشتن اطلاعات بر روی دیسک مجبوره جزئیات بسیار سطح پایین مثل حرکت هدها و ... رو در نظر بگیره. سیستمعامل با مخفی کردن این جزئیات از دید برنامهنویس به اون کمک میکنه تا کار اون راحتتر انجام بشه. این کار با ارائه کردن کتابخانهها، فراخوانهای سیستمی و ... به برنامه نویس انجام میشه. فرض کنید شما توی یک برنامه واژه پرداز متنی رو نوشتید و میخواید اون رو توی دیسک ذخیره کنید. شما کاری به این ندارید که این برنامه چطور توی دیسک ذخیره میشه و مثلا اون فایل از چه رکوردهایی تشکیل شده و ساختارش چه شکلی هست. چون مشخص کردن این موارد بر عهده برنامهنویس هست. برنامه نویس هم در حالت کلی برای ذخیره کردن فایلها احتیاج نداره ساختار سیستمفایل و دیگر جزئیات رو بدونه. در عوض با استفاده از ()open فایل رو باز میکنه و با استفاده از ()read و ()write اطلاعات رو میخونه و مینویسه و بعدش با ()close فایل رو میبنده. باز هم تمام این جزئیات رو سیستمفایل مدیریت میکنه که یکی از اجزای اصلی سیستمعامل هست معمولا یا در خود هسته قرار داره یا به صورت ماژول به اون متصل میشه. کلا مدیریت پیچیدگیها با یک ساختار لایهای انجام میشه که هر لایه جزئیات سطح پایینتر رو از لایه بالاتر مخفی میکنه.
در مقابل برنامههای دیگر مانند کامپایلرها و ویرایشگرهای متن در مد کاربر اجرا میشوند. هر چند که این برنامهها از نظر تکنیکی جزء سیستمعامل محسوب نمیشن اما معمولا به همراه سیستمعامل ارائه میشن. اما کاربر میتونه از هر کامپایلر دلخواهی مثل llvm یا gcc یا borlandc یا هر چیز دیگه ای استفاده کنه. اما نمیتونه مثلا زمانسنج سیستم رو که یکی از قسمتهای اصلی سیستمعامل هست رو تغییر بده و انجام این کار نیازمند برنامهنویسی و کامپایل مجدد اون قسمت از سیستمعامل هست.
نمیدونم دقیقا چرا این سوال پرسیده شده اما اگر بحث بر سر نامگذاری لینوکس یا گنو/لینوکس هست نظر شخصی من اینه که سیستمعامل لینوکس از نظر تکنیکی درست هست. چون این هسته است که پروسهها رو مدیریت میکنه، درایورها در هسته قرار دارند، با ارائه مجوزها و سطوح دسترسی مختلف امنیت رو برقرار میکنه، سیستم فایل جزئی از هسته محسوب میشه، اتصالات شبکه و سوکتها رو هسته مدیریت میکنه و پشته پروتکل tcp/ip توی هسته پیاده سازی شده، دسترسی به سختافزار از طریق هسته ممکن هست و ... . اما من نمیدونم که آیا این موارد توسط پروژه گنو توی لینوکس پیادهسازی شده یا نه. من شخصا همیشه در موقعیتهای رسمی عبارت سیستمعامل لینوکس/گنو رو به کار میبرم. چون از نظر تکنیکی هسته قسمت اصلی سیستمعامل هست و برای اینکه از زحمات و دستاوردهای پروژه گنو و فلسفه اون هم قدردانی کنم و این رو یادآوری کنم همیشه واژه گنو رو بعد از لینوکس مییارم. این نظر من شخصی من بود و از دوستان خواهش میکنم اشکالات من و متن بالا رو اصلاح کنند.
ویرایش:
این نکته رو اضافه کنم که این ایده من نیست و اولین بار اون رو توی کتا Linux command line نوشته William Shotts دیدم.
-
اگه سوال برای بحث نامگذاریه باید اضافه کنم که از نظر تکنیکی هسته (لینوکس) بخش ارتباط با سختافزار رو برعهده داره و قسمت ماشین توسعهیافته شامل کتابخانهها و ابزارهای توسعه و همچنین بخشی از برنامههای کاربردی (که بنا به تعریف سیستمعامل شبهیونیکس ،جزو سیستمعامل محسوب میشن) رو گنو برعهده داره.
برای همین به نظر من عبارت «سیستمعامل گنو/لینوکس» از نظر تکنیکی عبارت صحیحیه و ربطی هم به قدردانی و اینها نداره، گرچه که عبارت «سیستمعامل گنو» هم با توجّه به مجوّز GPL لینوکس و این که خب از ابتدا سیستمعامل گنو بوده، بعد یه نفر هم اومده یه هستهی دیگهای برای سیستمعامل گنو نوشته، میتونه واژهی صحیحی باشه
-
دوستان فقط به لایه های این سیستم عامل توجه کنید واقعا حیف نگیم گنو/لینوکس بعد کرنل دیگه همه چی رو گنو هدایت میکنه
(http://upload.tehran98.com/img1/sh94xp960fpz3n2nk27k.jpg)
البته در مصاحبه لینوس توروالدز که انجام داده بودن در فیلم Revolution OS گفتن هر کسی هم میتونه یه توزیع بده بیرون و با اون نام صداش کنن برای مثال:لینوکس دبیان,لینوکس مینت...
ولی من در اینجا این عکس رو قرار دادم تا به اهمیت گنو بیشتر پی ببرید و اون رو صدا کنیم گنو/لینوکس به خاطر زحمت هایی که گنو برای این سیستم عامل کشیده.
-
با وجود اینکه با عبارت «سیستم عامل گنو» مخالفم اما بار ها اظهار کردم که لینوکس بدون حمایت گنو ، هیچ وقت و هیچ وقت به جایگاه فعلی نمی رسید.
امروزه لینوکس بدون نرم افزار های مهم و حیاتی که بنیاد نرم افزار های آزاد تولید کرده ، جدا قابل استفاده نیست.