خانه / آموزش / سیستم عامل چیست

سیستم عامل چیست

سیستم عامل چیست

 

یکی از مهمترین بخش‌های یک رایانه، سیستم عامل آن است. سیستم عامل وظیفه کنترل سخت‌ افزار و ایجاد ارتباط بین نرم افزار و سخت افزار را به کمک عوامل متعددی انجام می‌دهد. سیستم عامل بستر اصلی مدیریت نرم افزار، اجرای انواع اپلیکشن‌ها و مدیریت منابع سیستم همچون میزان حافظه اختصاص داده شده به یک نرم‌ افزار، ارسال و دریافت دستورات پردازنده مرکزی و گرافیکی و… است.

در کامپیوتر به هر هر عملی همچون باز کردن یا بستن یک برنامه، تایپ یک حرف، انجام محاسبات ریاضی و مواردی از این دست یک عملیات گفته می‌شود. بعضی از سیستم‌های عامل تنها توان انجام یک عمل در ثانیه را دارند و به فرض در یک زمان واحد نمی‌توانند یک عملیات همچون ضرب دو عدد و باز کردن یک برنامه را انجام دهند. این دسته از سیستم‌های عامل که به تک عملیاتی معروف هستند، عملیات درخواستی کاربر و یا هر عملیات دیگر، باید یکی یکی پردازش شده و به پایان برسد در این حالت سیستم عامل نمی‌تواند در یک زمان بیش از یک دستور را به انجام برساند و ممکن است برای اجرای چند دستور ساده، زمان زیادی را هدر دهد. از سیستم عامل‌های تک عملیاتی می‌توان به DOS اشاره کرد که البته این روزها کاربرد کمتری دارد.

 

سیستم عامل dos

 

امروزه اکثر سیستم عامل‌ها در رده چند عملیاتی قرار می‌گیرند. این دسته می‌توانند به طور همزمان چندین دستور مختلف را انجام دهند و به مدیریت منابع رایانه بپردازند. در سیستم‌های عامل چند عملیاتی، منابع سخت افزاری به چندین قسمت متناسب با برنامه‌های در حال اجرا تقسیم می‌گردد. سیستم عامل فضای بیشتری از حافظه رم و  پردازنده را در اختیار برنامه‌هایی که احتیاج به محاسبات بیشتر و سنگین‌تری دارند قرار داده و به نرم افزارهای سبک‌تر، مقدار محدودتری را اختصاص می‌دهد. به عبارت ساده‌تر سیستم عامل با مدیریت هوشمند، باعث اجرای صحیح و سریع‌تر نرم افزار می‌شود. از سیستم عامل‌های معروف چند عملیاتی می‌توان ویندوز، لینوکس، مکینتاش، اندروید و IOS را نام‌ برد. سالانه با آپدیت‌ها و عرضه نسخه‌های جدیدتر سیستم عامل‌های مذکور، یکی از مهمترین بخش‌هایی که دست‌خوش تغییرات می‌شود، نحوه مدیریت سیستم چند عملیاتی است.

وظایف سیستم عامل

پس از روشن نمودن كامپیوتر، اولین برنامه ای كه اجراء می گردد ، مجموعه دستوراتی می باشند كه در حافظهROM ذخیره و مسئول بررسی صحت عملكرد امكانات سخت افزاری موجود می باشند. برنامه فوق (POST) ، پردازنده ، حافظه و سایر عناصر سخت افزاری را بررسی خواهد كرد . پس از بررسی موفقیت آمیز برنامهPOST ، در ادامه درایوهای ( هارد ، فلاپی ) سیستم فعال خواهند شد. در اكثر كامپیوترها  ، پس از فعال شدن هارد دیسك ، اولین بخش سیستم عامل با نامBootstrap Loader فعال خواهد شد. برنامه فوق صرفا” دارای یك وظیفه اساسی است : انتقال ( استقرار ) سیستم عامل در حافظه اصلی و امكان اجرای آن . برنامه فوق عملیات متفاوتی را بمنظور استفرار سیستم عامل در حافظه انجام خواهد داد.

