اصـــول طراحــــی سیـستـم های عـــامل
با سلام خدمت تمامی دوستان عزیز
مطالبی که در این تاپیک با عنوان طراحی سیستم های عامل می گذارم خانم نرگس شکری تهیه و تدوین کرده اند . من این مطالب را برای استفاده دانشجویان به تدریج در سایت خواهم گذاشت .
منبع :
باتشـــکر
موفق باشید .
مديريت حافظه و فضای ذخيره سازی
سيستم عامل در رابطه با مديريت حافظه دو عمليات اساسی را انجام خواهد داد :
1- هر پردازه بمنظور اجراء می بايست دارای حافظه مورد نياز و اختصاصی خود باشد.
2- از انواع متفاوتی حافظه در سيستم استفاده تا هر پردازه قادر به اجراء با بالاترين سطح کارآئی باشد.
سیستم های عامل در ابتدا می بايست محدوده های حافظه مورد نياز هر نوع نرم افزار و برنامه های خاص را فراهم نمايند. مثلاً فرض کنید،سيستمی دارای يک مگابايت حافظه اصلی باشد.
سيستم عامل کامپيوتر فرضی، نيازمند 300 کيلو بايت حافظه است سيستم عامل در بخش انتهائی حافظه مستقر و به همراه خود درايورهای مورد نياز بمنظور کنترل سخت افزار را نيز مستقر خواهد کرد درايورهای مورد نظر به 200 کيلو بايت حافظه نياز خواهند داشت. بنابراين پس از استقرار سيستم عامل بطور کامل در حافظه، 500 کيلو بايت حافظه باقيمانده و از آن برای پردازش برنامه های کاربردی استفاده خواهد شد.
زماني که برنامه های کاربردی در حافظه مستقر می گردند، سازماندهی آنها در حافظه بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سيستم عامل مشخص خواهد شد. در صورتيکه اندازه هر بلاک 2 کيلوبايت باشد، هر يک ازبرنامه های کاربردی که در حافظه مستقر می گردنند، تعداد زيادی از بلاک های فوق را (مضربی از دو خواهد بود)، بخود اختصاص خواهند داد. برنامه ها در بلاک هائی با طول ثابت مستقر می گردند.
هر بلاک دارای محدوده های خاص خود بوده که توسط کلمات چهار و يا هشت بايت ايجاد خواهند شد. بلاک ها ومحدوده های فوق اين اطمينان را بوجود خواهند آورد که برنامه ها در محدوده های متداخل مستقر نخواهند شد.
پس از پر شدن فضای 500 کيلوبايت اختصاصی برای برنامه های کاربردی، وضعيت سيستم به چه صورت تبديل خواهد گردید؟در اغلب کامپيوترها،میتوان ظرفيت حافظه را ارتقاء و افزايش داد.
مثلاً RAM موجود را از يک مگابايت می توان ميزان حافظه به دو مگابايت ارتقاء داد. روش فوق يک راهکار فيزيکی برای افزايش حافظه بوده که در برخی موارد دارای چالش های خاص خود می باشد.
در اين زمينه می بايست راهکارهای ديگر نيز مورد بررسی قرار گيرند. اغلب اطلاعات ذخيره شده توسط برنامه ها در حافظه، در تمام لحظات مورد نياز نخواهد بود. پردازنده در هر لحظه قادر به دستيابی به يک محل خاص از حافظه است. بنابراين اکثر حجم حافظه در اغلب اوقات غير قابل استفاده است.
از طرف ديگر با توجه به اينکه فضای ذخيره سازی حافظه ها ی جانبی نظير ديسک ها بمراتب ارزانتر نسبت به حافظه اصلی است،می توان با استفاده از مکانيزم هائی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتاً بر روی هارد ديسک ذخيره نمود.
بدين ترتيب فضای حافظه اصلی آزاد و در زماني که به اطلاعات ذخيره شده بر روی هارد ديسک نياز باشد، مجدداً آنها را در حافظه مستقر کرد. روش فوق " مديريت حافظه مجازی " ناميده می شود. حافطه های ذخيره سازی ديسکی، يکی از انواع متفاوت حافظه موجود بوده که می بايست توسط سيستم عامل مديريت گردد.
حافطه های با سرعت بالایCache، حافظه اصلی و حافظه های جانبی نمونه های ديگر ازحافظه بوده که توسط سيستم عامل مديريت می گردند.
ارتباط سيستم با دنيای خارج
اينترفيس برنامه ها
سيستم عامل در رابطه با اجرای برنامه های کامپيوتری خدمات فراوانی را ارائه می نمايد. برنامه نويسان و پياده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سيستم های عامل استفاده و بدون اينکه نگران و يا درگير جزئيات عمليات در سيستم باشند ، از خدمات مربوطه استفاده نمايند.
برنامه نويسان با استفاده از API ( Application program interface) قادر به استفاده از خدمات ارائه شده توسط ، سيستم های عامل در رابطه با طراحی و پياده سازی نرم افزار می باشند. در ادامه بمنظور بررسی جايگاه API به بررسی مثالی پرداخته خواهد شد که هدف ايجاد يک فايل بر روی هارد ديسک برای ذخيره سازی اطلاعات است .
برنامه نويس ، برنامه ای را نوشته که بکمک آن قادر به ذخيره سازی داده های ارسالی توسط يک دستگاه کنترل علمی است .سيستم عامل يک تابع API با نام MakeFile را بمنظور ايجاد فايل در اختيار برنامه نويس قرار می دهد. برنامه نويس در زمان نوشتن برنامه از دستوری مشابه زير استفاده می نمايد:
دستورالعمل فوق به سيستم عامل خواهد گفت که فايلی را ايجاد کند که شيوه دستيابی به داده های آن بصورت تصادفی دارای نام مشخص شده توسط کاربر و دارای طولی متغير است سيستم عامل دستور فوق را بصورت زير انجام خواهد داد:
- سيستم عامل درخواستی برای هارد ارسال تا اولين مکان آزاد قابل استفاده مشخص گردد.
- با توجه به اطلاعات ارسالی ، سيستم عامل يک - entry ،در سيستم فايل مربوطه ايجاد و ابتدا و انتهای فايل نام فايل ، نوع فايل ، تاريخ و زمان ايجاد فايل و ساير اطلاعات ضروری را ذخيره خواهد کرد.
- سيستم عامل اطلاعاتی را در ابتدای فايل بمنظور مشخص کردن فايل ، تنظيمات مربوط به شيوه دستيابی به فايل و ساير اطلاعات مورد نياز را خواهد نوشت.
در چنين حالتی برنامه نويس از تابع فوق برای ايجاد و ذخيره سازی فايل استفاده نموده و ضرورتی بر نوشتن کدها ، نوع داده ها و کدهای پاسخ برای هر نوع هارد ديسک نخواهد بود. سيستم عامل از امکانات درايورها استفاده و درايورها مسئول برقراری ارتباط با منابع سخت افزاری خواهند بود. در چنين حالتی برنامه نويس بسادگی از تابع مورد نظر استفاده و ادامه عمليات توسط سيستم عامل انجام خواهد شد.
امکانات ارائه شده توسط سيستم های عامل در قالب مجموعه ای از توابع و امکانات API يکی از موارد بسيار مهم استفاده از سيستم عامل از ديدگاه طراحان و پياده کنندگان نرم افزار است .
اينترفيس کاربر
API يک روش يکسان برای برنامه های کامپيوتری بمنظور استفاده از منابع موجود در يک سيستم کامپيوتری را فراهم می نمايد. بخش رابط کاربر (UI ) يک ساختار مناسب ارتباطی بين کاربر و کامپيوتر را فراهم ،می آورد. اکثر سيستم های عامل از رابط های گرافيکی در اين زمينه استفاده می نمايند.
بخش رابط کاربر هر سيستم عامل شامل يک و يا مجموعه ای از برنامه های کامپيوتری است که بصورت يک لايه در بالاترين سطح يک سيستم عامل و در ارتباط با کاربر مستقر می گردند.
برخی از سيستم های عامل از رابط های گرافيکی ( نظير ويندوز ) و برخی ديگر از رابط های مبتنی بر متن نظير سيستم عامل DOS استفاده می نمایند.
تطابق تکنیکهای سیستم عامل با نسل های کامپیوتر
در نسل اول کامپیوترها (55-1945) که از لامپ خلا برای ساخت آنها استفاده میشد,زبانهای برنامه نویسی حتی اسمبلی ابداع نشده بودند و سیستم عامل نیز اصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند.
آنها برنامههای خود را توسط تخته مدار سوراخدار (و بعدها توسط کارتهای پانچ ) و به زبان ماشین به کامپیوتر میدادند. اکثر برنامه ها محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود.
- Batch system سیستم های دسته ای
Multi programming- سیستم های چند برنامه ای
Spooling- سیستم
Time sharing- سیستم اشتراک زمانی
-سیستم عاملهای کامپیوترهای شخصی و شبکه
Distributed system- سیستم های توزیع شده
Multi tasking- سیستم های چند وظیفه ای
Multi processing- سیستم های چند پردازنده ای
Real Time- سیستم های بلادرنگ
سیستم های دسته ای
در نسل دوم , کامپیوترها (65-1955) از ترانزیستور ساخته شدند. طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار میکرد و کاربران به طور مستقیم با این کامپیوترها محاوره (interaction) نداشتند.
کاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی کاغذ مینوشت سپس توسط دستگاه card punch برنامه را ,روی کارت های سوراخدار منتقل ساخت.
بعد این دسته کارت تهیه شده که شامل برنامه, دادهها و کارتهای کنترل بود به صورت کار (Job) تحویل اپراتور داده می شد . اپراتور بعد از اتمام کار قبلی , دسته کارت جدید را به کامپیوتر میداد تا برنامه را اجراء کند در انتها خروجی برنامه (که غالباً چاپی بود) را به کاربر تحویل میداد سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال کنترل اتوماتیک از یک کار به کار دیگری بود . سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یک برنامه اجراء میشد.
هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این کامپیوترهای گران قیمت به هدر میرفت . برای رفع مشکل فوق سیستمهای دستهای ابداع شد . یعنی ابتدا یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری میشد , سپس کلیه آنها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و نسبتاً ارزان مثل IBM 1401 خوانده شده و بر روی یک نوار ذخیره میگردید. سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام میداد مثل IBM7094 نصب میکرد . بعد از آن برنامهای را اجراء میکرد (یعنی سیستم عامل) .
تا اولین کار را از روی نوار برداشته و اجراء کند, خروجی بر روی نوار دیگری نوشته می شد. پس از اتمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار میخواند. پس از اجراء همه برنامهها ,اپراتور نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل میساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود.
به این روش کار offline spooling نیز گفته میشود. بیشتر برنامههای نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزئی به کار میرفت.
یکی از معایب روش offline- spooling زیاد بودن زمان برگشت( گردش ) ,(turnaround time)است یعنی تأخیر زمانی مابین تحویل کار و تکمیل کار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد.
تنها روش بدست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در ماشین اصلی قرار دهند. حتی در اینصورت هم باید چندین ساعت صبر میکردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزار اضافی (مثل کامپیوترهای1401) از دیگر معایب این روش بود.