تمام اطلاعات مورد نیاز بمنظور مدیریت یک پردازه در ساختمان داده ای خاص با نامPCB)ProcessControl Block) ، نگهداری می گردد. پردازنده در زمان سوئیچ بین پردازه ها ، از آخرین وضعیت هر پردازه با استفاده از اطلاعات ذخیره شده درPCB آگاهی پیدا کرده و در ادامه زمینه اجرای پردازه مورد نظر بر اساس تعداد سیکل های در نظر گرفته شده فراهم خواهد شد. برای هر پردازه یکPCB ایجاد و اطلاعات زیر در آن ذخیره خواهد گردید :
· یک مشخصه عددی (ID) که نمایانگر پردازه خواهد بود .
· اشاره گری که نشان دهنده آخرین محل اجرای پردازه است
· محتویات رجیستر ها
· وضعیت سوئیچ ها و متغیرهای مربوطه
· اشاره گره هائی که حد بالا و پایین حافظه مورد نیاز پردازه را مشخص خواهد کرد.
· اولویت پردازه
· وضعیت دستگاههای ورودی و خروجی مورد نیاز پردازه
هر زمان که اطلاعات مربوط به پردازه ای تغییر یابد ، ( پردازه از حالت "آماده " تبدیل به حالت "اجراء " و یا از حالت " اجراء " به حالت "انتظار" و یا "آماده " سوئیچ نماید ) اطلاعات ذخیره شده درPCB استفاده و بهنگام خواهند شد.
عملیات جایگزینی پردازها، بدون نظارت و ارتباط مستقیم کاربر انجام و هر پردازه به میزان کافی از زمان پردازنده برای اتمام عملیات خود استفاده خواهد کرد. در این راستا ممکن است ، کاربری قصد اجرای تعداد بسیار زیادی از پردازه ها را بسورت همزمان داشته باشد. در چنین مواردی است ، پردازنده خود نیازمند استفاده از چندین سیکل زمانی برای ذخیره و بازیابی اطلاعات مربوط به هر یک از پردازه ها خواهد بود .در صورتیکه سیستم عامل با دقت طراحی نشده باشد یا پردازه های زیادی فعالیت خود را آغاز کرده باشند ، مدت زمان زیادی از پردازنده صرف انجام عملیات سوئیچینگ بین پردازها شده و عملا" در روند اجرای پردازها اختلال ایجاد می گردد. وضعیت بوجود آمده فوق راThrashing می گویند. در چنین مواردی کاربر می بایست نسبت به غیرفعال نمودن برخی از پردازه ها اقدام تا سیستم مجددا" در وضعیت طبیعی قرار گیرد.
یکی از روش هائی که طراحان سیستم عامل از آن استفاده تا امکان ( شانس) تحققThrashing را کاهش دهند ، کاهش نیاز به پردازه های جدید برای انجام فعالیت های متفاوت است . برخی از سیستم های عامل ازیک " پردازه -lite " با نامThread استفاده می نمایند. Thread از لحاظ کارآئی همانند یک پردازه معمولی رفتار نموده ولی نیازمند عملیات متفاوت ورودی و خروجی یا ایجاد ساختمان دادهPCB مشابه یک پردازه عادی نخواهد بود. یک پردازه ممکن است باعث اجرای چندینThreads یا سایر پردازه های دیگر گردد. یکThread نمی تواند باعث اجرای یک پردازه گردد.
تمام موارد اشاره شده در رابطه با زمانبندی با فرض وجود یک پردازنده مطرح گردیده است . در سیستم هائی که دارای دو یا بیش از دو پردازنده می باشند ، سیستم عامل حجم عملیات مربوط به هرپردازنده را تنظیم و مناسب ترین روش اجراء برای یک پردازه در نظر گرفتهمیشود . سیستم های عامل نامتقارن ، از یک پردازنده برای انجام عملیات مربوط به سیستم عامل استفاده و پردازه های مربوط به برنامه های کاربردی را بین سایر پردازه ها تقسیم می نمایند. سیستم های عامل متقارن ، عملیات مربوط به خود و عملیات مربوط به سایر پردازه ها را بین پردازه های موجود تقسیم می نمایند. در این راستا سعی می گردد که توزیع عملیات برای هر یک از پردازه ها بصورت متعادل انجام گردد.
مدیریت حافظه و فضای ذخیره سازی
سیستم عامل در رابطه با مدیریت حافظه دو عملیات اساسی را انجام خواهد داد :
· هر پردازه بمنظور اجراء می بایست دارای حافظه مورد نیاز و اختصاصی خود باشد .
· از انواع متفاوتی حافظه در سیستم استفاده تا هر پردازه قادر به اجراء با بالاترین سطح کارآئی باشد.
سیسم های عامل در ابتدا می بایست محدوده های حافظه مورد نیاز هر نوع نرم افزار و برنامه های خاص را فراهم نمایند. مثلا" فرض کنید سیستمی دارای یک مگابایت حافظه اصلی باشد . سیستم عامل کامپیوتر فرضی ، نیازمند 300 کیلو بایت حافظه است . سیستم عامل در بخش انتهائی حافظه مستقر و بهمراه خود درایورهای مورد نیاز بمنظور کنترل سخت افزار را نیز مستقر خواهد کرد. درایورهای مورد نظر به 200 کیلو بایت حافظه نیاز خواهند داشت . بنابراین پس از استقرار سیستم عامل بطور کامل در حافظه ، 500 کیلو بایت حافظه باقیمانده و از آن برای پردازش برنامه های کاربردی استفاده خواهد شد. زمانیکه برنامه های کاربردی در حافظه مستقر می گردند ، سازماندهی آنها در حافظه بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سیستم عامل مشخص خواهد شد. در صورتیکه اندازه هر بلاک 2 کیلوبایت باشد ، هر یک از برنامه های کاربردی که در حافظه مستقر می گردنند ، تعداد زیادی از بلاک های فوق را (مضربی از دو خواهد بود) ، بخود اختصاص خواهند داد. برنامه ها در بلاک هائی با طول ثابت مستقر می گردند. هر بلاک دارای محدوده های خاص خود بوده که توسط کلمات چهار و یا هشت بایت ایجاد خواهند شد. بلاک ها و محدو ده های فوق این اطمینان را بوجود خواهند آورد که برنامه ها در محدوده های متداخل مستقر نخواهند شد. پس از پر شدن فضای 500 کیلوبایت اختصاصی برای برنامه های کاربردی ، وضعیت سیستم به چه صورت تبدیل خواهد گردید؟
در اغلب کامپیوترها ، می توان ظرفیت حافظه را ارتقاء و افزایش داد. مثلا" می توان میزان حافظهRAM موجود را از یک مگابایت به دو مگابایت ارتقاء داد. روش فوق یک راهکار فیزیکی برای افزایش حافظه بوده که در برخی موارد دارای چالش های خاص خود می باشد. در این زمینه می بایست راهکارهای دیگر نیز مورد بررسی قرار گیرند. اغلب اطلاعات ذخیره شده توسط برنامه ها در حافظه ، در تمام لحظات مورد نیاز نخواهد نبود. پردازنده در هر لحظه قادر به دستیابی به یک محل خاص از حافظه است . بنابراین اکثر حجم حافظه در اغلب اوقات غیر فابل استفاده است . از طرف دیگر با توجه به اینکه فضای ذخیره سازی حافظه ها ی جانبی نظیر دیسک ها بمراتب ارزانتر نسبت به حافظه اصلی است ، می توان با استفاده از مکانیزم هائی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتا" بر روی هارد دیسک ذخیره نمود. بدین ترتیب فضای حافظه اصلی آزاد و در زمانیکه به اطلاعات ذخیره شده بر روی هارد دیسک نیاز باشد ، مجددا" آنها را در حافظه مستقر کرد. روش فوق " مدیریت حافظه مجازی " نامیده می شود.
حافطه های ذخیره سازی دیسکی ، یکی از انواع متفاوت حافظه موجود بوده که می بایست توسط سیستم عامل مدیریت گردد. حافطه های با سرعت بالایCache ، حافظه اصلی و حافظه های جانبی نمونه های دیگر از حافظه بوده که توسط سیستم عامل مدیریت گردند.
مدیریت دستگاهها
دستیابی سیستم عامل به سخت افزارهای موجود از طریقه برنامه های خاصی با نام "درایور" انجام می گیرد. درایور مسئولیت ترجمه بین سیگنال های الکترونیکی زیر سیستم های سخت افزاری و زبانهای برنامه نویسی سطح بالا و سیستم عامل و برنامه های کاربردی را برعهده خواهد داشت . مثلا" درایورها اطلاعاتی را که سیستم عامل بصورت یک فایل تعریف و در نظر می گیرد را اخذ و آنها را به مجموعه ای از بیت ها برای ذخیره سازی بر روی حافظه های حانبی و یا مجموعه ای از پالس ها برای ارسال بر روی چاپگر ، ترجمه خواهد کرد.
با توجه به ماهیت عملکرد عناصر سخت افزاری و وجود تنوع در این زمینه ، درایورهای مربوطه نیز دارای روش های متعدد بمنظور انجام وظایف خود می باشند. اکثر درایورها در زمانیکه به خدمات دستگاه مورد نظر نیاز باشد ، استفاده شده و دارای پردازش های یکسانی در زمینه سرویس دهی خواهند بود. سیستم عامل بلاک های با اولویت بالا را به درایورها اختصاص داده تا از این طریق منابع سخت افزاری قادر به آزادسازی سریع بمنظور استفاده در آینده باشند.
یکی از دلایلی که درایورها از سیستم عامل تفکیک شده اند ، ضرورت افزودن عملیات و خواسته ای حدید برای درایورها است . در چنین حالتی ضرورتی بر اصلاح یا تغییر سیستم عامل نبوده و با اعمال تغییرات لازم در درایورها می توان همچنان از قابلیت های آنها در کنار سیستم عامل موجود استفاده کرد.
مدیریت عملیات ورودی و خروجی در کامپیوتر مستلزم استفاده و مدیریت " صف ها " و " بافرها " است . بافر ، مکان های خاصی برای ذخیره سازی اطلاعات بصورت مجموعه ای از بیت ها ی ارسالی توسط دستگاهها ( نظیر صفحه کلید و یا یک پورت سریال ) و نگهداری اطلاعات فوق و ارسال آنها برای پردازنده در زمان مورد نظر و خواسته شده است . عملیات فوق در مواردیکه چندین پردازنده در وضعیت اجراء بوده و زمان پردازنده را بخود اختصاص داده اند ، بسیار حائز اهمیت است . سیستم عامل با استفاده از یک بافر قادر به دریافت اطلاعات ارسالی توسط دستگاه مورد نظر است . ارسال اطلاعات ذخیره شده برای پردازنده پس از غیر فعال شدن پردازه مربوطه ، متوقف خواهد شد. در صورتیکه مجددا" پردازه به اطلاعات ورودی نیاز داشته باشد ، دستگاه فعال و سیستم عامل دستوراتی را صادر تا بافر اطلاعات مربوطه را ارسال دارد. فرآیند فوق این امکان را به صفحه کلید یا مودم خواهد داد تا با سرعت مناسب خدمات خود را همچنان ادامه دهند ( ولواینکه پردازنده در آن زمان خاص مشغول باشد).
مدیریت تمام منابع موجود در یک سیستم کامپیوتری ، یکی از مهمترین و گسترده ترین وظایف یک سیستم عامل است .
ارتباط سیستم با دنیای خارج
اینترفیس برنامه ها
سیستم عامل در رابطه با اجرای برنامه های کامپیوتری خدمات فراوانی را ارائه می نماید. برنامه نویسان و پیاده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سیستم های عامل استفاده و بدون اینکه نگران و یا درگیر جزئیات عملیات در سیستم باشند ، از خدمات مربوطه استفاده نمایند. برنامه نویسان با استفاده از API)Applicationprogram interface) ، قادر به استفاده از خدمات ارائه شده توسط سیستم های عامل در رابطه با طراحی و پیاده سازی نرم افزار می باشند. در ادامه بمنظور بررسی جایگاهAPI به بررسی مثالی پرداخته خواهد شد که هدف ایجاد یک فایل بر روی هارد دیسک برای ذخیره سازی اطلاعات است .
برنامه نویسی ، برنامه ای را نوشته که بهکمک آن قادر به ذخیره سازی داده های ارسالی توسط یک دستگاه کنترل علمی است . سیستمعامل یک تابع API با نامMakeFile را بهمنظور ایجاد فایل در اختیار برنامه نویس قرار می دهد. برنامه نویس در زمان نوشتن برنامه از دستوری مشابه زیر استفاده می نماید :
MakeFile [1,%Name,2]
دستورالعمل فوق به سیستم عامل خواهد گفت که فایلی را ایجاد که شیوه دستیابی به داده های آن بصورت تصادفی ( عدد یک بعنوان اولین پارامتر ) ، دارای نام مشخص شده توسط کاربر (Name%) و دارای طولی متغیر است . ( عدد 2 ، بعنوان سومین پارامتر) سیستم عامل دستور فوق را بصورت زیر انجام خواهد داد :
? سیستم عامل درخواستی برای هارد ارسال تا اولین مکان آزاد قابل استفاده مشخص گردد.
? با توجه به اطلاعات ارسالی ، سیستم عامل یکentry در سیستم فایل مربوطه ایجاد و ابتدا و انتهای فایل ، نام فایل ، نوع فایل ، تاریخ و زمان ایجاد فایل و سایر اطلاعات ضروری را ذخیره خواهد کرد.
? سیستم عامل اطلاعاتی را در ابتدای فایل بمنظور مشخص کردن فایل ، تنظیمات مربوط به شیوه دستیابی به فایل و سایر اطلاعات مورد نیاز را خواهد نوشت .
در چنین حالتی برنامه نویس از تابع فوق برای ایجاد و ذخیره سازی فایل استفاده نموده و ضرورتی بر نوشتن کدها ، نوع داده ها و کدهای پاسخ برای هر نوع هارد دیسک نخواهد بود. سیستم عامل از امکانات درایورها استفاده و درایورها مسئول برقراری ارتباط با منابع سخت افزاری خواهند بود. در چنین حالتی برنامه نویس بهسادگی از تابع مورد نظر استفاده و ادامه عملیات توسط سیستم عامل انجام خواهد شد.
امکانات ارائه شده توسط سیستم های عامل در قالب مجموعه ای از توابع و امکاناتAPI یکی از موارد بسیار مهم استفاده از سیستم عامل از دیدگاه طراحان و پیاده کنندگان نرم افزار است .
اینترفیس کاربر
API یک روش یکسان برای برنامه های کامپیوتری بمنظور استفاده از منابع موجود در یک سیستم کامپیوتری را فراهم می نماید. بخش رابط کاربر (UI) ، یک ساختار مناسب ارتباطی بین کاربر و کامپیوتر را فراهم می آورد. اکثر سیستم های عامل از رابط های گرافیکی در این زمینه استفاده می نمایند. بخش رابط کاربر هر سیستم عامل شامل یک یا مجموعه ای از برنامه های کامپیوتری است که بصورت یک لایه در بالاترین سطح یک سیستم عامل و در ارتباط با کاربر مستقر می گردند. برخی از سیستم های عامل از رابط های گرافیکی ( نظیر ویندوز ) و برخی دیگر از رابط های مبتنی بر متن ( نظیر سیستم عاملDOS ) استفاده می نمایند.در واقع محیط هایی همچونdesktop در ویندوز 98 یاXP که امکان برقراری ارتباط کاربران را با برنامه های مختلف سیستم عامل فراهم مِ کنند اینترفیس کاربری هستند.