سیستم عامل دارای وظایف زیر است :

  مدیریت پردازنده

 مدیریت حافظه

مدیریت دستگاهها ( ورودی و خروجی )

مدیریت حافظه جانبی

 اینترفیس برنامه های كاربردی

  رابط كاربر

وظایف شش گانه فوق ، هسته عملیات در اكثر سیستم های عامل است . در ادامه به تشریح  وظایف فوق اشاره می گردد :

مدیریت پردازنده

مدیریت پردازنده دو وظیفه مهم اولیه زیر را دارد :

  ایجاد اطمینان كه هر پردازه  یا برنامه به میزان مورد نیاز پردازنده را برای تحقق عملیات خود ، اختیار خواهد كرد.

  استفاده از بیشترین سیكل های پردازنده برای انجام عملیات

ساده ترین واحد نرم افزاری  كه سیستم عامل بهمنظور زمانبندی پردازنده با آن درگیر خواهد شد ، یك پردازه  یا یكThread خواهد بود. موقتا” می توان یك پردازه را مشابه یك برنامه در نظر گرفت ، در چنین حالتی مفهوم فوق ( پردازه ) ، بیانگر یك تصویر واقعی از نحوه پردازش های مرتبط با سیستم عامل و سخت افزار نخواهد بود. برنامه های كامپیوتری ( نظیر واژه پردازها ، بازیهای كامپیوتری و …) در حقیقت خود یك پردازه می باشند ، ولی برنامه های فوق ممكن است از خدمات چندین پردازه دیگر استفاده نمایند. مثلا” ممكن است یك برنامه از پردازه ای بمنظور برقراری ارتباط با سایر دستگاههای موجود در كامپیوتر استفاده نماید. پردازه های فراوان دیگری نیز وجود دارد كه با توجه به ماهیت عملیات مربوطه ، بدون نیاز به محرك خارجی ( نظیر یك برنامه ) فعالیت های خود را انجام می دهند. یك پردازه ، نرم افزاری است كه عملیات خاص و كنترل شده ای را انجام می دهد. كنترل یك پردازه ممكن است توسط كاربر ، سایر برنامه های كاربردی و یا سیستم عامل صورت پذیرد.

سیستم عامل با كنترل و زمانبندی مناسب پردازه ها زمینه استفاده از پردازنده را برای آنان ، فراهم  می نماید. در سیستم های ” تك – كاره ” ، سیستم زمانبندی بسیار روشن و مشخص است . در چنین مواردی،  سیستم عامل امكان اجرای برنامه را فراهم و صرفا” در زمانیكه كاربر اطلاعاتی را وارد  یا سیستم با وقفه ای برخورد نماید ، روند اجراء متوقف خواهد شد. وقفه ، سیگنال های خاص ارسالی توسط نرم افزار و یا سخت افزار برای  پردازنده می باشند. در چنین مواردی منابع صادر كننده وقفه درخواست برقراری یك ارتباط زنده با پردازنده برای اخذ سرویس  یا سایر مسائل بوجود آمده ، را می نمایند. در برخی حالات سیستم عامل پردازه ها  را با یك اولویت خاص زمانبندی می نماید . در چنین حالتی هر یك از پردازه ها با توجه به اولویت نسبت داده شده به آنان ، قادر به استفاده از زمان پردازنده خواهند بود. در این چنین موارد ، در صورت بروز وقفه ، پردازنده آنها را نادیده گرفته و تا زمان عدم تكمیل عملیات مورد نظر توسط پردازنده ، فرصت پرداختن به وقفه ها وجود نخواهد داشت . بدیهی است با توجه به نحوه برخورد پردازنده ( عدم توجه به وقفه ها ) ، در سریعترین زمان ممكن عملیات و فعالیت جاری پردازنده به اتمام خواهد رسید. برخی از وقفه ها با توجه به اهمیت خود ( نظیر بروز اشكال در حافظه و یا سایر موارد مشابه ) ، قابل اغماص توسط پردازنده نبوده و می بایست صرفنظر از نوع و اهمیت فعالیت جاری ،  سریعا” به وقفه ارسالی پاسخ مناسب را ارائه گردد.

