سیستم عامل چیست؟
به طور کلی نرم افزارهای کامپیوتر به دو گروه تقسیم می شوند: یکی برنامه های سیستمی که عملیات کامپیوتر را مدیریت می کنند و دیگری برنامه های کاربردی. سیستم عامل (OS=Operating System) اصلی ترین برنامه سیتمی است که به عنوان رابط بین کاربر و سخت افزار کامپیوتر عمل می کند.
سیستم عامل دو وظیفه (یا هدف) اصلی دارد:
الف) سیستم عامل استفاده از کامپیوتر را ساده می سازد. این بدان معناست که مثلا کاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسک ها به راحتی فایل را بر روی دیسک ذخیره و حذف می کند. این کار در واقع با به کار بردن دستورات ساده ای که فراخوان های سیستمی (System Call) را صدا می زنند انجام می پذیرد. در صورت عدم وجود سیستم عامل کاربر و یا برنامه نویس می بایست آشنایی کاملی با سخت افزارهای مختلف کامپیوتر (مثل Monitor, Disk Drive Mouse, Keyboard, و...) داشته باشد و ابزارهاییی برای خواندن و یا نوشتن آن ها به زبان های سطح پایین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته (Extended Machine) یا ماشین مجازی (Virtual Machine) یاد می شود که واقعیت سخت افزار را از دید برنامه نویسان مخفی می سازد.
ب) وظیفه دوم سیستم عامل مدیریت منابع (Resource Management) می باشد، یعنی سیستم عامل باعث استفاده بهینه و سودمند (اقتصادی) از منابع فیزیکی و منطقی سیستم می گردد. منظور از منابع فیزیکی پردازنده ها، حافظه ها، دیسک ها، ماوس ها، چابگرها، پورت ها و ... و منظور از منابع منطقی اطلاعات، فایل ها و ... هستند. یک سیستم کامپیوتری منابع نرم افزاری و سخت افزاری بسیاری دارد که ممکن است در حین اجرا برنامه لازم باشند، سیستم عامل همانند مدیر منابع عمل کرده و آن ها را بر حسب نیاز به برنامه های مشخصی تخصیص می دهد. مثلا اگر دو برنامه همزمان بخواهند از چابگر استفاده کنند، سیستم عامل اطلاعات خروجی آن ها را در بافری ریخته و سپس به ترتیب و بر اساس اولویتی از پیش تعیین شده اطلاعات را به چابگرها می فرستد. بنابراین کار سیستم عامل این است که بداند چه کسانی از کدام منابع استفاده می کنند، به درخواست هایی جهت دریافت منابع رسیدگی کند و در برابر تداخل درخواست های مختلف میانجی گری کند. پس با نگرش از بالا به پایین سیستم عامل فراهم کننده واسطه ای راحت برای کاربران است و با نگرش از پایین به بالا سیستم عامل مدیر کلیه اجزا و منابع سیستم می باشد.
به بیانی می توان گفت هدف سیستم عامل استفاده بهینه و حداکثر از ماشین و وظیفه سیستم عامل کنترل تمامی منابع و به تعادل رساندن درخواست ها و منابع موجود است.
با توجه به توضیحات فوق می توان گفت سیستم عامل مشابه دولت است بعنی مانند دولت محیطی را که درون آن سایر برنامه بتوانند کار مفید انجام دهند، ایجاد می کند و هسته سیستم عامل به خودی خود کاری مفید و نهایی را برای کاربر انجام نمی دهد. به عبارتی دیگر سیستم عامل برنامه کنترلی است که اجرای برنامه های کاربر و استفاده از سخت افزار را کنترل می کند.
سیستم عامل معمولا اولین برنامه ای است که پس از بوت شدن در حافظه بار می شود. پس از بار شدن، قسمتی از سیستم عامل به طور دائم در حافظه باقی (Resident) می ماند. قسمت های دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده می شود.
به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام می دهد هسته یا Kernel گفته می شود. هسته سیستم عامل برنامه ای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست. سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر دهشته اند. یعنی جهت سهولت کار با سخت افزارهای جدید، سیستم عامل ها توسعه یافتند و همچنین در اثنای طراحی سیستم عامل ها، مشخص شد که تغییراتی در طراحی سخت افزاری می تواند سیستم عامل ها را ساده تر و کارآمدتر سازد. هر چند که تطبیق نسل های کامپیوتر با نسل های سیستم عامل کار درستی نیست ولی این تطبیق که علت ایجاد سیستم عامل های جدید را مشخص می سازد. در نسل اول کامپیوترها (1955-1945) که از کامپ خلا برای ساخت آن ها استفاده می شد، زبان های برنامه نویسی (حتی اسبلی) ابداع نشده بودند و سیستم عامل نیز اصلا وجود نداشت. روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند. آن ها برنامه های خود را توسط تخته مدار سوراخدار (و بعدها توسط کارت های پانچ) و به زبان ماشین به کامپیوتر می دادند. اکثر برنامه های محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود.
در نسل دوم، کامپیوتر ها (1965-1955) از ترانزیستور ساخته شدند.
طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار می کرد و کاربران به طور مستقیم با این کامپیوترها محاوره (Interaction) نداشتند. کاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی کاغذ می نوشت سپس توسط دستگاه Caard Punch، برنامه را روی کارت های سوراخ دار منتقل می ساخت. بعد این دسته کارت تهیه شده که شامل برنامه، داده ها و کارت های کنترل بود به صورت یک کار (Job) تحویل اپراتور داده می شد. اپراتور بعد از اتمام کار قبلی، دسته کارت جدید را به کامپیوتر می داد تا برنامه را اجرا کند در انتها خروجی برنامه (که غالبا چاپی بود) را به کاربر تحویل می داد. سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال کنترل اتوماتیک از یک کار به کار دیگری بود. سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یک برنامه اجرا می شد. هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این این کامپیوتر های گران قیمت به هدر می رفت.
برای رفع مشکل فوق سیستم های دسته ای (Batch System) ابداع شد. یعنی ابتدا یک سبد پر از دسته کارت ها در اتاق ورودی جمع آوری می شد، سپس کلیه آن ها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و نسبتا ارزان (مثل IBM 1401) خوانده شده و بر روی یک نوار ذخیره می گردید. سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام می داد (مثل IBM 7094) نصب می کرد. بعد از آن برنامه ای را اجرا می کرد (یعنی سیستم عامل) تا اولین کار را از روی نووار برداشته و اجرا کند، خروجی بر روی نوار دیگر نوشته می شد. پس از تمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار می خواند. پس از اجزا همه برنامه ها، اپراتور و نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل می ساخت تا عملیات چاپ خروجی ها به صورت Off Line انجام شود. به این روش کار Offline Spooling نیز گفته می شود. بیشتر برنامه های نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و عملی مثل مشتقات جزئی به کار می رفت.
یکی از معایب روش زیاد بودن زمان برگشت (گردش) (Turnaround Time) است، یعنی تاخیر زمانی مابین تحویل کار و تکمیل کار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد. تنها روش به دست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در مماشین اصلی قرار دهند. حتی در این صورت هم باید چندین ساعت صبر می کردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزارها اضافی (مثل کامپیوترهای 1401) از دیگر معایب این روش بود.
پس معایب این روش عبارتست از:
1- گردش طولانی تر کار
2- عدم وجود اولویت
3- نیاز به سخت افزار اضافی
از مزایای سیستم offline spooling نسبت به سیستم های قبل از آن می تواند موارد زیر را ذکر کرد:
1- راندمان بهتر
2- عملیات ساده تر
3- سهولت برای استفاده از راه دور
تذکر: در سیستم اولیه CPU گرانترین جزء کامپیوتر بود و بدین جهت نیاز به بالا بردن درصد استفاده از CPU فاکتور اصلی در طراحی سیستم عامل ها بود.
در نسل سوم کامپیوتر ها (1980-1965) از مدارات مجتمع (IC = Integrated Circuit) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه ها را می توان به دو دسته تقسیم کرد: یکی از برنامه ها با تنگنای محاسباتی CPU (bound یا CPU Limited) مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات CPU می شود و دیگر برنامه ها با تنگنای I/O (I/O Limited) مانند برنامه های تجاری که بیشتر زمان کامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.
یک اشکال مهم سیستم های دسته ای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلا بر روی نوار گردان منتظر می شود، در این حال CPU بیکار می ماند و مجبور است صبر کند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی د برنامه های I/O Limited ممکن است حدود 80 تا 90 درصد وقت CPU به هدر برود.
برای رفع این مشکل از تکنیک MultiProgramming استفاده میشود. بدین ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می ماند، چردازنده به کار دیگری داده می شود. اگر تعداد کارهای موجود در حافظه کافی باشد می توان CPU را تقریبا صد درصد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عامل می باشد.
پس سیستم های چند برنامگی فقط یک پردازنده دارند و به کمک مکانیزم وقفه بین کارهای CPU Limited و I/O Limited سوئیچ می شود و به ظاهر اجرای این برنامه ها به صورت موازی و همزمان صورت می گیرد . بدین ترتیب بهره وری از سیستم افزایش می یابد.
یک شیوه برای بالابردن راندمان CPU آن است که تعدادی کار CPU Limited را با I/O Limited مخلوط کنیم. ولی در عمل امکان تقسیم بندی کارها قبل از اجرا شدنشان وجود ندارد. از طرف دیگر برنامه ای ممکن است در ابتدا CPU Limited باشد ولی در حین اجرا تبدیل به I/O Limited گردد.
گردآوری و ویرایش اطلاعات: بهزاد بهزادیان