سیسم های عامل در ابتدا می بایست محدوده های حافظه مورد نیاز هر نوع نرم افزار و برنامه های خاص را فراهم نمایند. مثلا" فرض کنید سیستمی دارای یک مگابایت حافظه اصلی باشد . سیستم عامل کامپیوتر فرضی ، نیازمند 300 کیلو بایت حافظه است . سیستم عامل در بخش انتهائی حافظه مستقر و بهمراه خود درایورهای مورد نیاز یه منظور کنترل سخت افزار را نیز مستقر خواهد کرد. درایورهای مورد نظر به 200 کیلو بایت حافظه نیاز خواهند داشت . بنابراین پس از استقرار سیستم عامل بطور کامل در حافظه ، 500 کیلو بایت حافظه باقیمانده و از آن برای پردازش برنامه های کاربردی استفاده خواهد شد. زمانیکه برنامه های کاربردی در حافظه مستقر می گردند ، سازماندهی آنها در حافظ بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سیستم عامل مشخص خواهد شد. در صورتی که اندازه هر بلاک 2 کیلوبایت باشد ، هر یک از برنامه های کاربردی که در حافظه مستقر می گردنند ، تعداد زیادی از بلاک های فوق را (مضربی از دو خواهد بود) ، بخود اختصاص خواهند داد. برنامه ها در بلاک هائی با طول ثابت مستقر می گردند. هر بلاک دارای محدوده های خاص خود بوده که توسط کلمات چهار و یا هشت بایت ایجاد خواهند شد. بلاک ها و محدو ده های فوق این اطمینان را بوجود خواهند آورد که برنامه ها در محدوده های متداخل مستقر نخواهند شد. پس از پر شدن فضای 500 کیلوبایت اختصاصی برای برنامه های کاربردی ، وضعیت سیستم به چه صورت تبدیل خواهد گردید؟
در اغلب کامپیوترها ، می توان ظرفیت حافظه را ارتقاء و افزایش داد. مثلا" می توان میزان حافظه RAM موجود را از یک مگابایت به دو مگابایت ارتقاء داد. روش فوق یک راهکار فیزیکی برای افزایش حافظه بوده که در برخی موارد دارای چالش های خاص خود می باشد. در این زمینه می بایست راهکارهای دیگر نیز مورد بررسی قرار گیرند. اغلب اطلاعات ذخیره شده توسط برنامه ها در حافظه ، در تمام لحظات مورد نیاز نخواهد نبود. پردازنده در هر لحظه قادر به دستیابی به یک محل خاص از حافظه است . بنابراین اکثر حجم حافظه در اغلب اوقات غیر فابل استفاده است . از طرف دیگر با توجه به اینکه فضای ذخیره سازی حافظه ها ی جانبی نظیر دیسک ها بمراتب ارزانتر نسبت به حافظه اصلی است ، می توان با استفاده از مکانیزمهائی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتا" بر روی هارد دیسک ذخیره نمود. بدین ترتیب فضای حافظه اصلی آزاد و در زمانیکه به اطلاعات ذخیره شده بر روی هارد دیسک نیاز باشد ، مجددا" آنها را در حافظه مستقر کرد. روش فوق " مدیریتحافظه مجازی " نامیده می شود.
حافطه های ذخیره سازی دیسکی ، یکی از انواع متفاوت حافظه موجود بوده که می بایست توسط سیستم عامل مدیریت گردد. حافطه های با سرعت بالای Cache ، حافظه اصلی و حافظه های جانبی نمونه های دیگر از حافظه بوده که توسط سیستم عامل مدیریت گردند.
مدیریت دستگاهها
دستیابی سیستم عامل به سخت افزارهای موجود از طریقه برنامه های خاصی با نام "درایور" انجام می گیرد. درایور مسئولیت ترجمه بین سیگنال های الکترونیکی زیر سیستم های سخت افزاری و زبانهای برنامه نویسی سطح بالا و سیستم عامل و برنامه های کاربردی را برعهده خواهد داشت . مثلا" درایورها اطلاعاتی را که سیستم عامل بصورت یک فایل تعریف و در نظر می گیرد را اخذ و آنها را به مجموعه ای از بیت ها برای ذخیره سازی بر روی حافظه های حانبی و یا مجموعه ای از پالس ها برای ارسال بر روی چاپگر ، ترجمه خواهد کرد.
با توجه به ماهیت عملکرد عناصر سخت افزاری و وجود تنوع در این زمینه ، درایورهای مربوطه نیز دارای روش های متعدد یه منظور انجام وظایف خود می باشند. اکثر درایورها در زمانیکه به خدمات دستگاه مورد نظر نیاز باشد ، استفاده شده و دارای پردازش های یکسانی در زمینه سرویس دهی خواهند بود. سیستم عامل بلاک های با اولویت بالا را به درایورها اختصاص داده تا از این طریق منابع سخت افزاری قادر به آزادسازی سریع یه منظور استفاده در آینده باشند.
یکی از دلایلی که درایورها از سیستم عامل تفکیک شده اند ، ضرورت افزودن عملیات و خواسته ای حدید برای درایورها است . در چنین حالتی ضرورتی بر اصلاح و یا تغییر سیستم عامل نبوده و با اعمال تغییرات لازم در درایورها می توان همچنان از قابلیت های آنها در کنار سیستم عامل موجود استفاده کرد.
مدیریت عملیات ورودی و خروجی در کامپیوتر مستلزم استفاده و مدیریت " صف ها " و " بافرها " است . بافر ، مکان های خاصی برای ذخیره سازی اطلاعات بصورت مجموعه ای از بیت ها ی ارسالی توسط دستگاهها ( نظیر صفحه کلید و یا یک پورت سریال ) و نگهداری اطلاعات فوق و ارسال آنها برای پردازنده در زمان مورد نظر و خواسته شده است . عملیات فوق در مواردیکه چندین پردازنده در وضعیت اجراء بوده و زمان پردازنده را بخود اختصاص داده اند ، بسیار حائز اهمیت است . سیستم عامل با استفاده از یک بافر قادر به دریافت اطلاعات ارسالی توسط دستگاه مورد نظر است . ارسال اطلاعات ذخیره شده برای پردازنده پس از غیر فعال شدن پردازه مربوطه ، متوقف خواهد شد. در صورتی که مجددا" پردازه به اطلاعات ورودی نیاز داشته باشد ، دستگاه فعال و سیستم عامل دستوراتی را صادر تا بافر اطلاعات مربوطه را ارسال دارد. فرآیند فوق این امکان را به صفحه کلید یا مودم خواهد داد تا با سرعت مناسب خدمات خود را همچنان ادامه دهند ( ولواینکه پردازنده در آن زمان خاص مشغول باشد).
مدیریت تمام منابع موجود در یک سیستم کامپیوتری ، یکی از مهمترین و گسترده ترین وظایف یک سیستم عامل است .
ارتباط سیستم با دنیای خارج
اینترفیس برنامه ها
سیستم عامل در رابطه با اجرای برنامه های کامپیوتری خدمات فراوانی را ارائه می نماید. برنامه نویسان و پیاده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سیستم های عامل استفاده و بدون اینکه نگران و یا درگیر جزئیات عملیات در سیستم باشند ، از خدمات مربوطه استفاده نمایند. برنامه نویسان با استفاده از API)Application program interface) ، قادر به استفاده از خدمات ارائه شده توسط سیستم های عامل در رابطه با طراحی و پیاده سازی نرم افزار می باشند. در ادامه یه منظور بررسی جایگاه API به بررسی مثالی پرداخته خواهد شد که هدف ایجاد یک فایل بر روی هارد دیسک برای ذخیره سازی اطلاعات است .
برنامه نویسی ، برنامه ای را نوشته که بکمک آن قادر به ذخیره سازی داده های ارسالی توسط یک دستگاه کنترل علمی است . سیستم عامل یک تابع API با نام MakeFile را یه منظور ایجاد فایل در اختیار برنامه نویس قرار می دهد. برنامه نویس در زمان نوشتن برنامه از دستوری مشابه زیر استفاده می نماید :
MakeFile [1,%Name,2]
دستورالعمل فوق به سیستم عامل خواهد گفت که فایلی را ایجاد که شیوه دستیابی به داده های آن بصورت تصادفی ( عدد یک بعنوان اولین پارامتر ) ، دارای نام مشخص شده توسط کاربر (Name%) و دارای طولی متغیر است . ( عدد 2 ، بعنوان سومین پارامتر) سیستم عامل دستور فوق را بصورت زیر انجام خواهد داد :
سیستم عامل درخواستی برای هارد ارسال تا اولین مکان آزاد قابل استفاده مشخص گردد.با توجه به اطلاعات ارسالی ، سیستم عامل یکentry در سیستم فایل مربوطه ایجاد و ابتدا و انتهای فایل ، نام فایل ، نوع فایل ، تاریخ و زمان ایجاد فایل و سایر اطلاعات ضروری را ذخیره خواهد کرد.سیستم عامل اطلاعاتی را در ابتدای فایل یه منظور مشخص کردن فایل ، تنظیمات مربوط به شیوه دستیابی به فایل و سایر اطلاعات مورد نیاز را خواهد نوشت .در چنین حالتی برنامه نویس از تابع فوق برای ایجاد و ذخیره سازی فایل استفاده نموده و ضرورتی بر نوشتن کدها ، نوع داده ها و کدهای پاسخ برای هر نوع هارد دیسک نخواهد بود. سیستم عامل از امکانات درایورها استفاده و درایورها مسئول برقراری ارتباط با منابع سخت افزاری خواهند بود. در چنین حالتی برنامه نویس بسادگی از تابع مورد نظر استفاده و ادامه عملیات توسط سیستم عامل انجام خواهد شد. امکانات ارائه شده توسط سیستم های عامل در قالب مجموعه ای از توابع و امکانات API یکی از موارد بسیار مهم استفاده از سیستم عامل از دیدگاه طراحان و پیاده کنندگان نرم افزار است .
اینترفیس کاربر
API یک روش یکسان برای برنامه های کامپیوتری یه منظور استفاده از منابع موجود در یک سیستم کامپیوتری را فراهم می نماید. بخش رابط کاربر (UI) ، یک ساختار مناسب ارتباطی بین کاربر و کامپیوتر را فراهم می آورد. اکثر سیستم های عامل از رابط های گرافیکی در این زمینه استفاده می نمایند. بخش رابط کاربر هر سیستم عامل شامل یک و یا مجموعه ای از برنامه های کامپیوتری است که بصورت یک لایه در بالاترین سطح یک سیستم عامل و در ارتباط با کاربر مستقر می گردند. برخی از سیستم های عامل از رابط های گرافیکی ( نظیر ویندوز ) و برخی دیگر از رابط های مبتنی بر متن ( نظیر سیستم عامل DOS ) استفاده می نمایند.
سیستم عامل چیست ؟
در فرهنگ رایانه سیستم عامل (به انگلیسی: Operating System) اساسیترین برنامه سیستمی است که مدیریت کلیه منابع سیستم را به عهده گرفته و بستری را فراهم می سازد که برنامههای کاربردی میتوانند بر روی آن اجرا شوند.
دلایل ایجاد سیستم عامل:
یک سیستم کامپیوتری پیشرفته از یک یا چند پردازنده ، مقداری حافظه اصلی ، دیسک ها ، چاپگر ها ، صفحه کلید ، صفحه نمایش ، واسط های شبکه ای و دیگر دستگاه های ورودی و خروجی تشکیل شده است . این اجزا در کنار یکدیگر یک سیستم پیچیده را به وجود آورده اند . نوشتن برنامه هایی که تمامی این عناصر را مدیریت کرده و از آنها به طور صحیح ، بهینه و کارآمد استفاده نماید ، کار بسیار مشکلی است . اگر هر برنامه نویس مجبور باشد با مفاهیمی نظیر نحوه کار دستگاه های ورودی خروجی گوناگون آشنا باشد ، بسیاری از برنامه ها هرگز نوشته نخواهد شد . به همین دلیل ، از سالها قبل به وضوح مشخص بود که باید روش هایی یافت که برنامه نویسان را از پیچیدگی های سخت افزار دور نگه دارد . تلاش های گسترده ، منجر به ایجاد یک لایه نرم افزاری روی سخت افزار شد که همه اجزای سیستم را کنترل نموده و کار برنامه نویسان را راحت تر کند . به این لایه نرم افزاری سیستم عامل می گویند.
وظایف سیستم عامل:
سیستم عامل دو کار عمده انجام میدهد :
در نگرش پایین به بالا ، منابع منطقی ( مانند فایل ها ) و منابع فیزیکی ( مانند دستگاه های سخت افزاری ) رایانه را مدیریت و کنترل میکند .
در نگرش بالا به پایین ، وظیفه سیستم عامل این است که یک ماشین توسعه یافته ( Extended Machine ) یا ماشین مجازی ( Virtual Machine ) را به کاربران ارائه کند تا آنها بتوانند آسان تر برنامه نویسی نمایند و درگیر پیچیدگی های سخت افزاری رایانه نشوند .
به طور کلی ، وظایف سیستم عامل شامل موارد زیر است :
* استفاده بهینه از منابع و جلوگیری از به هدر رفتن آنها
* تخصیص و آزاد سازی منابع
* اداره صف ها و زمان بندی استفاده از منابع
* حساب داری ( Accounting ) میزان استفاده از منابع
* ایجاد امنیت ( security )
* ایجاد ، حذف و اداره فرایند ها
* ایجاد مکانیسم های ارتباط بین فرایند ها و همگام سازی آنها
* مدیریت فایل ها و پوشه ها
* مدیریت حافظه های اصلی و جانبی
* برقراری امکان دسترسی چندتایی ( Multiaccess ) و اجرای هم روند ( Concurrent ) فرایند ها
* به اشتراک گذاری منابع ( Resource Sharing )
* تعیین راهکار هایی برای اداره بن بست ( deadlock ) ها
* جلوگیری از شرایط رقابتی ( Race Condition ) و تداخل یا در هم قفل شدن ( Interlock ) فرایند ها
* جلوگیری از گرسنگی ( Starvation )
سیستم عامل های فعلی:
امروزه پرمصرف ترین سیستم عامل جهان ، ویندوز است که بر روی بیشتر رایانههای شخصی نصب شده است.
نام چند سیستم عامل معروف جهان در زیر آمده است :
* یونیکس
* لینوکس
* سولاریس (سیستم عامل)
* بی اس دی
* مک او اس
* ام وی اس.
* ویلز (سیستم عامل)
* ویندوز اکسپی
* ویندوز 7
* ویندوز انتی
* ویندوز سیئی
* پالم (سیستم عامل)
* سیمبیان (سیستم عامل)
انواع سیستم عامل:
سیستم عامل تک پردازنده:
این نوع سیستم عامل ها ، سیستم عامل های نسل چهارم ( نسل فعلی ) هستند که بر روی یک پردازنده اجرا می شوند .
سیستم عامل شبکه ای:
این نوع سیستم عامل ها ، از کنترل کننده های واسط شبکه و نرم افزار های سطح پایین به عنوان گرداننده استفاده می کنند و برنامه هایی برای ورود به سیستم های راه دور و دسترسی به فایل از راه دور در آنها به کار گرفته می شود .
سیستم عامل توزیع شده:
این سیستم عامل ها خود را مانند سیستم عامل های تک پردازنده به کاربر معرفی می کنند ، اما در عمل از چندین پردازنده اجرا می شوند. این نوع سیستم عامل در یک محیط شبکه ای اجرا می شود در این نوع سیستم یک برنامه پس از اجرا در کامپوترهای مختلف جواب نهایی به سیستم اصلی کاربر بر می گردد سرعت پردازش در این نوع سیستم بسیار بالاست.
سیستم عامل بی درنگ:
از این نوع سیستمهای عامل برای کنترل ماشین آلات صنعتی، تجهیزات علمی و سیستمهای صنعتی استفاده میگردد. یک سیستم عامل بلادرنگ دارای امکانات محدود در رابطه با بخش رابط کاربر و برنامههای کاربردی مختص کاربران هستند. یکی از بخشهای مهم این نوع سیستمهای عامل، مدیریت منابع موجود کامپیوتری بگونهای است که یک عملیات خاص در زمانی که میبایست، اجراء خواهند شد , مهمتر اینکه مدیریت منابع بگونه ایست که این عمل در هر بار وقوع, مقدار زمان یکسانی بگیرد.
سیستم عامل چیست ؟
سیستم عامل بدون شک مهمترین نرم افزار در کامپیوتر است . پس از روشن کردن کامپیوتر اولین نرم افزاری که مشاهده می گردد سیستم عامل بوده و آخرین نرم افزاری که قبل از خاموش کردن کامپیوتر مشاهده خواهد شد، نیز سیستم عامل است . سیستم عامل نرم افزاری است که امکان اجرای تمامی برنامه های کامپیوتری را فراهم می آورد. سیستم عامل با سازماندهی ، مدیریت و کنترل منابع سخت افزاری امکان استفاده بهینه و هدفمند آنها را فراهم می آورد. سیتم عامل فلسفه بودن سخت افزار را بدرستی تفسیر و در این راستا امکانات متعدد و ضروری جهت حیات سایر برنامه های کامپیوتری را فراهم می آورد.
تمام کامپیوترها از سیستم عامل استفاده نمی کنند. مثلا" اجاق های مایکرویو که در آشپزخانه استفاده شده دارای نوع خاصی از کامپیوتر بوده که از سیستم عامل استفاده نمیکنند. در این نوع سیستم ها بدلیل انجام عملیات محدود و ساده، نیازی به وجود سیستم عامل نخواهد بود. اطلاعات ورودی و خروجی با استفاده از دستگاههائی نظیر صفحه کلید و نمایشگرهایLCD ، در اختیار سیستم گذاشته می گردند. ماهیت عملیات انجام شده در یک اجاق گاز مایکروویو بسیار محدود و مختصر است، بنابراین همواره یک برنامه در تمام حالات و اوقات اجراء خواهد شد.
برای سیستم های کامپیوتری که دارای عملکردی بمراتب پیچیده تر از اجاق گاز مایکروویو می باشند، بهخدمت گرفتن یک سیستم عامل باعث افزایش کارآئی سیستم و تسهیل در امر پیاده سازی برنامه های کامپیوتری می گردد. تمام کامپیوترهای شخصی دارای سیستم عامل می باشند.
یکی از متداولترین سیستم های عامل ویندوز است . یونیکس یکی دیگر از سیستم های عامل مهم در این زمینه است . صدها نوع سیستم عامل تاکنون با توجه به اهداف متفاوت طراحی و عرضه شده است. سیستم های عامل مختص کامپیوترهای بزرگ، سیستم های روبوتیک، سیستم های کنترلی بلادرنگ ، نمونه هائی در این زمینه می باشند.
سیستم عامل با ساده ترین تحلیل و بررسی دو عملیات اساسی را در کامپیوتر انجام می دهد :
- مدیریت منابع نرم افزاری و سخت افزاری یک سِستم کامپیوتری را برعهده دارد. پردازنده ، حافظه، فضای ذخیره سازی نمونه هائی از منابع اشاره شده می باشند .
- روشی پایدار و یکسان برای دستیابی و استفاده از سخت افزار را بدو ن نیاز از جزئیات عملکرد هر یک از سخت افزارهای موجود را برای برنامه های کامپیوتری فراهم می نماید
اولین وظیفه یک سیستم عامل، مدیریت منابع سخت افزاری و نرم افزاری است . برنامه های متفاوت برای دستیابی به منابع سخت افزاری نظیر: پردازنده ، حافظه، دستگاههای ورودی و خروجی، حافطه های جانبی، در رقابتی سخت شرکت خواهند کرد. سیستم های عامل بعنوان یک مدیر عادل و مطمئن زمینه استفاده بهینه از منابع موجود را برای هر یک از برنامه های کامپیوتری فراهم می نمایند.
وظیفه دوم یک سیستم عامل ارائه یک رابط ( اینترفیس ) یکسان برای سایر برنامه های کامپیوتری است . در این حالت زمینه استفاده بیش از یک نوع کامپیوتر از سیستم عامل فراهم شده و در صورت بروز تغییرات در سخت افزار سیستم های کامپیوتری نگرانی خاصی از جهت اجرای برنامه وجود نخواهد داشت، چراکه سیستم عامل بعنوان میانجی بین برنامه های کامپیوتری و سخت افزار ایفای وظیفه کرده و مسئولیت مدیریت منابع سخت افزاری به وی سپرده شده است .برنامه نویسان کامپیوتر نیز با استفاده از نقش سیستم عامل بهعنوان یک میانجی بهراحتی برنامه های خود را طراحی و پیاده سازی کرده و در رابطه با اجرای برنامه های نوشته شده بر روی سایر کامپیوترهای مشابه نگرانی نخواهند داشت . ( حتی اگر میزان حافظه موجود در دو کامپیوتر مشابه نباشد ) . در صورتیکه سخت افزار یک کامپیوتر بهبود و ارتقاء یابد، سیستم عامل این تضمین را ایجاد خواهد کرد که برنامه ها، در ادامه بدون بروز اشکال قادر به ادامه حیات وسرویس دهی خود باشند. مسئولیت مدیریت منابع سخت افزاری برعهده سیتم عامل خواهد بود نه برنامه های کامپیوتری، بنابراین در زمان ارتقای سخت افزار یک کامپیوتر مسئولیت سیستم عامل در این راستا اولویت خواهد داشت . ویندوز 98یاXP یکی از بهترین نمونه ها در این زمینههستند . سیستم عامل های فوق بر روی سخت افزارهای متعدد تولید شده توسط تولیدکنندگان متفاوت اجراء می گردد. ویندوز 98 قادر به مدیریت و استفاده از هزاران نوع چاپگر دیسک و سایر تجهیزات جانبی است .
سیستم های عامل را از بعد نوع کامپیوترهائی که قادر به کنترل آنها بوده و نوع برنامه های کاربردی که قادر به حمایت از آنها می باشند به چهار گروه عمده تقسیم می نمایند:
- سیستم عامل بلادرنگ (RTOS). از این نوع سیستم های عامل برای کنترل ماشین آلات صنعتی ، تجهیزات علمی و سیستم های صنعتی استفاده می گردد. یک سیستم عامل بلادرنگ دارای امکانات محدود در رابطه با بخش رابط کاربر و برنامه های کاربردی مختص کاربران می باشند. یکی از بخش های مهم این نوع سیستم های عامل ، مدیریت منابع موجود کامپیوتری بگونه ای است که یک عملیات خاص در زمانی که می بایست ، اجراء خواهند شد.
-تک کاربره - تک کاره. همانگونه که از عنوان این نوع سیستم های عامل مشخص است، آنها بگونه ای طراحی شده اند که قادر به مدیریت کامپیوتر بصورتی باشند که یک کاربر در هر لحظه قادر به انجام یک کار باشد. سیستم عاملPalm OS برای کامپیوترهایPDA نمونه ای مناسب از یک سیستم عامل مدرن تک کاربره و تک کاره است .
-تک کاربره - چندکاره. اکثر سیستم های عامل استفاده شده در کامپیوترهای شخصی از این نوع می باشند. ویندوز 98 وMacOS نمونه هائی در این زمینه بوده که امکان اجرای چندین برنامه بطور همزمان را برای یک کاربر فراهم می نمایند. مثلا" یک کاربر ویندوز 98 قادر به تایپ یک نامه با استفاده از یک واژه پرداز بوده و در همان زمان اقدام به دریافت یک فایل از اینترنت نموده و در همان وضعیت محتویات نامه الکترونیکی خود را برای چاپ بر روی چاپگر ارسال کرده باشد.
-