پردازنده ، با توجه به سیاست های اعمال شده سیستم عامل و بر اساس یك الگوریتم خاص ، در اختیار پردازه های متفاوت قرار خواهد گرفت . در چنین مواردی پردازنده مشغول بوده و برای اجراء ، پردازه ای را در اختیار دارد. در زمانیكه پردازنده درگیر یك پردازه است ، ممكن است وقفه هائی از منابع متفاوت نرم افزاری  یا سخت افزاری محقق گردد. در چنین وضعیتی با توجه به اهمیت و جایگاه یك وقفه ، پردازنده برخی از آنها را نادیده گرفته و همچنان به فعالیت جاری خود ادامه داده و در برخی موارد با توجه به اهمیت وقفه ، فعالیت جاری متوقف و سرویس دهی به وقفه آغاز خواهد شد.

در سیستم های عامل ” تك – كاره ” ، وجود وقفه ها و نحوه مدیریت آنها در روند اجرای پردازه ها تاثیر و پیچیدگی های خاص خود را از بعد مدیریتی بدنبال خواهد داشت . در سیستم های عامل “چند – كاره ” عملیات بمراتب پیچیده تر خواهد بود. در چنین مواردی می بایست این اعتقاد بوجود آید كه چندین فعالیت بطور همزمان در حال انجام است . عملا” پردازنده در هر لحظه قادر به انجام یك فعالیت است و بدیهی است رسیدن به مرز اعتقادی فوق ( چندین فعالیت بطور همزمان ) مستلزم یك مدیریت قوی و طی مراحل پیچیده ای خواهد بود.  در چنین حالتی لازم است كه پردازنده در مدت زمان یك ثانیه هزاران مرتبه از یك پردازه به پردازه ه دیگر سوئیچ  تا امكان استفاده چندین پردازه از پردازنده را فراهم نماید . در ادامه نحوه انجام عملیات فوق ، تشریح می گردد :

  یك پردازه بخشی از حافظهRAM را اشغال خواهد كرد

  پس از استفرار بیش از یك پردازه در حافظه ، پردازنده بر اساس یك زمانبندی خاص ، فرصت اجراء را به یكی از پردازه ها خواهد داد.

  پردازنده ، بر اساس تعداد سیكل های خاصی پردازه را اجراء خواهد كرد .

   پس ازاتمام تعداد سیكل های مربوطه ، پردازنده وضعیت پردازه ( مقایر ریجسترها و …) را ذخیره و به پردازه اتمام زمان مربوطه را اعلام می نماید.

 پردازنده در ادامه اطلاعات ذخیره شده در رابطه با پردازه دیگر را فعال ( ریجسترها و …) و زمینه اجرای پردازه دوم فراهم می گردد.

 پس ازاتمام تعداد سیكل های مربوطه ، پردازنده وضعیت پردازه ( مقایر ریجسترها و …) را ذخیره و به پردازه اتمام زمان مربوطه را اعلام و مجددا” پردازه اول جهت اجراء فعال خواهد گردید.

تمام اطلاعات مورد نیاز بمنظور مدیریت یك پردازه در  ساختمان داده ای خاص با نامPCB)ProcessControl Block) ، نگهداری می گردد. پردازنده در زمان سوئیچ بین پردازه ها ، از آخرین وضعیت هر پردازه  با استفاده از اطلاعات ذخیره شده درPCB آگاهی پیدا كرده و در ادامه زمینه اجرای پردازه مورد نظر بر اساس تعداد سیكل های در نظر گرفته شده فراهم خواهد شد. برای هر پردازه یكPCB ایجاد و اطلاعات زیر در آن ذخیره خواهد گردید :

۱- یك مشخصه عددی (ID) كه نمایانگر پردازه خواهد بود .

۲-اشاره گری كه نشان دهنده آخرین محل اجرای پردازه است

۳-محتویات رجیستر ها

۴-وضعیت سوئیچ ها و متغیرهای مربوطه

۵-اشاره گره هائی كه حد بالا و پایین حافظه مورد نیاز پردازه را مشخص خواهد كرد.

۶- اولویت پردازه

۷-وضعیت دستگاههای ورودی و خروجی مورد نیاز پردازه

هر زمان كه اطلاعات مربوط به پردازه ای تغییر یابد ، ( پردازه از حالت “آماده ” تبدیل به حالت “اجراء ” و یا از حالت ” اجراء ” به حالت “انتظار” و یا “آماده ” سوئیچ نماید ) اطلاعات ذخیره شده درPCB استفاده و بهنگام خواهند شد.

عملیات جایگزینی پردازها،  بدون نظارت و ارتباط مستقیم كاربر انجام و هر پردازه به میزان كافی از زمان پردازنده برای اتمام عملیات خود استفاده خواهد كرد. در این راستا ممكن است ، كاربری قصد اجرای تعداد بسیار زیادی از پردازه ها را بسورت همزمان داشته باشد. در چنین مواردی است ، پردازنده خود نیازمند استفاده از چندین سیكل زمانی برای ذخیره و بازیابی اطلاعات مربوط به هر یك از پردازه ها خواهد بود .در صورتیكه سیستم عامل با دقت طراحی نشده باشد  یا پردازه های زیادی فعالیت خود را آغاز كرده باشند ، مدت زمان زیادی از پردازنده صرف انجام عملیات سوئیچینگ بین پردازها شده و عملا” در روند اجرای پردازها اختلال ایجاد می گردد. وضعیت بوجود آمده فوق راThrashing می گویند. در چنین مواردی كاربر می بایست نسبت به غیرفعال نمودن برخی از پردازه ها اقدام تا سیستم مجددا” در وضعیت طبیعی قرار گیرد.

یكی از روش هائی كه طراحان سیستم عامل از آن استفاده تا امكان ( شانس) تحققThrashing را كاهش  دهند ، كاهش نیاز به پردازه های جدید برای انجام فعالیت های متفاوت است . برخی از سیستم های عامل ازیك  ” پردازه -lite ” با نامThread استفاده می نمایند. Thread از لحاظ كارآئی همانند یك پردازه معمولی رفتار نموده ولی نیازمند عملیات متفاوت ورودی و خروجی  یا ایجاد ساختمان دادهPCB مشابه یك پردازه عادی نخواهد بود. یك پردازه ممكن است باعث اجرای چندینThreads  یا سایر پردازه های دیگر گردد. یكThread نمی تواند باعث اجرای یك پردازه گردد.

تمام موارد اشاره شده در رابطه با زمانبندی با فرض وجود یك پردازنده مطرح گردیده است . در سیستم هائی كه دارای دو  یا بیش از دو پردازنده می باشند ، سیستم عامل حجم عملیات مربوط به هرپردازنده را تنظیم و مناسب ترین روش اجراء برای یك پردازه در نظر گرفتهمیشود .  سیستم های عامل نامتقارن ، از یك پردازنده برای انجام عملیات مربوط به سیستم عامل استفاده و پردازه های مربوط به برنامه های كاربردی را بین سایر پردازه ها تقسیم می نمایند. سیستم های عامل متقارن ،  عملیات مربوط به خود و عملیات مربوط به سایر پردازه ها را بین پردازه های موجود تقسیم می نمایند. در این راستا سعی می گردد كه توزیع عملیات برای هر یك از پردازه ها بصورت متعادل انجام گردد.

مدیریت حافظه و فضای ذخیره سازی

سیستم عامل در رابطه با مدیریت حافظه دو عملیات اساسی را انجام خواهد داد :

 هر پردازه بمنظور اجراء می بایست دارای حافظه مورد نیاز و اختصاصی خود باشد .

 از انواع متفاوتی حافظه در سیستم استفاده تا هر پردازه قادر به اجراء با بالاترین سطح كارآئی باشد.

سیسم های عامل در ابتدا می بایست محدوده های حافظه مورد نیاز هر نوع نرم افزار و برنامه های خاص را فراهم نمایند. مثلا” فرض كنید سیستمی دارای یك مگابایت حافظه اصلی باشد . سیستم عامل كامپیوتر فرضی ، نیازمند ۳۰۰ كیلو بایت حافظه است . سیستم عامل در بخش انتهائی حافظه مستقر و بهمراه خود درایورهای مورد نیاز بمنظور كنترل سخت افزار را نیز مستقر خواهد كرد. درایورهای مورد نظر به ۲۰۰ كیلو بایت حافظه نیاز خواهند داشت . بنابراین پس از استقرار سیستم عامل بطور كامل در حافظه ، ۵۰۰ كیلو بایت حافظه باقیمانده و از آن برای پردازش برنامه های كاربردی استفاده خواهد شد. زمانیكه برنامه های كاربردی در حافظه مستقر می گردند ، سازماندهی آنها در حافظه بر اساس بلاك هائی خواهد بود كه اندازه آنها توسط سیستم عامل مشخص خواهد شد. در صورتیكه اندازه هر بلاك ۲ كیلوبایت باشد ، هر یك از برنامه های كاربردی كه در حافظه مستقر می گردنند ، تعداد زیادی  از بلاك های فوق را (مضربی از دو خواهد بود) ، بخود اختصاص خواهند داد. برنامه ها در بلاك هائی با طول ثابت مستقر می گردند. هر بلاك دارای محدوده های خاص خود بوده كه  توسط كلمات چهار و یا هشت بایت ایجاد خواهند شد. بلاك ها و محدو ده های فوق این اطمینان را بوجود خواهند آورد كه برنامه ها در محدوده های متداخل مستقر نخواهند شد.  پس از پر شدن فضای ۵۰۰ كیلوبایت اختصاصی برای برنامه های كاربردی ، وضعیت سیستم به چه صورت تبدیل خواهد گردید؟

در اغلب كامپیوترها ، می توان ظرفیت حافظه را ارتقاء و افزایش داد. مثلا” می توان میزان حافظهRAM موجود را از یك مگابایت به دو مگابایت ارتقاء داد. روش فوق یك راهكار فیزیكی برای افزایش حافظه بوده كه در برخی موارد دارای چالش های خاص خود می باشد. در این زمینه می بایست راهكارهای دیگر نیز مورد بررسی قرار گیرند. اغلب اطلاعات ذخیره شده توسط برنامه ها در حافظه ، در تمام لحظات مورد نیاز نخواهد نبود. پردازنده در هر لحظه قادر به دستیابی به یك محل خاص از حافظه است . بنابراین اكثر حجم حافظه در اغلب اوقات  غیر فابل استفاده است . از طرف دیگر با توجه به اینكه فضای ذخیره سازی حافظه ها ی جانبی نظیر دیسك ها بمراتب ارزانتر نسبت به حافظه اصلی است ، می توان با استفاده از مكانیزم هائی اطلاعات موجود در حافظه اصلی را  خارج و آنها را موقتا”  بر روی هارد دیسك  ذخیره نمود.  بدین ترتیب فضای حافظه اصلی آزاد و در زمانیكه به اطلاعات ذخیره شده بر روی هارد دیسك نیاز باشد ، مجددا” آنها را  در حافظه مستقر كرد. روش فوق ” مدیریت حافظه مجازی ” نامیده می شود.

حافطه های  ذخیره سازی دیسكی ، یكی از انواع متفاوت حافظه موجود بوده كه می بایست توسط سیستم عامل مدیریت گردد. حافطه های با سرعت بالایCache ، حافظه اصلی و حافظه های جانبی نمونه های دیگر از حافظه  بوده كه  توسط سیستم عامل مدیریت گردند.

مدیریت دستگاهها

دستیابی سیستم عامل به  سخت افزارهای موجود از طریقه برنامه های خاصی با نام “درایور” انجام می گیرد. درایور مسئولیت ترجمه بین سیگنال های الكترونیكی زیر سیستم های سخت افزاری و زبانهای برنامه نویسی سطح بالا و سیستم عامل و برنامه های كاربردی را برعهده خواهد داشت . مثلا” درایورها اطلاعاتی را كه سیستم عامل بصورت یك فایل تعریف و در نظر می گیرد را اخذ و آنها را به مجموعه ای از بیت ها برای ذخیره سازی بر روی حافظه های حانبی و یا مجموعه ای از پالس ها برای ارسال بر روی چاپگر ، ترجمه خواهد كرد.

با توجه به ماهیت عملكرد عناصر سخت افزاری و وجود تنوع در این زمینه ، درایورهای مربوطه نیز دارای روش های متعدد بمنظور انجام وظایف خود می باشند. اكثر درایورها در زمانیكه به خدمات دستگاه مورد نظر نیاز باشد ، استفاده شده و دارای پردازش های یكسانی در زمینه سرویس دهی خواهند بود. سیستم عامل بلاك های با اولویت بالا را به درایورها اختصاص داده تا از این طریق منابع سخت افزاری قادر به آزادسازی سریع بمنظور استفاده  در آینده باشند.

یكی از دلایلی كه درایورها از سیستم عامل تفكیك شده اند ، ضرورت افزودن عملیات و خواسته ای حدید برای درایورها است . در چنین حالتی ضرورتی بر اصلاح یا تغییر سیستم عامل نبوده و با اعمال تغییرات لازم در درایورها می توان همچنان از قابلیت های آنها در كنار سیستم عامل موجود استفاده كرد.

مدیریت عملیات ورودی و خروجی در كامپیوتر مستلزم استفاده و مدیریت ” صف ها ” و ” بافرها ” است .  بافر ، مكان های خاصی برای ذخیره سازی اطلاعات بصورت مجموعه ای از بیت ها ی ارسالی توسط دستگاهها ( نظیر صفحه كلید و یا یك پورت سریال ) و نگهداری اطلاعات فوق و ارسال آنها برای پردازنده در زمان مورد نظر و خواسته شده است .  عملیات فوق در مواردیكه چندین پردازنده در وضعیت اجراء بوده و زمان پردازنده را بخود اختصاص داده اند ، بسیار حائز اهمیت است . سیستم عامل با استفاده از یك بافر قادر به دریافت اطلاعات ارسالی توسط دستگاه مورد نظر است . ارسال اطلاعات ذخیره شده برای پردازنده پس از غیر فعال شدن پردازه مربوطه ، متوقف خواهد شد. در صورتیكه مجددا” پردازه به اطلاعات ورودی نیاز داشته باشد ، دستگاه فعال و سیستم عامل دستوراتی را صادر  تا بافر اطلاعات مربوطه را ارسال دارد. فرآیند فوق این امكان را به صفحه كلید یا مودم خواهد داد تا با سرعت مناسب خدمات خود را همچنان ادامه دهند ( ولواینكه پردازنده در آن زمان خاص مشغول باشد).

مدیریت تمام منابع موجود در یك سیستم كامپیوتری ، یكی از مهمترین و گسترده ترین وظایف یك سیستم عامل است .

لینک های مفید :

What is an Operating System