پيشگفتار
پيشرفت مداوم يك فرد، مرهون بهرهمندي او از اطلاعات بوده و دسترسي به اطلاعات جديدتر، نويددهندهي سرعت ابتكارات و اختراعات آن فرد است، چرا كه توانمندي يك فرد وابسته به دانستههاي او است و بر همين اساس گفتهاند:
«توانا بود هر كه دانا بود»
از اينرو شناخت انسان از محيط اطراف و علوم مختلف باعث ايدهسازي بهتر او در زمينههاي مختلف ميشود. يكي از علومي كه در دنياي امروز كه به نام عصر كامپيوتر يا عصر تكنولوژي نامگذاري شده است و درك آن قابل اهميت است و گام در همهي صنايع ميگذرد، علوم كامپيوتر است. از اين جهت ابتدا بايد اجزا و عملكرد كامپيوتر به خوبي شناخته شود تا بتوان اين علوم را از آن استخراج كرد. بر همين اساس يكي از بخشهاي اساسي هر سيستم كامپيوتر كه سيستمهاي عامل ناميده ميشود را مورد بررسي تحقيق قرار ميدهيم.
در اين تحقيق سعي شده تا به طور اجمالي به شناخت سيستمهاي عامل در چهار فصل و مشتمل از 67 صفحه پرداخته شود كه در فصل اول مفاهيم كلي و اوليهي سيستمهاي كامپيوتر و در فصل دوم در مورد انواع سيستم عامل و در فصل سوم خصوصيات مديريت حافظه و آخرين فصل، شامل مباحثي از زمانبندي در سيستم عامل است.
مطالب اين تحقيق از پنج كتاب گرفته شده است كه عبارتند از:
سيستم عامل، تاليف ويليام استالينگ؛ سيستمهاي عامل، تاليف سيلبر شاتس؛ مهندسي كامپيوتر، تاليف اعضاي هيات علمي دانشگاه علم و صنعت ايران؛ سيستمهاي عامل، تاليف ايرج صادقي و سيستمهاي عامل، تاليف دكتر مهرداد فهيمي.
در پايان از زحمات كساني كه در اين تحقيق با همراه بودهاند، كمال تشكر را دارم.
چكيده
سيستم عامل بدون شک مهمترين نرمافزار در کامپيوتر است . پس از روشنکردن کامپيوتر، اولين نرمافزاری که مشاهده میگردد، سيستم عامل بوده و آخرين نرمافزاری که قبل از خاموش کردن کامپيوتر مشاهده خواهد شد، نيز سيستم عامل است. سيستم عامل نرمافزاری است که امکان اجرای تمامی برنامههای کامپيوتری را فراهم میآورد. سيستم عامل با سازماندهی، مديريت و کنترل منابع سختافزاری، امکان استفاده بهينه و هدفمند آنها را فراهم میآورد. سيستم عامل فلسفه بودن سختافزار را به درستی تفسير و در اين راستا امکانات متعدد و ضروری جهت حيات ساير برنامههای کامپيوتری را فراهم میآورد.
تمام کامپيوترها از سيستم عامل استفاده نمینمايند. مثلاً اجاقهای مايکرويو که در آشپزخانه استفاده شده دارای نوع خاصی از کامپيوتر بوده که از سيستم عامل استفاده نمینمايند. در اين نوع سيستمها به دليل انجام عمليات محدود و ساده، نيازی به وجود سيستم عامل نخواهد بود. اطلاعات ورودی و خروجی با استفاده از دستگاههايی نظير صفحه کليد و نمايشگرهای LCD، در اختيار سيستم گذاشته میگردند. ماهيت عمليات انجام شده در يک اجاق گاز مايکروويو بسيار محدود و مختصر است، بنابراين همواره يک برنامه در تمام حالات و اوقات اجرا خواهد شد.
برای سيستمهای کامپيوتری که دارای عملکردی بمراتب پيچيدهتر از اجاق گاز مايکروويو میباشند، به خدمت گرفتن يک سيستم عامل باعث افزايش کارآيی سيستم و تسهيل در امر پيادهسازی برنامه های کامپيوتری میگردد. تمام کامپيوترهای شخصی دارای سيستم عامل میباشند. ويندوز يکی از متداولترين سيستمهای عامل است. يونيکس يکی ديگر از سيستم های عامل مهم در اين زمينه است. صدها نوع سيستم عامل تاکنون با توجه به اهداف متفاوت طراحی و عرضه شده است. سيستمهای عامل مختص کامپيوترهای بزرگ، سيستمهای روبوتيک، سيستمهای کنترلی بلادرنگ، نمونههايی در اين زمينه میباشند. از اينرو براي بهرهوري بهتر از كامپيوتر بايد سيستم عاملي انتخاب شود كه داراي قابليت بالايي باشد
مقدمه:
سيستم عامل يكي از نرمافزارهاي سيستم است كه به عنوان واسطي بين سختافزار و برنامههاي كاربردي و كاربران عمل مينمايد.
ويژگيها و وظايف سيستم عامل عبارتند از:
الف. كنترل و ايجاد هماهنگي بين برنامههاي كاربردي مختلف در استفاده از سختافزار.
ب. كنترل عملكرد دستگاههاي مختلف ورودي و خروجي.
ج. تخصيص منابع به برنامههاي مختلف.
سيستم عامل برنامهاي است كه هستهي آن همواره بر روي كامپيوتر، در حالت اجرا قرار دارد. دو هدف اصلي سيستم عامل، ايجاد سادگي براي كاربرد و استفادهي كارا و موثر از كامپيوتر است.
مفاهيم اوليه
1 .1- سيستم عامل چيست؟
2 .1- ظهور تدريجي و سير تكاملي سيستمهاي عامل
3 .1- تكامل سيستم عاملهاي جديد
سيستم عامل چيست؟
سيستم عامل بخش مهمي از هر سيستم كامپيوتر است. هر سيستم كامپيوتري را ميتوان به چهار قسمت تقسيم كرد:
سختافزار، سيستم عامل، برنامههاي كاربردي و كاربران
سختافزار شامل CPU (يا بطور خلاصه پردازنده)، حافظه و دستگاههاي ورودي و خروجي است و منابع اصلي كامپيوتر را فراهم ميكند. برنامههاي كاربردي مثل كامپايلرها، سيستمهاي بانك اطلاعاتي، بازيها و برنامههاي تجاري، چگونگي بهرهبرداري از اين منابع جهت حل مسائل محاسباتي كاربران را مشخص ميكند. كاربران مختلفي وجود دارند كه ميخواهند مسائل متفاوتي را حل كنند.
بنابراين ممكن است برنامههاي كاربردي گوناگوني وجود داشته باشند. سيستم عامل، بكارگيري سختافزار را بين برنامههاي مختلف كاربران، كنترل و تنظيم ميكند.
سيستم عامل مانند يك دولت است. اجزاي سيستم كامپيوتري عبارتند از: سختافزار، نرمافزار و دادهها. سيستم عامل ابزارهايي را براستفادهي بهينه از منابع فراهم ميكند. سيستم عامل مانند دولت، خودش كار خاصي انجام نميدهد، بلكه فقط محيطي را فراهم ميآورد كه برنامههاي ديگر به خوبي اجرا شوند.
ديدگاه برتر
ديدگاه برتر نسبت به كامپيوتر، بر حسب واسطي كه مورد استفاده قرار ميگيرد، فرق ميكند، اغلب كاربران كامپيوتر از PC استفاده ميكنند كه شامل مانيتور، صفحه كليد، ماوس و واحد سيستم است. چنين سيستمي براي يك كاربر تهيه شده است تا از منابع آن براي انجام كارهاي بيشتر استفاده كند. در اين مورد، سيستم عامل براي سهولت استفاده طراحي شد، ولي نگاهي به كارايي داشت، اما به بهرهوري منابع پرداخته نشد. كارايي براي كاربر مهم است، ولي بخش زيادي از سيستم بيكار ميماند و منتظر سرعت I/O كاربر است.
بعضي از كاربران از پايانههايي استفاده ميكنند كه به كامپيوتر بزرگ يا ميني كامپيوتر وصل هستند. كاربران ديگر نيز از طريق پايانههاي ديگر به اين كامپيوتر دسترسي دارند. اين كاربران از منابع به طور مشترك استفاده ميكنند و اطلاعات را مبادله مينمايند. سيستم عامل طراحي شد تا بهرهوري منابع را افزايش دهد. بدين ترتيب، كل زمان پردازنده، حافظه و I/O به طور كارآمد مورد استفاده قرار ميگيرند.
كاربران ديگر از ايستگاههاي كاري استفاده ميكنند كه به شبكههاي ساير ايستگاههاي كاري و كارگزاران وصل هستند. اين كاربران ميتوانند منابعي را در اختيار بگيرند، ولي از منابعي مثل فايلها و چاپگرها به طور اشتراكي استفاده ميكنند. لذا سيستم عامل آنها طراحي شد تا بين بهرهوري از منابع و استفاده شخصي توازن برقرار كند.
اخيراً كامپيوترهاي دستي گوناگوني، بعضي وصل به شبكهها متصل هستند (از طريق سيم يا به صورت بيسيم). بر حسب قدرت و محدوديتهايي كه دارند، عمليات راه دور را انجام ميدهند. اين سيستمهاي عامل طراحي شدند تا استفاده شخصي را فراهم كنند، اما كارايي در اثناي كاركردن باتري نيز مهم است.
كاربران نسبت به بعضي از كامپيوترها ديدگاهي ندارند. به عنوان مثال، كامپيوترهاي تعبيه شده در دستگاههاي خانگي و اتومبيلها، صفحه كليدي عددي دارند كه خاموش يا روشن بودن آنها، وضعيت آنها را نشان ميدهد. اين كامپيوترها و سيستمهاي عامل آنها طوري طراحي شدهند كه بدون دخالت كاربر اجرا ميشوند.
ديدگاه سيستم
از نقطهنظر كامپيوتر، سيستم عامل برنامهاي است كه به شدت با سختافزار عجين شده است. سيستم عامل را ميتوان تخصيص دهندهي منابع درنظر گرفت. سيستم كامپيوتر داراي منابع سختافزاري و نرمافزاري متعددي است كه براي حل مساله مفيد است. اين منابع عبارتند از: زمان CPU، فضاي حافظه، فضاي ذخيرهسازي فايل، دستگاههاي I/O و … . سيستم عامل مدير اين منابع است و آنها را در اختيار برنامههاي كاربردي و كاربران قرار ميدهد تا نيازهاي خودشان را برطرف كنند. چون ممكن است درخواستهاي متعددي براي منابع وجود داشته باشد كه حتي متناقض هم باشند، سيستم عامل بايد منابع را طوري در اختيار كاربر يا برنامه كاربردي قرار دهد تا عملكرد سيستم كامپيوتري بهينه باشد.
سيستم عامل را از ديدگاه نياز به كنترل دستگاههاي I/O و برنامههاي كاربردي نيز ميتوان مورد مطالعه قرار داد. در اين ديدگاه، سيستم عامل يك برنامه است. برنامههاي كنترل، برنامههاي كاربران را كنترل ميكند تا از كامپيوتر به درستي استفاده كنند. در اين ديدگاه، بيشتر به كنترل دستگاههاي I/O پرداخته ميشود.
به طور كلي، تعريف دقيقي از سيستم عامل وجود ندارد. علت وجود آنها، بهرهبرداري بهينه از سيستم كامپيوتري است. هدف اصلي سيستمهاي كامپيوتري، اجراي برنامههاي كاربران و حل آسانتر مسالههاي كاربران است. سختافزار ساخته شده تا اين هدف برآورده شود.
چون استفاده از سختافزار محض آسان نيست، برنامههاي كاربردي بوجود آمدند. بسياري از عمليات اين برنامههاي كاربردي، مشترك است، مثل عملياتي كه دستگاههاي I/O را كنترل ميكنند. عمليات مشترك كنترل و تخصيص منابع، به صورت نرمافزار جداگانهاي به نام سيستم عامل نوشته شدند.
تعريف دقيقي وجود ندارد كه مشخص كند چه عملياتي به عنوان بخشي از سيستم عامل محسوب ميشود و چه عملياتي به عنوان بخشي از سيستم عامل نيست. يك ديدگاه، ساده اين است كه هرچيزي كه فروشنده در قبال درخواست سيستم عامل به شما تحويل ميدهد، به عنوان سيستم عامل منظور شود. ميزان حافظه مورد نياز و ويژگيهاي سيستمهاي عامل با هم متفاوت است. بعضي از آنها كمتر از يك مگابايت حافظه اشغال ميكنند و فاقد ويراستار صفحهاي هستند، ولي بعضي ديگر از آنها چندصد مگابايت حافظه نياز دارند و شامل غلطياب و سيستمهاي پنجرهاي هستند.
متداولترين تعريف از سيستم عامل اين است كه، سيستم عامل برنامهاي است كه همواره در سيستم كامپيوتري در حال اجراست (و هسته ناميده ميشود) و ساير برنامهها به نام برنامههاي كاربردي خوانده ميشوند.
اهداف سيستم
بهتر است سيستم عامل را با توجه به كاري كه انجام ميدهد، تعريف كنيم. اولين هدف سيستم عامل اين است كه محيط آساني را براي كار فراهم كند. علت استفاده از سيستم عامل اين است كه بكارگيري كامپيوتر را آسان ميكند. اين ديدگاه براي كامپيوترهاي كوچك واضحتر است.
هدف دوم سيستم عامل، بهرهبرداري بهينه از سختافزار است. اين هدف، براي سيستمهاي كامپيوتري بزرگ چندكاربره مورد نظر است. چون اين سيستمها گران هستند، مطلوب است كه به طور بهينه و كارآمد مورد بهرهبرداري قرار گيرند. اين دو هدف، يعني فراهم كردن محيط آسان و استفاده كارآمد، گاهي با هم در تضادند. در گذشته ملاحظات كارايي مهمتر از سهولت بوده است. بدين ترتيب، اغلب نظريههاي سيستم عامل، به بهرهبرداري بهينه از منابع كامپيوتر مربوط ميشوند. به عنوان مثال، يونيكس از صفحه كليد و چاپگر به عنوان واسط استفاده كرد. به طوري كه كاربر چندان راحت نبود. در مرور زمان، سختافزار تغيير كرد و يونيكس در سختافزار جديد و با واسط كاربرپسند، شروع بكار كرد. واسط گرافيكي كاربر (CPU) بوجود آمد و موجب شد كه كاربران به راحتي با يونيكس كار كنند.
طراحي سيستم عامل، وظيفه پيچيدهاي است. طراحان با برقراري توازن بين طراحي و پيادهسازي مواجهاند و همواره سيستم عامل را به روز ميكنند. موفقيت سيستم عامل در برآورده كردن اهداف طراحي، به كاربران بستگي دارد.
سيستمهاي عامل و معماري كامپيوتر به شدت بر يكديگر موثر بودند. پژوهشگران براي سهولت استفاده از سختافزار، سيستم عامل را بوجود آوردهاند. كاربران سيستمهاي عامل تغييراتي را در طراحي سختافزار پيشنهاد كردند.
ظهور تدريجي و سير تكاملي سيستمهاي عامل
يك سيستم عامل بار كاريش را يا به صورت پياپي و يا بطور همزمان پردازش مينمايد، يعني منابع سيستم كامپوتر ممكن است به يك برنامه منفرد تا خاتمه اجراي آن اختصاص داده شود و يا اينكه به گونهاي پويا مابين مجموعهاي از برنامههاي فعال در مراحل مختلف اجرا تخصيص مجدد يابد.
سيستمهاي عاملي كه از توانايي اجراي همزمان برنامهها برخوردارند، به عنوان سيستمهايي با عملكرد چندبرنامهاي مورد اشاره قرار ميگيرد. چند نوع از سيستمهاي عامل پياپي و چندبرنامهاي وجود دارند. در راستاي ظهور تدريجي و سير تاريخي تكامل سيستمهاي عامل راه دراز و پرفراز و نشيبي طي شده است تا امروزه كاربران از سيستم عامل استفاده بهينه نمايند.
پردازش سريالي يا پياپي
بطور نظري هر سيستم كامپيوتري بدون پشتيباني نرمافزار سيستمي ممكن است به زبان ماشين برنامهسازي شود. برنامهسازي «ماشين ساده» جهت سيستمهاي كامپيوتري اوليه متداول بود. برنامهها جهت ماشين ساده ميتوانست از طريق ترجمه دستي رشتههايي از دستورالعملها به باينري يا هر كد ديگري كه مبناي آن 2 بود، ايجاد گردند. آنگاه دستورالعملها و دادهها با استفاده از كليدهاي ميز فرمان يا شايد هم از طريق يك صفحه كليد هگزا دسيمالي وارد كامپيوتر ميشدند.
برنامهها از طريق بازكردن شمارنده برنامه با آدرس اولين دستورالعمل آغاز ميگرديدند. نتايج اجرا از طريق بررسي محتويات ثباتهاي مربوطه و محلهاي حافظه بدست ميآمدند. دستگاههاي ورودي / خروجي در صورت وجود ميبايست از طريق اجراي مستقيم برنامه، مثلاً از طريق خواندن و نوشتن درگاههاي ورودي / خروجي مربوطه كنترل ميشدند. بدهي است ميزان سودمندي برنامهسازي با ماشين ساده جهت سختافزار و كاربران كم بود. پردازش طولاني و طاقتفرساي برنامه و ورود دادهها عملاً از اجراي تمام برنامهها، مگر برنامههاي خيلي كوتاهي در چنان محيطي ممانعت به عمل ميآورد.
گام تكاملي قابل توجه بعدي در استفاده از سيستم كامپيوتر با پيدايش دستگاههاي ورودي و خروجي نظير كارت خوانهاي كارتهاي منگنه شده و نوارخوانهاي نوار كاغذي و مترجمهاي زبان برداشته شد. در اين راستا برنامهها كه به يك زبان برنامهسازي نوشته ميشدند، با بهرهگيري از يك برنامه كامپيوتري نظير كامپايلر يا مفسر به شكل قابل اجرايي درميآمدند. برنامه ديگري به نام باركننده بطور خودكار برنامههاي قابل اجرا را بر حافظه ماشين بار ميكرد.
كاربر، برنامه و دادههاي وروديش را بر روي دستگاه ورودي قرار ميداد و باركننده آنها را از آن دستگاه ورودي به حافظه منتقل ميساخت. بعد از انتقال كنترل به صورت دستي يا خودكار به برنامه بر شده اجراي برنامه آغاز ميگرديد. برنامه در حال اجرا، وروديش را از دستگاه ورودي تعيين شده ميخواند و خروحي خود را بر روي يك ديسك خروجي نظير چاپگر يا صفحه نمايش ظاهر ميساخت. هنگامي كه برنامه در حافظه بود، ممكن است با مجموعههاي مختلفي از دادهها از نو اجرا شود.
روند ساخت و آمادهسازي برنامهها در چنان محيطهايي به علت اجراي سريالي يا پياپي برنامهها و عمليات دستي گوناگون دربرگيرنده در پردازش خيلي كند و دشوار بود. در يك سلسله عمليات متداول برنامه ويرايشگر بار ميشد تا برنامه يا كد مبدا برنامه كاربر را آماده سازد. گام بعدي، باركردن و اجراي مترجم زبان و مهيا ساختن كه مبدا برنامه كاربر جهت آن بود. هنگامي كه دستگاههاي ورودي سريالي نظير كارتخوانها بكار برده ميشدند، مترجمهاي زبان چندكاره نياز به آن داشتند كه برنامه مبدا جهت خوانده شدن در طول هر گذر جابجا گردد. اگر خطاهاي دستوري كشف ميشدند، كل پردازش بايد از نو تكرار ميشد. سرانجام برنامه يا كد مقصد حاصله از برنامه مبداء كه از نظر دستوري از صحت برخوردار بود، باز ميشد و اجرا ميگرديد. اگر خطاهاي زمان اجرا كشف ميشدند، وضعيت ماشين ميتوانست مورد بررسي قرار گيرد و توسط كليدهاي ميز فرمان يا با كمك برنامهاي به نام اشكالزدا اصلاح ميشد.
نرمافزارهاي سيستم، علاوه بر مترجمهاي زبان، شامل باركنندهها و احتمالاً برنامههاي ويرايشگر و اشكالزدا بود. بشتر آنها از دستگاههاي ورودي / خروجي استفاده ميكردند و بدينلحاظ ميبايست برنامهاي داشته باشد كه آن دستگاهها را بكار بياندازد، چون بسياري از برنامههاي كاربران نيز از دستگاههاي ورودي / خروجي جهت استفاده از تمام برنامهها تامين گردد. اين واقعيت منجر به سلسلهاي از پيادهسازيهايي گرديد كه از قراردادن دستههاي كارت حاوي روالهاي ورودي / خروجي در برنامه كاربر شروع گرديد تا سرانجام مجموعهاي از روالهاي از قبل كامپايل شده و استفاده از پبوندزن و برنامههاي كتابخانهاي جهت تركيب آنها با برنامه مقصد هر كاربر ارتقاء وضعيت يافت.
در سيستم عامل شرح داده شده، روالهاي ورودي / خروجي و برنامه باركننده يك شكل ابتدايي يك سيستم عامل را نشان ميدهد. هرچند كاملاً خام بود، باز هم يك محيطي را جهت اجراي برنامهها فراتر از آنچه در ماشين ساده وجود داشت، را فراهم ميساخت. مترجمهاي زبان، ويرايشگرها و اشكالزداها، برنامههاي سيستمي بودند كه متكي به خدمات ارائه شده از جانب سيستم عامل بودند، ولي بطور كلي به عنوان بخشي از آن درنظر گرفته نميشدند. به عنوان مثال، يك مترجم معمولاً از روالهاي ورودي / خروجي فراهم شده جهت بدست آوردن ورودي (برنامه مبدا) و توليد خروجي استفاده مينمود.
اين شيوه عمليات، هرچند پيشرفت قطعي نسبت به رويكرد ماشين ساده بود، روشن بود كه خيلي كارا نبود. اجراي سيستم كامپيوتر نياز به بارگذاري دستي برنامهها و دادهها داشت. چنين روشي جهت استفاده از منابع نتيجه كمي داشت. ميزان مولد بودن كاربر، بويژه در محيطهاي چندكاربره كم بود، زيرا كاربران ميبايست در انتظار نوبتشان جهت استفاده از ماشين ميماندند. حتي با چنان ابزارهايي نظير ويرايشگرها و اشكالزداها ساخت برنامهها خيلي به كندي پيش ميرفت و با برنامه دستي و بارگذراي دادهها همراه بود.
پردازش دستهاي
گام بعدي، در تكامل سيستمهاي عامل خودكار نمودن ترتيب عمليات لازم جهت اجراي برنامه و جهت جنبههاي مكانيكي ساخت برنامه بود. هدف، افزايش ميزان استفاده از منبع سيستم و مولدبودن برنامهنويس از طريق كاهش يا حذف زمانهاي بيكاري ناشي از عمليات دستي نسبتاً طولاني بود.
حتي زماني كه كاربر به صورت خودكار درآمد، عملياتي نظير سواركردن نوارها و تكميل نمودن فرمها نسبت به سرعتهاي پردازنده و حافظه، زمان زيادي طول ميكشيد. چون چندان كاري جهت كاهش اين عمليات نميتوانستند انجام دهند، عملكرد سيستم از طريق تقسيم سرباز بين تعدادي برنامهها ممكن بود افزايش يابد، بويژه اگر چند برنامه به صورت دستهاي بر روي يك نوار ورودي منفرد جاي ميگرفتند تا عمليات ياد شده يكبار براي آن انجام ميگرفتند، سربار برنامه به همين ترتيب كاهش مييافت.
يك مفهوم مرتبط كه غالباً مرحلهبندي نام داشت، اين بود كه كارهاي ارائه شده از نو ترتيب مييافتند. به نحوي كه كارهاي مشابه در يك دسته قرار ميگرفتند. مثلاً با دستهبندي چند كار كامپايل فرترن توام با هم، كامپايلر فرترن ميتوانست تنها يكبار شود تا تمام آنها را در يك رديف پردازش نمايد.
براي پي بردن به استفاده بالقوه از منابع پردازش دستهاي يك دسته كار نصب شده ميبايست بدون دخالت كند انسان بطور خودكار اجرا ميگرديد. دستورالعملهايي بايد فراهم ميشد كه به سيستم عامل بگويد چگونه با هر كار منفرد برخورد نمايد. اين دستورالعملها معمولاً با استفاده از فرامين سيستم عامل كه در بطن حوي واره دستهاي نهفته ميشد، تامين ميگرديد. فرامين سيستم عامل، دستورهايي بودند كه به زبان كنترل كار يا JCL نوشته ميشدند.
فرامين JCL معمولاً حاوي علائم آغاز و پايان كار، فراميني جهت بارگذاري و اجراي برنامهها و فراميني جهت اعلام نيازمنديهاي منابع، نظير زمان اجراي مورد انتظار و نيازهاي حافظه بود. اين فرامين توام با برنامهها و دادههاي كاربر در بطن جوي واره كار جاي ميگرفت.
يك بخش سستم عامل دستهاي مقيم در حافظه كه غالباً ناظر دستهاي ناميده ميشد، اين فرامين را ميخواند و تفسير ميكرد و اجرا مينمود. در پاسخ به آنها كارهاي دستهاي، هربار يكي اجرا ميشدند. هركار شامل چندگاه بود و هر كدام معمولاً دربر گيرنده بارگذاري و اجراي برنامه بود. به عنوان مثال، يك كار ممكن بود شامل كامپايل كردن و اجراي بعدي برنامه يك كاربر باشد. هرگام خاصي كه بايد طي شود، با بهرهگيري از فرمان مناسبي به ناظر خاطرنشان ميگرديد، هنگامي كه ناظر با فرمان LOB_END مواجه ميشد، ممكن بود به دنبال بكار ديگري كه با فرمان JOB_START مشخص ميگرديد، به گردد.
يك ناظر دستهاي، علاوه بر باركننده و روالهاي متداول ورودي / خروجي حاوي مفسر زبان فرمان بود كه قادر به تشخيص و پردازش مجموعهاي از فرامين نظير RUN, LOAD بود.
با كاهش و حذف دورههاي عطالت يا بيكاري مولفه كه ناشي از عمليات كند دستي بود، پردازش دستهاي شامل پتانسيل بيشتري جهت استفاده منابع سيستمي و توان عملياتي افزوده شده را عرضه ميداشت تا پردازش سريالي ساده، بويژه در سيستمهاي كامپيوتري كه به چند كاربر خدمات عرضه ميداشتند.
تا آنجا كه به ساخت برنامه مربوط ميشد، پردازش دستهاي چندان پيشترفت بيشتري نسبت به پردازش سريالي ساده نبود. زمان برگشت كه عبارت بود از زمان نحويل كار به ماشين تا زمان دريافت خروجي از ماشين در سيستمهاي دستهاي طولاني بود. مرحلهبندي ممكن بود زمان برگشت را افزايش دهد، زيرا مدت زمان انتظار جهت نصب شدن يك دسته كار كامل به آن افزوده ميشد.
علاوه بر آن، برنامهنويسان مجبور بودند به صورت برون خطي با استفاده از روبرداري حافظه برنامههايشان را غلطگيري يا اشكالزدايي نمايند كه با حالتي كه هنگام كشف خرابي ميتوان ماشين را بلافاصله مورد بررسي قرار داد، در تضاد بود.
با ترتيبدهي اجراي برنامه كه قسمت اعظم آن با استفاده از سيستمهاي عامل دستهاي به صورت خودكار درآمده بود، اختلاف سرعت بين پردازندههاي سريع و دستگاههاي ورودي خروجي نسبتاً كند، نظير كارتخوانها و چاپگرها يك مانع عملكردي عمدهاي را پديد آورده بودند. پيشرفتهاي بيشتري در پردازش دستهاي عمدتاً در راستاي افزايش توان عملياتي و استفاده منابع از طريق همپوشي عمليات ورودي / خروجي بود. اين پيشرفتها همزمان با معرفي مجاري يا كانالهاي دستيابي مستقيم به حافظه، كنترل كنندههاي جانبي و پردزندههاي ورودي و خروجي تخصيص يافته بود.
خودگرداني و هوشمندي افزوده شده زير سيستمهاي ورودي / خروجي همپوشي اجراي برنامه را با عمليات ورودي / خروجي از سوي برنامههاي ديگر امكانپذير ساخت. به عنوان مثال، بخشي از حافظه اصلي ممكن بود جهت بافرينگ يا ميانگيري ورودي / خروجي كنار گذاشته شود. در طول اجراي برنامه بخش ورودي / خروجي ممكن بود همزمان كارتهاي ورودي كار بعدي را بخواند و به بافر با حافظه ميانگير منتقل سازد. هنگامي كه آن كار در مرحله بعدي جهت اجرا زمانبندي ميشد، پردازنده ميتوانست هم سرعت با حافظه اصلي وروديش را دريافت دارد كه با ورودي كند كارتخوان در تضاد بود. بطور مشابه خروجي ممكن بود به حافظه ميانگير خروجي انتقال يابد و همزمان با اجراي كار بعدي چاپ شود.
شكلهاي پيچيدهتر بافرينگ ورودي / خروجي كه اسپول ناميده ميشد، از ديسكها جهت ذخيرهسازي موقت ورودي/ خروجي كار استفاده مينمود. عمليات كار ديسك جهت برنامه بعدي و ديسك به چاپگر جهت برنامه قبلي با بهرهگيري از ناظر اسپولينگ همزمان با اجراي برنامه جاري انجام ميگرفتند.
براي حفظ ميزان استفاده بالاي پردازنده، لازم ميشد كه ورودي / خروجي چند كار به صورت صف بر روي ديسك ذخيره شوند. به واسطه توانايي اسپولينگ در افزايش نرخ انتقال موثر ورودي / خروجي در زمان اجراي برنامه گونههايي از آن در انواع سيستمهاي عامل ديگر نيز حضور يافتند.
بسياري از سيستمهاي عامل تككاربره جهت كامپيوترهاي شخصي اساساً جهت پردازش سريالي مهيا ميگرديدند. برنامههاي كاربر معمولاً در پاسخ به فرامين تايپ شده كاربر از ميز فرمان بر حافظه بار ميشدند و اجرا ميگرديدند و يك سيستم مديريت فايل غالباً جهت ذخيرهسازي برنامه و دادهها فراهم ميگرديد. با استفاده از فايلهاي حاوي فراميني به سيستم عامل كه بطور پيدرپي اجرا ميشدند، شكلي از پردازش دستهاي ميسر گرديد. فايلهاي فرامين اساساً جهت خودكار نمودن مشخصات انفرادي پيچيده و تواليهاي عملياتي عمليات مكرر مورد استفاده قرار ميگرفتند.
تكامل سيستم عاملهاي جديد
در طي سالهاي گذشته، ساختار و قابليت سيستم عامل به تدريج تكامل يافت. اما در سالهاي اخير عناصر طراحي جديد در سيستمهاي عامل نوين و نسخههاي جديد سيستمهاي عامل موجود معرفي شدند كه ماهيت سيستمها عامل را تغيير دادند. اين سيستمهاي عامل، به توسعههاي جديد در سختافزار و كاربردهاي جديد پاسخ ميدهند. مهمترين توسعههاي سختافزار عبارتند از: ماشينهاي چندپردازنداي، افزايش سرعت ماشينها، اتصال به شبكههاي سريع، افزايش اندازه و تنوع دستگاههاي ذخيرهسازي. در طيف كاربردهاي چندرسانهاي، دستيابي به وب و اينترنت و محاسبات مشتري – كارگزار در طراحي سيستم عامل موثر بودهاند.
ميزان تغيير درخواستها در سيستم عامل، نه تنها مستلزم اصلاحات و پيشرفتهايي در معماريهاي موجود بود، بلكه مستلزم روشهاي جديدي براي سازماندهي سيستم عامل است. گسترهي وسيعي از روشها و عناصر طراحي در سيستمهاي عامل آزمايشي و تجاري به كار گرفته شدند، اما اغلب اين كارها را ميتوان به صورت زير دستهبندي كرد:
- معماري ريز هسته
- چند نخي
- چندپردازشي متقارن
- سيستمهاي عامل توزيعي
- طراحي شي گرا
تا كنون، اغلب سيستمهاي عامل شامل هسته يكپارچه و بزرگي بودند. اغلب وظايف سيستم عامل مثل زمانبندي، سيستم فايل، شبكهبندي، گردانندههاي دستگاه، مديريت حافظه و غيره در اين هسته بزرگ انجام ميشدند. معمولاً هسته يكپارچه به صورت فرآيند واحدي پيادهسازي ميشود، به طوري كه تمام عناصر از فضاي آدرس مشتركي استفاده كنند. معماري ريز هسته فقط وظايف اساسي مثل فضاهاي آدرس، ارتباطات بين فرآيندها (IPC) و زمانبندي پايهاي را به هسته واگذار ميكند. ساير خدمات سيستم عامل، توسط فرآيندهايي كه گاهي كارگزار ناميده ميشوند، ارائه ميگردند. اين فرآيندها در حالت كاربر اجرا ميشوند و ريزهسته با آنها مثل ساير كاربردها رفتار ميكنند. در اين روش، پيوستگي توسعه هسته و كارگزار از بين ميرود. كارگزاران، ممكن است براي كاربرد با محيط خاصي درنظر گرفته شوند. روش ريز هسته، پيادهسازي را آسان ميكند، قابليت انعطاف را فراهم ميكند و براي محيط توزيعي مناسب است. در واقع، ريزهسته با فرآيندهاي محلي و راه دور با روش يكساني تعامل دارد. به اين ترتيب، ساخت سيستمهاي توزيعي آسان ميشود.
در چندنخي، فرآيندي كه كاربردي را اجرا ميكند، به نخهايي تقسيم ميشود كه ميتوانند همزمان اجرا شوند. نخها و فرآيندها به صورت زير متمايز ميشوند:
- نخ يك واحد كار قابل توزيع است. شامل بستر پردازنده (شمارنده برنامه و اشارهگر پشته) و ناحيه داده پشته (براي فراخواني زير روال) است. نخ به صورت ترتيبي اجرا ميشود و وقفهپذير است، بطوري كه پردازنده ميتواند اجراي نخي را به تعويق اندازد و به نخ ديگري بپردازد.
- فرآيند مجموعهاي از يك يا چند نخ و منابع وابسته به سيستم (مثل حافظهي حاوي دستورالعملها و دادهها، فايلهاي باز و دستگاهها) است. اين مفهوم خيلي نرديك به مفهوم برنامهي در حال اجرا است. با تقسيم يك برنامه كاربردي به چند نخ، برنامهنويس ميتواند بر مولفهاي بودن برنامه كاربردي و زمانبندي رويدادهاي مربوطه به برنامه كاربردي، كنترل دقيقي داشته باشد.
چندنخي براي كاربردهايي مهم است كه چندين كار اساسي مستقل را انجام ميدهند و لازم نيست به ترتيب اجرا شوند. نمونهاي از آن، كارگزار بانك اطلاعاتي است كه به درخواستهاي مشتريان گوش ميكند تا آنها را پردازش نمايد. وقتي چندين نخ در يك فرآيند اجرا ميشوند، سربار ناشي از رفتن از نخي به نخ ديگر، كمتر از رفتن از فرآيندي به فرآيند ديگر است. نخها همچنين براي سازماندهي فرآيندهايي كه بخشي از هسته سيستم عامل هستند، مفيد است.
تا كنون، تمام كامپيوترهاي تككاربره و ايستگاههاي كاري فقط يك ريزپردازنده همه منظوره داشتند. با افزايش درخواست كارايي بيشتر و كاهش مداوم قيمت ريزپردازندهها، عرضهكنندگان كامپيوترهايي را عرضه كردند كه چندين ريزپردازنده داشتند. براي دستيابي به كارايي و قابليت انعطاف بيشتر ميتوان از روش چندپردازشي متقارن (SMP) استفاده كرد.
منظور از SMP، معماري سختافزار كامپيوتر و رفتاري از سيستم عامل است كه آن معماري را منعكس ميكند. چندپردازشي متقارن را ميتوان به عنوان يك سيستم كامپيوتري مستقل با ويژگيهاي زير تعريف كرد:
- چندين پردازنده وجود دارد.
- اين پردازندهها، از حافظه اصلي و امكانات I/O استفاده ميكنند كه بوسيله گذردهي ارتباطي يا ساير روشهاي اتصال داخلي به هم متصلاند.
- تمام پردازندهها ميتوانند اعمال يكساني را انجام دهند. (به هين دليل از واژه متقارن استفاده ميشود)
سيستمهاي عامل SMP، فرآيندها يا نخها را براي تمام پردازندهها زمانبندي ميكنند. SMP نسبت به معماري تكپردازهاي امتيازاتي دارد كه بعضي از آنها عبارتند از:
- كارايي اگر بتوان كاري را كه توسط كامپيوتر انجام ميشود، طوري سازماندهي كرد كه بخشهايي از آن كار به طور موازي انجام شوند، كارايي سيستم چندپردازندهاي نسبت به سيستم تك پردازندهاي بيشتر است. در چندبرنامهاي، در هر زمان فقط يك فرآيند ميتواند اجرا شود، در حاليكه بقيه فرآيندها، منتظر استفاده از پردازندهاند. در چندپردازشي، همزمان چندفرآيند ميتوانند اجرا شوند، بطوريكه هر پردازنده يك فرآيند را اجرا ميكند.
- قابليت دسترسي در چندپردازشي متقارن، چون تمام پردازندهها ميتوانند وظايف يكساني را انجام دهند، از كار افتادن يك پردازنده منجر به توقف ماشين نميشود. به هر حال، سيستم ميتواند با كارايي كمتر به كارش ادامه دهد.
- رشد فزاينده كاربر ميتواند با افزودن پردازندههاي ديگر به سيستم، كارايي را افزايش دهد.
- مقياسپذيري عرضهكنندگان ميتوانند بر اساس تعداد پردازندههاي موجود در سيستم گسترهاي از محصولات را با قيمتها و كاراييهاي مختلف ارائه كنند.
توجه به اين نكته مهم است كه اين امتيازات بالقوهاند، نه تضميني. سيستم عامل بايد ابزارها و عملكردهايي را ارائه كند تا از خاصيت اجراي موازي در سيستم SMP استفاده نمايد.
چندنخي و SMP غالباً با هم بحث ميشوند، اما امكانات مستقلياند، حتي در ماشين تك پردازندهاي، چندنخي براي سازماندهي كاربردها و فرآيندهاي هسته مفيد است. ماشين SMP براي فرآيندهاي فاقد نخ مفيد است، زيرا فرآيندهاي متعددي ميتوانند به طور موازي اجرا شوند. اين دو امكان، مكمل يكديگر بوده، به طور كارآمد با يكديگر بكار ميروند.
ويژگي جالب SMP، اين است كه وجود چندپردازنده از ديد كاربرد مخفي است. سيستم عامل، زمانبندي فرآيندها و نخها را در هر يك از پردازندهها و همگامي بين پردازندهها را انجام ميدهد. مساله ديگر، ارائه سيستم ظاهراً واحد براي خوشهاي از كامپيوترهاي مجزا (سيستم چندكامپيوتري) است. در اين مورد، با كنترل نهادها (كامپيوترها) سر و كار داريم كه هر كدام حافظه اصلي، حافظه جانبي و قطعات I/O خاص خودشان را دارند.
سيستم عامل توزيعي، تضور فضاي حافظه اصلي واحد و فضاي حافظه ثانويه واحد و ساير امكانات دستيابي يكنواخت، مثل سيستم فايل توزيعي را بوجود ميآرود. گرچه خوشهها به طور فزايندهاي عموميت پيدا ميكنند و محصولات خوشهاي فراواني در بازار وجود دارند، ولي سيستم عامل توزيعي نسبت به سيستمهاي عامل ديگر تك پردازندهاي و SMP عقب است.
جديدترين نوآوري در طراحي سيستم عامل، استفاده از فنآوري شيگرا است. طراحي شيگرا، نظامي را به روند افزودن مولفهها به هسته كوچك اعمال ميكند. در سطح سيستم عامل، برنامهنويسان با استفاده از ساختار مبتني بر شي ميتوانند بدون تخريب جامعيت سيستم عامل، آن را سفارشي كنند. شيگرايي، توسعه ابزارهاي توزيعي و سيستمهاي عامل كاملاً توزيعي را ممكن ميسازد.
خلاصه
سیستم عامل معمولا اولین برنامههای است که پس از بوت شدن در حافظه بار میشود. پس از بار شدن قسمتی از سیستم عامل بطور دائم در حافظه باقی (Resident) میماند. قسمتهای دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده میشود.
به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام میدهد هسته یا Kernel گفته میشود. هسته سیستم عامل برنامهای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست.
سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر داشتهاند. یعنی جهت سهولت کار با سخت افزارهای جدید، سیستم عاملها توسعه یافتند و همچنین در اثنای طراحی سیستم عاملها، مشخص شد که تغییراتی در طراحی سختافزار میتواند سیستم عاملها را سادهتر و کارآمدتر سازد.
تطابق تكنيكهاي سيستم عامل با نسلهاي كامپيوتر
1 .2- سيستمعاي عامل دستهاي
2 .2- سيستمهاي بلادرنگ
3 .2- سيستمهاي خوشهاي
4 .2- سيستمهاي توزيع شده
5 .2- سيستمهاي عامل تركيبي
6 .2- سيستمهاي خاص – منظور پردازش تراكنشها
سيستمعاي عامل دستهاي
بطور كلي پردازش دستهاي نياز به آن دارد كه برنامه، دادهها و فرامين سيستمي مناسب توام با هم در قالب يك كار عرضه گردند. سيستمهاي عامل معمولاً اجازه تعامل كم مابين كاربران و برنامههاي در حال اجرا را ميدهند و يا هيچ تعاملي وجود نخواهد داشت. پردازش دستهاي جهت بهرهوري منابع در سيستمهاي كامپيوتري كه به چند كاربر، خدماتي ارائه ميدهند، نسبت به پردازش سريالي ساده از پتانسيل بيشتري برخوردار ميباشند. پردازش دستهاي به علت تاخيرهاي برگشتي و اشكالزدايي برونخطي جهت ساخت برنامه خيلي راحت نيست.
برنامههايي كه نياز به تعامل ندارند و برنامههايي كه زمانهاي اجراي آنها طولاني ميباشند، ممكن است به خوبي توسط سيستم عامل دستهاي سرويس داده شوند. نمونههايي از چنين برنامههايي، برنامههاي حقوق، پيشبينيها، تجزيه و تحليل آماري و علمي ميباشند. پردازش سريالي تركيب شده با فايلهاي فرامين دسته گونه نيز در بسياري از كامپيوترهاي شخصي يافت ميشوند.
زمانبندي در سيستمهاي دستهاي خيلي ساده است .كارها معمولاً به ترتيب ارائه به سيستم پزدازش ميشوند، يعني به اولين كار وارد شده قبل از همه سرويس داده ميشود.
مديريت حافظه در سيستمهاي دستهاي نيز خيلي ساده است. حافظه معمولاً به دو ناحيه تقسيم ميشود. يك ناحيه بطور دائمي توسط بخش مقيم سيستم عامل اشغال ميگردد و ناحيه ديگر، جهت بارگذاري برنامههاي موقتي براي اجرا مورد استفاده قرار ميگيرد. هنگامي كه اجراي برنامه موقتي خاتمه مييابد. برنامه جديدي بر همان ناحيه از حافظه بار ميشود.
در سيستمهاي دستهاي، به علت اينكه در هر زمان بيش از يك برنامه در حال اجرا نيست، به مديريت دستگاههاي حساس نسبت به زمان نياز نيست. بدينلحاظ بسياري از سيستمهاي عامل سريالي و دستهاي عادي از روش ساده برنامه كنترل شده ورودي / خروجي بهره ميگيرند. عدم وجود درگيري جهت دستگاههاي ورودي / خروجي، تخصيص و آزادسازي يا بازسازي آنها را آسان ميسازد.
سيستمهاي دستهاي غالباً شكلهاي سادهاي از مديريت فايل را تامين مينمايند. چون دستيابي به فايل نيز به صورت ترتيبي است. حفاظت كمي جهت دستيابي به فايل لازم است و هيچگونه كنترل همزماني جهت دستيابي به فايل لازم نيست.
سيستمهاي بلادرنگ
مهمترين كاربرد سيستمهاي بلادرنگ در رابطه با عمليات كنترل پردازش است. خاصيت مهم سيستمهاي بلادرنگ اين است كه هر فعل و انفعال با كامپيوتر بايستي يك پاسخ در مدت زماني كه از قبل تعيين شده باشد ، دريافت دارد. سيستم بايستي بتواند اين زمان پاسخ را گارانتي كند (عواقب زمان پاسخ بد در رابطه با سيستمي كه يك هواپيما و يا يك كارخانه شيميايي را كنترل ميكند، را ميتوان براحتي تصور نمود).
مساله زمان پاسخ در عمل بدينمعنا است كه معمولاً نرمافزار بصورت خاص ـ منظور است و به كاربرد بخصوصي اختصاص يافته است. دستگاههاي جنبي چنين سيستمهايي نيز به احتمال قوي، دستگاههاي بخصوصي هستند. مثلاً ممكن است كه از وسايل حسكننده كه با سيگنالهاي آنالوگ عمل ميكنند، بجاي ترمينالهاي عادي استفاده شود.
سيستمهاي خوشهاي
همانند طرح توازن، سيستمهاي خوشهاي، از چند پردازنده براي انجام كارهاي محاسباتي استفاده ميكنند. تفاوت سيستمهاي خوشهاي و موازي اين است كه سيستمهاي خوشهاي از دو يا چند سيستم مجزا تشكيل شدهاند كه به هم متصلاند، واژه خوشهاي دقيق نيست. تعريف پذيرفته شده در مورد سيستمهاي خوشهاي اين است كه كامپيوترهاي خوشهاي حافظه ذخيرهسازي مشتركي دارند و از طريق شبكه محلي به طور ضعيف با هم ارتباط دارند.
خوشهبندي اجرا ميشود تا قابليت مهيابودن افزايش يابد. لايهاي از نرمافزار خوشهاي در گرههاي خوشهاي اجرا ميشود. هر گره ميتواند يك يا چند گره ديگر را نظارت كند. (از طريق LAN) اگر ماشين نظارت شده خراب شود، ماشين ناظر ميتواند حافظهاي را در اختيار گيرد و برنامهاي را كه در آنجا در حال اجرا بود، از سر گيرد. ماشين خراب ميتواند به همين حالت باقي بماند، اما خدماتي كه به كاربران يا مشتريان داده ميشود، دچار وقفه ميگردد.
در خوشهبندي نامتقارن، يك ماشين در حالت معوق است، در حاليكه بقيه در حال اجراي برنامهاند. ميزبان معوق (ماشين) كاري انجام نميدهد، بلكه كارگزار فعال را نظارت ميكند. اگر آن كارگزار با شكست مواجه شود، ميزبان معوق به عنوان كارگزار فعال محسوب ميشود. در حالت متقارن، دو يا چند ميزبان برنامه را اجرا ميكنند و همديگر را نظارت ميكنند. اين حالت، كارآمدتر است، زيرا از سختافزار به خوبي استفاده ميكند. لازم است چند برنامه در حال اجرا باشد.
شكلهاي ديگر از خوشهبندي، عبارتند از خوشههاي موازي و خوشهبندي در سطح WAN. خوشههاي موازي اجازه ميدهد تا چندين ميزبان به دادههاي مشابه موجود در حافظه مشترك دستيابي داشته باشند. چون اغلب سيستمهاي عامل اين كار را انجام نميدهد. معمولاً خوشههاي موازي توسط نسخههايي از نرمافزار بكار گرفته ميشوند. به عنوان مثال، كارگزار موازي اوراكل، نسخهاي از بانك اطلاعاتي اوراكل است كه براي اجرا در خوشه موازي طراحي شد. هر ماشيني اوراكل را اجرا ميكند و لايهاي از نرمافزار به ديسك مشترك دسترسي دارد. هر ماشين به تمام دادههاي موجود در بانك اطلاعاتي دسترسي دارد.
عليرغم بهبود در محاسبات توزيعي، اغلب سيستمها، سيستم قابل توزيعي همه منظوره را فراهم نميكنند. لذا اغلب خوشهها اجازه دستيابي مشترك به دادههاي ديسك را نميدهند. به همين دليل، سيستمهاي قابل توزيعي بايد كنترل دستيابي و قفل كردن به فايل را فراهم كند تا عمليات با هم متضاد نباشند. اين نوع خدمات را مدير قفل توزيعي (DLM) مينامند.
فناوري خوشهاي به سرعت در حال تغيير است. كاربرد و ويژگيهاي سيستم خوشهاي بايد به عنوان شبكههاي ناحيه حافظه (SAN) گسترش يابد. SAN اجازه ميدهد تا چندين ميزبان به چندين واحد حافظه وصل شوند. خوشههاي فعلي محدود به دو يا چهار ميزبان هستند. علتش اين است كه اتصال ميزبانها به حافظه پيچيده است.
سيستمهاي توزيع شده
در اين سيستمها، اجراي كارها بين چندين پردازنده، توزيع ميشود. سيستمهاي توزيع شده در دو دسته قرار ميگيرند:
سيستمهاي با ارتباط محكم
در اين سيستمها پردازندهها داراي پالس ساعت يكسان و حافظه مشترك هستند. اجراي كار در آنها مشكل بوده، ولي سرعت اجراي آنها بالاست.
سيستمهاي با ارتباط سست
در اين سيستمها، تعدادي پردازنده با خطوط ارتباطي مناسب وجود دارد و هر پردازنده داراي پالس سرعت و حافظه مستقل است و سرعت اجرا پايين ميباشد.
سيستمهاي توزيع شده به دليل افزايش سرعت اجرا، شتراك منابع، افزايش قابليت اطمينان و ايجاد ارتباط بين سيستمهاي مختلف، مورد استفاده قرار ميگيرند.
سيستمهاي عامل تركيبي
انواع مختلف سيستمهاي عامل بهينه ميشوند يا حداقل به ميزان زيادي در راستاي تامين نيازهاي محيطهاي خاص شكل ميگيرند. با اين وجود، در عمل يك محيط معيني ممكن است دقيقاً با هر يك از مدلهاي شرح داده شده تطبيق نكند.
به عنوان نمونه در مراكز محاسباتي دانشگاهي با ساخت برنامههاي محاورهاي و شبيهسازيهاي طولاني مواجه هستند. بدينلحاظ بعضي از سيستمهاي عامل تجاري تركيبي از خدمات شرح داده شده را تامين مينمايند. به عنوان مثال يك سيستم زماني شركتي ممكن است از كاربران محاورهاي پشتيباني نمايد و همچنين يك ناظر دستهاي كامل را در بر داشته باشد. اين ويژگي اجازه اجراي همزمان برنامههاي غيرمحاورهاي با محاسبات زياد را همراه با برنامههاي محاورهاي ميدهد.
روش متداول اين است كه اوليت پايين به كارهاي دستهاي تخصيص يابد و بدينترتيب برنامههاي دستهاي را تنها زماني كه پردازنده عاطل يا بيكار است، اجرا نمايد. به بياني ديگر، كار دستهاي به عنوان پركننده زمان عاطلي است تا بهرهوري پردازنده را مادامي كه سرويس مفيدي مخصوص به خود را عرضه ميدارد، بهبود بخشد. بطور مشابه بعضي از رويدادهاي حساس به زمان نظير دريافت و انتقال بستههاي دادههاي شبكهاي به روش بلادرنگ در سيستمهايي انجام ميگيرند كه در غير اينصورت خدمات زمان شركتي به كاربران پايانههايشان عرضه ميدارند.
سيستمهاي خاص – منظور پردازش تراكنشها
سيستمي كه در رزرواسيون شركتهاي هواپيمايي بكار ميآيد، نمونهاي از اين نوع سيستم است. در اينجا، استفادهگنندگان با بستههاي نرمافزاري كه از قبل نوشته شدهاند، تماس برقرار ميكنند تا مثلاً معاملاتي را در سيستم وارد كنند و يا اينكه از بانك اطلاعات، سوالاتي بكنند. بنابراين اين نوع معاملات نسبتاً محدود است. باز هم، سيستم بايستي يك زمان پاسخ منطقي را بتوان گارانتي بكند (بخصوص اگر شركت هوايي بخواهد كه مشتريانش را حفظ كند!)، ليكن مساله زمان پاسخ در اين سيستمها به حادي اين مساله در سيستمهاي بلادرنگ نيست.
خلاصه
در فصل دوم، براي فهم بهتر سيستم عامل، انواع سيستمها توضيح داده شد كه به خلاصهاي از آن ميپردازيم.
سيستمهاي بلادرنگ عبارتند از: سيستمهايي كه در كاربردهاي خاص بايد حداكثر مدت زمان مشخص، سرويسدهي لازم را انجام دهند. به دليل نياز به پاسخ زماني مناسب، در اين سيستمها از حافظههاي مجازي و اشتراك زماني استفاده نميشود.
سيستمهاي خوشهاي: از اين نوع سيستم براي انجام كارهاي محاسباتي استفاده ميشود كه شامل دو نوع متقارن و نامتقاران ميباشد.
سيستمهاي توزيع شده: در اين سيستمها، اجراي كارها بين چندين پردازنده، توزيع ميشود. سيستمهاي توزيع شده در دو دسته قرار ميگيرند:
- سيستمهاي با ارتباط محكم
- سيستمهاي با ارتباط سست
سيستمهاي خاص: در اين نوع سيستمها، استفاده كنندگان با سيستمهاي نرمافزاري كه از قبل نوشته شدهاند، تماس برقرار ميكنند تا مثلاً معاملاتي را در سيستم وارد كنند و يا اينكه از بانك اطلاعاتي سوالاتي بكنند.
سيستمهاي تركيبي: انوع مختلف سيستمهاي عامل بهينه ميشود يا حداقل به ميزان زيادي در راستاي تامين نيازهاي محيطهاي خاص شكل ميگيرند. با اين وجود، در عمل يك محيط معيني ممكن است دقيقاً با هر يك از مدلهاي شرح داده ده، تطبيق نكند. بدينلحاظ، بعضي از سيستمهاي عامل تجارتي، تركيبي از خدمات شرح داده شده را تامين مينمايد.
مديريت حافظه
1 .3- نيازهاي مديريت حافظه
2 .3- مولفه مديريت حافظهي اصلي
3 .3- مولفه مديريت حافظهي جانبي
4 .3- حافظههاي ميانگير
5 .3- حفاظت از حافظه
6 .3- تخصيص حافظه
نيازهاي مديريت حافظه
هنگام بررسي راهكارها و خط مشهاي مربوط به مديريت حافظه، پرداختن به خواستههايي كه مديريت حافظه بايد برآورد كند، مفيد خواهد بود. پنج خواسته به شرح زير بيان ميگردد:
- جابجايي
- حفاظت
- اشتراك
- سازمان منطقي
- سازمان فيزيكي
جابجايي
در سيستم چند برنامهاي، حافظه اصلي موجود، بين تعدادي فرآيند مشترك است. معمولاً برنامهنويس نميتواند از قبل تشخيص دهد كه در زمان اجراي برنامه او، چه برنامههاي ديگري در حافظه اصلي مقيم خواهد بود. علاوه بر اين، ميخواهيم قادر به مبادلهي فرآيندهاي فعال به داخل و خارج از حافظه باشيم تا فرآيندهاي متعددي را آماده اجرا داشته باشيم و از اين طريق بهرهوري پردازنده به حداكثر برسد. اگر قرار باشد برنامهاي كه بر روي ديسك مبادله شد، هنگام برگشت به حافظه در همان محل قبلياش قرار گيرد، اين كار محدوديتهايي را بوجود ميآورد. به همين دليل، فرآيند ناحيه ديگري از حافظه جابجا ميشود.
بنابراين، از قبل نميدانيم كه برنامه در كجا قرار ميگيرد و بايد اجازه دهيم كه برنامه در اثر مبادله شدن، در محل ديگري از حافظه قرار گيرد. اين حقايق، بعضي از موضوعات تكنيكي را در مورد آدرسدهي بوجود ميآورند.
اين شكل، يك تصوير فرآيند را نشان ميدهد. براي سهولت، فرض ميكنيم تصوير فرآيند ناحيه پيوستهاي از حافظه را اشغال ميكند. بديهي است كه سيستم عامل بايد محل ذخيره اطلاعات كنترل فرآيند، پشته زمان اجرا و نقطه ورود برنامه براي اجراي آن فرآيند را بداند، چون سيستم عامل حافظه را مديريت ميكند و مسوول انتقال فرآيند به حافظهي اصلي است، به آساني ميتواند اين آدرسها را مشخص كند. علاوه بر اين، سيستم عامل بايد مراجعات به حافظه را در داخل برنامه اداره كند. دستورالعملهاي انشعاب حاوي آدرس براي مراجعه به دستورالعملي است كه بايد اجرا شود. دستورالعملهاي مراجعه به دادهها، حاوي آدرس بايت يا كلمهي مورد مراجعه است. سختافزار پردازنده و نرمافزار سيستم عامل بايد قادر باشد مراجعات به حافظه در كد برنامه را به آدرسهاي حافظه فيزيكي واقعي ترجمه كند.
حفاظت
هر فرآيند بايد در مقابل مراجعه ناخواستهي فرآيندهاي ديگر (چه به صورت تصادفي و چه عمدي) حفاطت شود. لذا، برنامههاي فرآيندهاي ديگر نبايد قادر باشند بدون مجوز به محلهاي حافظه فرآيندهاي ديگر مراجعه كنند و عمل خواند يا نوشتن را انجام دهند. از طرفي، برآورده كردن خواسته جابجايي، برآورده كردن خواسته حفاظت را دشوار ميسازد. چون محل برنامه در حافظه اصلي قابل پيشبيني نيست.
براي اطمينان از حفاظت نميتوان آدرس مطلق را در زمان ترجمه بررسي كرد. علاوه بر اين، اغلب زبانهاي برنامهنويسي امكان محاسبه پوياي آدرس را در زمان اجرا فراهم ميكنند. (مثلاً از طريق محاسبه انديس آرايه با اشارهگر به ساختمان داده). لذا تمام مراجعات به حافظه در يك فرآيند، بايد در زمان اجرا بررسي گردد تا اطمينان حاصل شود كه فقط به فضاي آدرس آن فرآيند مراجعه ميكنند.
معمولاً فرآيند كاربر نميتواند به هيچ بخشي از سيتم عامل، چه داده و چه برنامه دستيابي داشته باشد. علاوه بر اين، برنامهي يك فرآيند، نميتواند به دستورالعملي در فرآيند ديگر انشعاب كند. بدون مقررات خاص، برنامهي يك فرآيند نميتواند به دادههاي فرآيند ديگر دستيابي داشته باشد. پردازنده بايد قادر باشد اين دستورالعملها را در نقطه اجرا لغو كند.
توجه شود كه خواسته حفاظت از حافظه بايد توسط پردازنده (سختافزار) برآورده شود نه سيستم عامل (نرمافزار). علتش اين است كه سيستم عامل نميتواند تمام مراجعات برنامه به حافظه را پيشبيني كند، حتي اگر اين پيشبيني ممكن بود، بررسي قبلي برنامه براي نقض ارجاع به حافظه، بسيار وقتگير ميبود. بنابراين، مجازبودن ارجاع به حافظه (دستيابي به دادهها يا انشعاب) در زمان اجراي دستورالعملي مشخص ميشود كه مراجعه را انجام دهد. سختافزار پردازنده بايد قابليت انجام اين كار را داشته باشد.
اشتراك
هر راهكار حفاظتي بايد اين قابليت انعطاف را داشته باشد كه اجازه دهد چندين فرآيند به بخش يكساني از حافظه اصلي دستيابي داشته باشد. به عنوان مثال، اگر تعدادي از فرآيندها، برنامهاي را اجرا ميكنند، چنانچه هر فرآيند به كپي يكساني از برنامه دستيابي داشته باشد، بهتر از اين است كه هر كدام به كپي جداگانهاي دستيابي داشته باشد. ممكن است فرآيندهاي كه با همكاري يكديگر وظيفهاي را انجام ميدهند، به ساختمان داده مشتركي دستيابي داشته باشند. لذا، سيستم مديريت حافظه بايد با رعايت اصول حفاظتي، دستيابي كنترل شده به حافظه مشترك را اجازه دهد. خواهيم ديد كه راهكارهاي پشتيباني جابهجايي، از قابليتهاي اشتراك حافظه نيز پشتيباني ميكنند.
سازمان منطقي
معمولاً حافظه اصلي سيستم به صورت فضاي آدرس خطي با يك بعدي سازماندهي شده است و از دنبالهاي از بايتها يا كلمات تشكيل شده است. حافظه ثانويه در سطح فيزيكي خود به همين صورت سازماندهي شده است. گرچه اين سازمان با سختافزار ماشين واقعي سازگار است، ولي با روش ساخت برنامهها، سازگار نيست. اغلب برنامهها به صورت مولفهها سازماندهي ميشوند كه بعضي از آنها قابل تغيير نيستند. (فقط خواندني، فقط قابل اجرا) و بعضي ديگر حاوي دادههايي هستند كه قابل تغييراند. اگر سيستم عامل و سختافزار كامپيوتر بتوانند با برنامههاي كاربر و دادهها به شكل مولفهاي كار كنند، مزاياي زير حاصل ميشود:
- مولفهها ميتوانند به طور مستقل نوشته و ترجمه شوند، بطوريكه سيستم تمام مراجعهها از مولفهاي به مولفه ديگر را در زمان اجرا حل ميكند.
- با سربار كمي، ميتوان درجات مختلف حفاظتي را براي مولفههاي مختلف درنظر گرفت. (فقط خواندني و فقط اجرايي)
- ميتوان راهكارهايي را معرفي كرد كه مولفهها بين فرآيندهاي مختلف مشترك باشند. امتياز اشتراك در سطح مولفه اين است كه متناظر با ديدگاه كاربر نسبت به مساله است و كاربر ميتواند اشتراك مورد نياز را به آساني تغريف كند.
قطعهبندي ابزاري است كه اين خواستهها را برآورد ميكند.
سازمان فيزيكي
حافظه كامپيوتر حداقل در دو سطح حافظه اصلي و حافظه ثانويه سازمان دهي ميشود. حافظه اصلي دستيابي سريع و پرهزينهاي را ارائه ميدهد. علاوه بر اين، حافظه اصلي ناپايدار است. يعني، براي ذخيره دائمي بكار نميرود. حافظه ثانويه كندتر و ارزانتر از حافظه اصلي است و معمولاً پايدارتر است. لذا حافظه ثانويه با ظرفيت بالا ميتواند ذخيره بلندمدت دادهها و برنامهها بكار رود. حافظه اصلي براي نگهداري برنامه و دادههاي در حال استفاده بكار ميرود.
در اين طرح دو سطحي، سازماندهي جريان اطلاعات بين حافظه اصلي و ثانويه، موضوع مهم سيستم است. مسوليت اين جريان ميتواند به عهده برنامهنويس گذاشته شود، اما اين كار به دو دليل مطلوب و عملي نيست:
- ممكن است حافظه اصلي موجود، براي برنامه و دادههاي آن كافي نباشد. در اين حالت، برنامهنويس با موضوع روي همگذاري مواجه است. در اين روش، برنامه و دادهها طوري سازماندهي ميشوند كه يك ناحيه حافظه به مولفههاي مختلفي تخصيص مييابد و برنامه اصلي مسوول تعويض مولفهها به داخل و خارج حافظه بر حسب نياز است. حتي به كمك ابزارهاي سيستم عامل نيز برنامهنويسي جايابي وقت برنامهنويس را هدر ميدهد.
- در محيط چندبرنامهاي، برنامهنويس در هنگام نوشتن برنامه از ميزان فضاي موجود يا محل آن فضا خبر ندارد. بديهي است كه وظيفه انتقال اطلاعات بين دو سطح از حافظه بايد با مسووليت سيستم انجام شود. اين وظيفه، اساس مديريت حافظه است.
مولفه مديريت حافظه اصلي
حافظه اصلي يك محل موقتي را براي ذخيره دادهها و برنامهها جهت پردازنده تامين مينمايد. قبل از اجراي برنامهها، كليه برنامهها و دادها ميبايست از طريق دستگاه ورودي به حافظه اصلي كامپيوتر منتقل گردند. با نگرش به اينكه فضاي حافظه اصلي فوقالعاده باارزش است و به تمام كاربران تعلق دارد، بدين لحاظ بعد از اجراي هر برنامه، فضاي اشغال شده توسط برنامه مذكور به برنامه ديگري كه در انتظار اجراست، اختصاص داده ميشود. حافظه اصلي به صورت زير مورد استفاده قرار ميگيرد:
- دادهها به ناحيهاي از حافظه به نام ناحيه ذخيره و نگهداري ورودي وارد ميشود و تا هنگام پردازش در آن ناحيه نگهداري ميشوند.
- يك فضاي كاري ذخيره و نگهداري جهت نگهداري دادههاي در حال پردازش و نتايج بلافصل چنين پردازشي اختصاص مييابد.
- يك ناحيه ذخيره و نگهداري خروجي، نتايج حاصله از عمليات پردازشي را تا زمان رهايي آنها نگداري مينمايند.
- علاوه بر فضاهاي ياد شده كه به دادهها اختصاص مييابد، در حافظه اصلي يك ناحيه نيز به نام ناحيه ذخيره و نگهداري برنامه جهت ذخيره و نگهداري دستورالعملهاي برنامه اختصاص مييابد.
اداره حافظه اصلي به عهده مولفه مديريت حافظه اصلي در سيستم عامل ميباشد. در يك سيستم تك برنامهاي حافظه به دو بخش تقسيم ميشود. يك بخش آن به سيستم عامل اختصاص دارد كه به صورت مقيم در حافظه است و بخش ديگر به برنامه در حال اجرا تعلق دارد. در سيستم چند برنامهاي، بخش كاربر حافظه بايستي به بخشهاي ديگر تقسيم شود تا بتواند برنامههاي متعددي در خود جاي دهد. وظيفه تقسيمبندي حافظه به زيربخشها به گونهاي پويا توسط سيستم عامل انجام ميگيرد و چنين عملي مديريت حافظه نام دارد.
وجود يك مديريت حافظه كارا براي سيستم چندبرنامهاي جنبه حياتي دارد. چنانچه تنها چندبرنامه محدود در حافظه جاي گيرند، غالباً بعضي از برنامهها در انتظار ورودي / خروجي بسر ميبرند و بدينلحاظ پردازنده عاطل يا بيكار خواهد بود. بهتر آن است كه حافظه اصلي را به گونهاي تخصيص يابد كه برنامههاي بيشتري در آن تجمع يابند.
مولفه مديريت حافظه در راستاي انجام وظايفش بايد پاسخگوي نيازهاي زير باشد:
- سازمان منطقي
- سازمان فيزيكي
- حفاظت
- جابجايي
- اشتراك
وظايف مديريت حافظه كه بر عهده مولفهي مديريت حافظه سيستم عامل ميباشد، به شرح زير ميباشد:
- ثبت و نگهداري منبع (حافظه)، چه بخشهاي در حال استفاده هستند و توسط چه چيزي؟ و چه بخشهايي آزاد ميباشند؟
- در حالت عملكرد چند برنامهاي اتخاذ تصميم در مورد اينكه كدام يك از فرآيندها حافظه به دست آورند و چه زماني به دست ميآورند و به چه ميزاني نيازمند ميباشند؟
- تخصيص منبع (حافظه) هنگامي كه فرآيند ديگر به آن نياز ندارد يا خاتمه يافته است. مولفه مديريت حافظه اساساً با تخصيص حافظه فيزيكي با ظرفيت محدودي به فرآيندهاي درخواستي سروكار دارد. هيچ فرآيندي قبل از اينكه مقدار معيني از حافظه به آن تخصيص يابد، ممكن نيست فعال گردد. فرآيندهايي كه بطور موقتي غيرفعال ميگردند، به خارج از حافظه اصلي انتقال مييابند تا جا براي فرآيندهاي ديگر باز شود. فضاي خالي حاصله ميتواند جهت باركردن فرآيندهاي ديگر كه آماده اجرا ميباشند، مورد استفاده قرار گيرد. بهرهوري كمي منابع و ساير معيارهاي سيستم كامپيوتر تحت تاثير عملكرد مديريت حافظه قرار دارند و اين تاثيرپذيري نه تنها بر حسب ثمربخشي در تخصيص حافظه اصلي ميباشد، بلكه به عنوان يك نتيجه تاثيرش بر آن و تعامل با زمانبند مطرح ميباشد.
همزيستي فضاهاي آدرس چندگانه متعلق به فرآيندهاي مقيم در حافظه اصلي نياز به پشتيباني از دو نيازمندي متعارض با هم، يعني جداسازي فضاهاي آدرس و اشتراك حافظه را مطرح ميسازد. مدير حافظه بايد جداسازي فضاهاي آدرس متمايز را الزامآور سازد تا از يك دستيابي خطادار يا موذيانه به يك فرآيند فعال و احتمالاً تخريب محتويات فضاهاي آدرس ساير فرآيندها جلوگيري به عمل آورد.
مدير حافظه در يك محيط چندبرنامهاي بايد به طور همزمان از حفاظت حافظه از طريق جداسازي فضاهاي آدرس متمايز و سهيمبودن در حافظه هر دو پشتيباني نمايد تا اجازه دستيابي فرآيندهاي همكار را به محلهاي مشترك حافظه بدهد.
مولفه مديريت حافظهي جانبي
هدف اصلي يك سيستم كامپيوتري، اجراي برنامهها ميباشد. برنامهها و دادههاي همراه آنها به همانگونه كه در بخش قبلي بيان گرديد، در حافظه اصلي كامپيوتر جاي ميگيرند به علت اينكه حافظه اصلي جاي كافي براي تمام برنامهها و دادههاي آنها ندارند و علاوه بر آن به هنگام قطع برق و محتويات آن از بين ميرود، سيستم كامپيوتري از حافظه جانبي در پشتيباني از حافظه اصلي بهره ميگيرد. بسياري از سيستمهاي كامپيوتري مدرن از ديسكها به عنوان رسانه ذخيرهسازي كه نقش حافظه جانبي را برعهده دارد، بهره مي گيرند. اكثر برنامهها، از آن جمله كامپايلرها، مفسرها، اسمبلرها و نرمافزارهاي تسهيلاتي نظير مرتبكنندهها، ويرايشگرها و قالببندها بر روي ديسك ذخيره ميشوند يا به هنگام نياز بر حافظه اصلي بار شوند و ديسك را به عنوان مبدا و مقصد پردازش خود مورد استفاده قرار دهند. بدين ترتيب، سيستم عامل نيازي به مولفهاي دارد كه اداره حافظه جانبي را برعهده بگيرد.
يك سيستم عامل در ارتباط با مديريت ديسك، مسووليتهاي زير را برعهده دارد كه از طريق مولفه مديريت حافظه جانبي، جامه عمل ميپوشد.
- مديريت فضاي آزاد
- تخصيص فضاي ذخيرهسازي
- زمانبندي ديسك
حافظههاي ميانگير
در سادهترين روش، زمان لازم براي پردازشي يك كاراكتر عبارت است از:
زمان خروجي + زمان پردازش + زمان ورودي
كه در مثال ما براي هر خط برابر شد با:
ميليثانيه 410 = (200+10+100)
چنانچه مشاهده شد، اين عملكرد با بر روي هم قراردادن برخي از عمليات بهبود داده شد، مثلاً با خواندن كاراكتر بعدي پيش از آنكه حقيقتاً نيازي به آن باشد. در تحت اين شرايط، آهستهترين كار، از سه عمليات فوق تعيينكنندهي زمان پردازش يك كاراكتر يا خط بود.
يعني: (ماكزيمم زمان خروجي و زمان پردازش و زمان ورودي)
و يا در مثال ما: 200 ميليثانيه
برنامهها معمولاً بطورمنظم عمليات ورود و خروج و پردازش اطلاعات را انجام نميدهند و ممكن است در يك دوره تناوب طولاني برنامه فقط محاسبه كند، بدون اينكه عمليات ورودي و خروجي را انجام دهد. البته بهتر است دستگاههاي جنبي هميشه مشغول محاسبه نگاه داشته شوند، حتي در طي دورههاي تناوبي كه برنامه مشغول محاسبه است، اصولاً بهترين حالت وقتي است كه كاراكترها بطور يكنواخت از (وبه) دستگاههاي جنبي جريان دارند، هرچند كه برنامه ممكن است كاراكترهاي ورودي را بطور خيلي يكنواخت مصرف كند و يا بصورت نامنظم كاراكترهاي خروجي را توليد كند.
راه حل ارائه شده در رشته كامپيوتر براي يكنواخت كردن اختلافات بين عرضه و تقاضا، عبارت است از استفاده از يك حافظه ميانگير و يا بافر. يعني اينكه يك خط از اطلاعات ورودي ممكن است در حافظه انباشته شود، پيش از آنكه مورد نياز واقع شده باشد. هنگامي كه برنامه به اين خط احتياج دارد، ميتواند آن را با سرعتي متناسب با سرعت حافظه (و نه متناسب با سرعت دستگاه جنبي) پردازش كند.
البته بايد توجه داشت كه هنوز زمان اجراي برنامه توسط رابطه زير بيان ميشود:
(ماكزيمم زمان خروجي و زمان پردازش و زمان ورودي)
و در اينجا منظور پردازش يك خط كامل است.
همچنين بايستي توجه داشت كه اگر كارها يا خيلي input/output-Limited و يا خيلي CPU-Limited باشند. (يعني زمان پردازش >> زمان ورودي يا زمان ورودي>> زمان پردازش) در آن صورت زمان اجرا با بر روي هم قراردادن عمليات آنقدرها تغيير نميكند، زيرا:
زمان پردازش + زمان ورودي يا خروجي ≈ (ماكزيمم زمان پردازش و زمان ورودي يا خروجي)
حفاظت از حافظه
قبل از بحث در مورد تخصيص حافظه، بايد موضوع حفاظت از حافظه را مورد بحث قرار دهيم. منظور از حفاظت از حافظه، حفاظت سيستم عامل از فرآيندهاي كاربر و حفاظت فرآيندهاي كاربر از يكديگر است. ثبات جابجايي حاوي كوچكترين مقدار آدرس فيزيكي است و ثبات حد حاوي بازه آدرس منطقي است. (مثلاً جابجايي = 100040 و حد 74600) با ثبات جابجايي و حد هر آدرس منطقي بايد كمتر از ثبات حد باشد، MMU آدرس منطقي را با افزودن مقدار موجود در ثبات جابجايي به آن، به طور پويا به آدرس فيزيكي نگاشت ميكند. اين آدرس نگاشته شده به حافظه فرستاده ميشود.
وقتي زمانبند CPU فرآيندي را براي اجرا انتخاب ميكند، توزيعكننده، به عنوان بخشي از تعويض بستر، ثباتهاي جابجايي و حد را با مقادير مناسبي بار ميكند. چون هر آدرسي كه توسط CPU توليد ميشود، با اين ثباتها مورد بررسي قرار ميگيرد، ميتوانيم سيستم عامل، ساير برنامهها و دادههاي كاربر را در مقابل فرآيندي كه در حال اجرا است، حفاظت كنيم.
توجه شود كه الگوي ثبات جابجايي اجازه ميدهد كه اندازه سيستم عامل به طور پويا تغيير كند. اين قابليت انعطاف در بسياري از موارد مطلوب است. به عنوان مثال، سيستم عامل حاوي كد و ميانگيرهايي براي گردانندههاي دستگاه است. اگر يك گرداننده دستگاه (يا هر خدمات ديگري از سيستم عامل) به طور معمول مورد استفاده قرار نگيرد. مطلوب نيست كه كد و دادههاي آن در حافظه قرار گيرد، زيرا ميتوان از آن فضا براي اهداف ديگري استفاده كرد. اين كدها (كه به ندرت مورد استفاده قرار ميگيرند) كدگذاري سيستم عامل گويند. اين كدها در صورت لزوم به حافظه ميآيند و سپس حذف ميشوند. بنابراين با استفاده از اين كدها، اندازه سيستم عامل در زمان اجراي برنامه تغيير ميكند.
تخصيص حافظه
اكنون به تخصيص حافظه ميپردازيم. يكي از سادهترين الگوها، براي تخصيص حافظه اين است كه حافظه به چند قسمت با اندازه ثابت تقسيم شود و در هر قسمت يك فرآيند قرار گيرد. لذا درجه چندبرنامهاي توسط تعداد اين قسمتها محدود ميشود. اگر در اين روش چند قسمتي، يك قسمت از حافظه خالي باشد، فرآيندي از صف ورودي انتخاب شده، در آن قسمت خالي قرار ميگيرد. وقتي فرآيندي خاتمه مييابد، قسمتي از حافظه كه در اختيار آن است، آزاد ميشود و فرآيند ديگري ميتواند در آن قسمت قرار گيرد.
اين روش اولين در سيستم عامل OS/360 آي.ب.ام به كار گرفته شد كه نامش MFT بود. البته اين سيستم عامل فعلاً مورد استفاده قرار نميگيرد. روشي كه در ادامه بحث ميشود، يك شكل كلي از الگوي قسمتبندي با اندازه ثابت است كه MVT نام دارد و در محيط دستهاي مورد استفاده قرار ميگيرد. توجه شود كه بسياري از ايدههايي كه در اينجا مطرح ميشود، در محيط اشتراك زماني بكار گرفته شده است. در چنين محيطي، براي مديريت حافظه از تكنيك قطعهبندي استفاده ميشود.
سيستم عامل جدولي را تشكيل ميدهد كه مشخص ميكند چه قسمتهايي از حافظه آزاد و چه قسمتهايي اشغال هستند. در آغاز، كل حافظه براي فرآيندهاي كاربر مهيا است و به عنوان يك بلوك حافظه بزرگ به نام حفره درنظر گرفته ميشود. وقتي فرآيندي نياز به حافظه داشته باشد، يك حفره جستجو ميكنيم كه براي اين فرآيند كافي باشد. اگر چنين حافظهاي پيدا شد، حافظه مورد نياز آن فرآيند را تخصيص ميدهيم و بقيه را براي استفادهي بعدي نگهداري ميكنيم.
وقتي فرآيندها وارد سيستم ميشوند، در يك صف ورودي قرار ميگيرند. سيستم عامل خواستههاي حافظه مربوط به هر فرآيند و فضاي حافظه موجود را در نظر ميگيرد و مشخص ميكند كه به كدام فرآيندها، حافظه تخصيص دهد. دقتي به فرآيندي حافظه تخصيص مييابد، به حافظه بار ميشود و ميتواند براي زمان CPU رقابت كند. وقتي فرآيندي خاتمه مييابد. حافظهاش را آزاد ميكند و سيستم عامل ميتواند آن را به فرآيند ديگر موجود در صف ورودي اختصاص دهد.
در هر زمان، ليستي از اندازه بلوكهاي آزاد و صف ورودي را داريم. سيستم عامل صف ورودي را با استفاده از الگوريتم زمانبندي مرتب ميكند. حافظه تا زماني به فرآيندها تخصيص مييابد كه حافظه آزاد باقيمانده نتواند نيازمندي فرآيند بعدي را برآورده كند. يعني هيچ بلوكي از حافظهي موجود (حفره)، براي نگهداري فرآيند كافي نيست.
سيستم عامل ميتواند منتظر بماند تا يك بلوك حافظه به اندازه كافي آزاد شود يا در صف ورودي جستجو كند تا ببيند آيا فرآيندي وجود دارد كه نيازمندي حافظه آن كمتر باشد يا خير و در صورت وجود، آن را انتخاب نمايد.
به طور كلي، در هر زمان، مجموعهاي از حفرهها با اندازههاي مختلف در سراسر حافظه وجود دارد. وقتي فرآيندي از صف ورودي انتخاب ميشود و نياز به حافظه دارد، در اين مجموعه جستجو ميكنيم تا يك حفره به اندازه كافي پيدا كنيم. اگر اين حفره بزرگتر از حافظه مورد نياز براي فرآيند باشد، به دو بخش تقسيم ميشود: يك بخش به فرآيند تخصيص مييابد و بخش ديكر به اين مجموعه از حفرهها برميگردد. وقتي فرآيندي خاتمه مييابد، بلوك حافظه خود را آزاد ميكند تا به مجموعه حفرهها برگردد. اگر حفره جديد همجوار حفرههاي ديگري باشد، اين حفرههاي همجوار را ادغام ميكنيم تا حفره بزرگتري ايجاد شود. در اين نقطه، ممكن است لازم باشد بررسي كنيم آيا فرآيندهايي منتظر حافظهاند و آيا حافظه آزاد شدهاي كه ادغام شده است، ميتواند تقاضاهاي فرآيندهاي منتظر را برآورده كند يا خير.
اين رويه حالت خاصي از مساله تخصيص حافظه پوياست. راهحلهاي گوناگوني براي اين مساله وجود دارد. مجموعهاي از حفرهها جستجو ميشود تا مناسبترين حفره تخصيص يابد. متداولترين راهبردهايي كه براي انتخاب يك حفره آزاد از مجموعهاي از حفرهها بكار ميروند، عبارتند از: اولين جاي مناسب، بهترين جاي مناسب و بدترين جاي مناسب.
اولين جاي مناسب:
در اين روش، اولين حفرهاي كه بتواند به فرآيند تخصيص يابد، انتخاب ميشود. جستجو ميتواند ازابتداي مجموعهاي از حفرههاي آزاد انجام شود و يا ميتواند از جايي آغاز گردد كه جستجوي قبلي براي اولين جاي مناسب، در آنجا خاتمه يافته است. با يافتن اولين حفرهاي كه فضاي كافي براي فرآيند داشته باشد، جستجو خاتمه مييابد.
بهترين جاي مناسب:
در اين روش، كوچكترين حفرهاي كه بتواند فرآيند را در خود جاي دهد، تخصيص مييابد. اگر ليست بر حسب اندازه حفرهها مرتب نباشد، كل ليست بايد جستجو شود.
بدترين جاي مناسب:
در اين روش بزرگترين حفره انتخاب ميشود. اگر ليست بر حسب اندازه حفرهها مرتب نباشد، كل ليست بايد جستجو شود.
شبيهسازيها نشان داد كه روشهاي اولين جاي مناسب و بهترين جاي مناسب، از روش بدترين جاي مناسب بهتر است، بطوريكه بهرهوري حافظه افزايش مييابد و سرعت انتخاب نيز زيادتر است. هيچكدام از اين دو روش از نظر بهرهوري حافظه بر ديگري ترجيح ندارد، ولي روش بهترين جاي مناسب، سريعتر است.
اين الگوريتمها منجر به تكه تكه شدن خارجي ميشود. وقتي فرآيندها به حافظه بار ميشوند، و از حافظه حذف ميگردند، فضاي حافظه به تكههاي كوچكي تقسيم ميشود. تكهتكه شدن خارجي وقتي به مقدار زيادي از حفرههاي كوچك تقسيم شدهاند كه همجوار نيستند.
اين مساله تكه تكه شدن ميتواند جدي باشد. در بدتري حالت ميتوانيم بين هر دو فرآيند يك بلوك آزاد (به هدر رفته) داشته باشيم. اگر كل اين حافظه در يك بلوك آزاد بزرگ باشد، ممكن است بتوانيم چندين فرآيند را اجرا كنيم.
استفاده از روش اولين جاي مناسب به جاي بهترين جاي مناسب، بر ميزان تكه تكه شدن حافظه موثر است (براي بعضي از سيستمها روش اولين جاي مناسب و براي بعضي ديگر از سيستمها نيز روش بهترين جاي مناسب كاربرد بهتري دارد). عامل ديگر اين است كه كدام طرف بلوك آزاد تخصيص يابد. يعني وقتي بلوك آزاد به دو بخش تقسيم شد. بخش بالايي مورد استفاده قرار ميگيرد يا بخش پاييني؟ صرفنظر از الگوريتمي كه بكار گرفته ميشود مساله تكه تكه شدن خارجي وجود دارد.
بسته به ميزان كل حافظه و ميانگين اندازه فرآيندها، تكه تكه شدن خارجي ميتواند مساله مهم يا ناچيزي باشد. به عنوان مثال، تحليل آماري اولين جاي مناسب، نشان ميدهد كه حتي با بهينهسازي ممكن، به ازاي تخصيصي Nبلوك، 0/5N بلوك به دليل تكه تكه شده به هدر ميرود. يعني، يك سوم حافظه ممكن است به هدر رود. اين ويژگي را قاعده 50 درصد مينامند.
تكه تكه شده حافظه ميتواند داخلي باشد. الگوي تخصيص چند قسمتي را درنظر بگيريد كه حفرهاي به اندازه 18464 بايت دارد. فرض كنيد فرآيند بعدي به 18462 بايت نياز دارد. اگر دقيقاً بلوك درخواست شده را تخصيص دهيم، يك حفره 2 بايتي خالي ميماند. بديهي است كه هزينه نگهداري اين حفره گرانتر از خود حفره است. رهيافت كلي اين است كه حفرههاي خيلي كوچك به عنوان بخشي از درخواست مورد نظر منظور شود. بدينترتيب، حافظهاي كه تخصيص مييابد، ممكن است كمي بيش از حافظهي درخواستي باشد. تفاوت بين حافظه درخواستي و حافظه تخصيص يافته را تكه تكه شدن داخلي گويند. يعني حافظهاي كه در داخل يك قسمت از حافظه است، ولي مورد استفاده قرار نميگيرد.
يك راه حل براي مساله تكه تكه شدن خارجي، فشردهسازي است. در اين روش، حفرههاي كوچك با يكديگر ادغام ميشوند تا يك بلوك بزرگ از حافظه را ايجاد كنند. فشردهسازي هميشه ممكن نيست، اگر جابجايي به صورت ايستا باشد و در زمان اسمبل كردن يا در زمان باركردن انجام شود، فشردهسازي امكانپذير نيست. يعني فشردهسازي فقط وقتي ممكن است كه جابجايي به صورت پويا در زمان اجرا صورت گيرد.
اگر آدرسها به طور پويا جابجا شوند، جابجايي مستلزم اين است كه برنامه و دادهها به محل جديد منتقل شوند و سپس ثبات پايه تغيير كند تا آدرسهاي جديد تنظيم شود. وقتي فشردهسازي اين است كه تمام فرآيندها به يك طرف حافظه منتقل شوند، يعني تمام حفرهها به يك طرف ميروند تا حفره بزرگي از حافظهي آزاد را تشكيل دهند. اين الگو بسيار گران است.
راه حل ديگر مساله، تكه تكه شدن خارجي اين است كه اجازه دهيم فضاي آدرس منطقي فرآيند همجوار نباشد. بدينترتيب، هرجايي از حافظه فيزيكي كه آزاد شد، به فرآيند تخصيص يابد. دو تكنيك براي راه حل وجود دارد كه مكمل يكديگرند. صفحهبندي (قطعهبندي) اين تكنيكها ميتوانند با هم تركيب شوند.
خلاصه
سيستم عامل در رابطه با مديريت حافظه دو عمليات اساسی را انجام خواهد داد:
- هر پردازه به منظور اجراء میبايست دارای حافظهي مورد نياز و اختصاصی خود باشد.
- از انواع متفاوتی حافظه در سيستم استفاده تا هر پردازه قادر به اجرا با بالاترين سطح کارآئی باشد.
سيسمهای عامل در ابتدا میبايست محدودههای حافظه مورد نياز هر نوع نرمافزار و برنامههای خاص را فراهم نمايند. مثلاً فرض کنيد سيستمی دارای يک مگابايت حافظه اصلی باشد، سيستم عامل کامپيوتر فرضی ، نيازمند 300 کيلو بايت حافظه است. سيستم عامل در بخش انتهايی حافظه مستقر و به همراه خود درايورهای مورد نياز بمنظور کنترل سختافزار را نيز مستقر خواهد کرد. درايورهای مورد نظر به 200 کيلو بايت حافظه نياز خواهند داشت.
بنابراين پس از استقرار سيستم عامل بطور کامل در حافظه ، 500 کيلو بايت حافظه باقيمانده و از آن برای پردازش برنامههای کاربردی استفاده خواهد شد. زماني که برنامههای کاربردی در حافظه مستقر میگردند، سازماندهی آنها در حافظ بر اساس بلاکهايی خواهد بود که اندازه آنها توسط سيستم عامل مشخص خواهد شد. در صورتيکه اندازه هر بلاک 2 کيلوبايت باشد، هر يک از برنامههای کاربردی که در حافظه مستقر می گردند ، تعداد زيادی از بلاکهای فوق را (مضربی از دو خواهد بود)، بخود اختصاص خواهند داد.
برنامهها در بلاکهايی با طول ثابت مستقر میگردند. هر بلاک دارای محدودههای خاص خود بوده که توسط کلمات چهار و يا هشت بايت ايجاد خواهند شد. بلاکها و محدودههای فوق اين اطمينان را بوجود خواهند آورد که برنامهها در محدودههای متداخل مستقر نخواهند شد. پس از پر شدن فضای 500 کيلوبايت اختصاصی برای برنامههای کاربردی، وضعيت سيستم به چه صورت تبديل خواهد گرديد؟
در اغلب کامپيوترها، میتوان ظرفيت حافظه را ارتقا و افزايش داد. مثلاً می توان ميزان حافظه RAM موجود را از يک مگابايت به دو مگابايت ارتقاء داد. روش فوق يک راهکار فيزيکی برای افزايش حافظه بوده که در برخی موارد دارای چالشهای خاص خود میباشد. در اين زمينه میبايست راهکارهای ديگر نيز مورد بررسی قرار گيرند. اغلب اطلاعات ذخيره شده توسط برنامهها در حافظه، در تمام لحظات مورد نياز نخواهد نبود. پردازنده در هر لحظه قادر به دستيابی به يک محل خاص از حافظه است. بنابراين اکثر حجم حافظه در اغلب اوقات غيرقابل استفاده است. از طرف ديگر با توجه به اينکه فضای ذخيرهسازی حافظههای جانبی نظير ديسکها بمراتب ارزانتر نسبت به حافظه اصلی است، میتوان با استفاده از مکانيزمهايی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتاً بر روی هاردديسک ذخيره نمود. بدين ترتيب فضای حافظه اصلی آزاد و در زمانيکه به اطلاعات ذخيره شده بر روی هارد ديسک نياز باشد، مجدداً آنها را در حافظه مستقر کرد. روش فوق «مديريت حافظه مجازی» ناميده میشود.
حافظههای ذخيرهسازی ديسکی، يکی از انواع متفاوت حافظه موجود بوده که می بايست توسط سيستم عامل مديريت گردد. حافطههای با سرعت بالای Cache، حافظه اصلی و حافظههای جانبی نمونههای ديگر از حافظه بوده که توسط سيستم عامل مديريت گردند.
سیستم عامل به طور کلی نرمافزارهای کامپیوتر به دو گروه تقسیم میشوند:
یکی برنامههای سیستمی که عملیات کامپیوتر را مدیریت میکنند و دیگری برنامههای کاربردی. سیستم عامل (operating system=os) اصلیترین برنامه سیستمی است که به عنوان رابط بین کاربر و سختافزار کامپیوتر عمل میکند. سیستم عامل دو وظیفه (یا هدف) اصلی دارد:
- سیستم عامل استفاده از کامپیوتر را ساده میسازد. این بدان معناست که مثلاًکاربر یا برنامهنویس بدون درگیر شدن با مسائل سختافزاری دیسکها به راحتی فایلی را بر روی دیسک ذخیره و حذف کند. این کار در واقع با به کاربردن دستورات سادهای که فراخوانهای سیستمی (System Calls) را صدا میزنند انجام پذیرد. در صورت عدم وجود سیستم عامل کاربر و یا برنامهنویس میبایست آشنایی کاملی با سختافزارهای مختلف کامپیوتر (مثل مونیتور، فلاپی ، کیبورد و غیره) داشته باشد و روتینهایی برای خواندن و یا نوشتن آنها به زبانهای سطح پايین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته (Extended machine) یا ماشین مجازی (Virtual machine) یاد میشود که واقعیت سختافزار را از دید برنامهنویسان مخفی میسازد.
- وظیفه دوم سیستم عامل مدیریت منابع (Resource Management) میباشد، یعنی سیستم عامل باعث استفاده بهینه و سودمند (اقتصادی) از منابع سیستم میگردد. منظور از منابع پردازندهها، حافظهها، دیسکها، ماوسها، چاپگرها، فایلها، پورتها و غیره هستند. یک سیستم کامپیوتری منابع نرمافزاری و سختافزاری بسیار دارد که ممکن است در حین اجرا برنامه لازم باشند، سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز به برنامههای مشخصی تخصیص میدهد.
سیستم عامل معمولا اولین برنامههای است که پس از بوت شدن در حافظه بار میشود. پس از بار شدن قسمتی از سیستم عامل بطور دائم در حافظه باقی (Resident)میماند. قسمتهای دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده میشود.
به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام میدهد هسته یا Kernel گفته میشود. هسته سیستم عامل برنامهای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست. سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر داشتهاند. یعنی جهت سهولت کار با سخت افزارهای جدید, سیستم عاملها توسعه یافتندو همچنین در اثنای طراحی سیستم عاملها، مشخص شد که تغییراتی در طراحی سخت افزار میتواند سیستم عاملها را ساده تر و کارآمدتر سازد.
زمانبندي
1 .4- اهداف زمانبندي
2 .4- انواع زمانبندها
3 .4- الگوريتمهاي زمانبندي
اهداف زمانبندي
يك روش زمانبندي ميتواند داراي برخي از خواص زير باشد:
عادل باشد
يعني با تمام برنامه به يك صورت رفتار كند و هيچ برنامهاي از عقب افتادن به مدت نامعلوم رنج نبرد.
توان عملياتي را بالا ببرد
يك روش زمانبندي بايد سعي كند تا در هر واحد زمان، بيشترين تعداد برنامه را مورد سرويس قرار دهد.
تعداد استفادهكنندگان زياد
تعداد استفادهكنندگاني كه به صورت فعل و انفعالي از سيستم استفاده ميكنند و زمان پاسخ از نظر آنها مورد قبول است را به ماكزيمم برساند.
قابل پيشبيني باشد
در هر شرايط باري سيستم، يك كار معين بايستي در تقريباً همان مقدار زمان و با همان خرج اجرا شود، حتي اگر چندين بار اجرا شود.
هزينههاي سيستم را به حداقل برساند
اين شايد هميشه از اهداف مهم يك روش زمانبندي به حساب نيايد. هزينههاي ثابت معمولاً به عنوان منابع تلف نشده تلقي ميشوند، اما سرمايهگذاري يا اختصاص دادن برخي از منابع سيستم به عنوان هزينههاي بالاسري ثابت ميتواند كارآيي كلي سيستم را خيلي بالا ببرد. زمانبندي نيز با هزينههايي همراه است و بهتر است كه اين هزينهها در حداقل نگه داشته شوند.
متعادل نمودن استفاده از منابع
مكانيزم زمانبندي بايستي بتواند منابع سيستم را هميشه مشغول نگه دارد. براي اين منظور، اگر مثلاً برنامههايي هستند كه اكثراً از آن دسته از منابع كه كمتر استفاده ميشوند، بهره ميبرند، بايد اين نوع برنامهها زودتر و بيشتر به اجرا درآيند.
رسيدن به يك حالت متعادل
رسيدن به يك حالت متعادل بين زمان پاسخ و بكارگيري. بهترين راه براي رسيدن به يك زمان پاسخ خوب اين است كه به مقدار كافي از منابع سيستم در هنگام لزوم در دسترس باشند، اما در همين هنگام درجهي بكارگيري اين منابع خيلي پايين خواهد بود. در سيستمهاي بلادرنگ، رسيدن به يك زمان پاسخ سريع ضروري است، حال آنكه ميزان بكارگيري منابع چنين سيستمي چندان مهم نيست. در برخي ديگر از سيستمها لازم است به مساله بكارگيري توجه بيشتري شود.
از به تعويق انداختن به مدت نامحدود اجتناب شود
يعني هيچگاه برنامهاي مجبور نشود به صورت نامحدود براي دستيابي به وسيله يا امكاناتي (مثل دستگاه خروجي صبر كند). بهترين راه اين است كه با زيادشدن مدت تعويق به اولويت برنامه افزوده شود. بالاخره در يك هنگام اولويت آن، آنقدر بالا خواهد بود كه وسيلهي موردنظر به او داده خواهد شد.
استفاده از اولويتها
در محيطهايي كه به هر برنامه اولويتي داده شده است ، مكانيزم زمانبندي بايستي به برنامههايي كه اولويت بيشتري دارند، توجه بيشتري كند.
ارجحيت به برنامههاي كليدي
حتي اگر يك برنامه با اولويت پايين يك وسيله كليدي را در اختيار داشته باشد، آن وسيله ممكن است مورد تقاضاي يك برنامه با اولويت بيشتر باشد. اگر آن وسيلهي مورد نظر قابل از انحصار در آوردن نباشد.
سرويس مناسب
سرويس بهتري به برنامههايي كه از خود رفتار بهتري نشان ميدهند، داده شود. (براي مثال، برنامههايي كه كمتر احتياج به ديسك دارند)
تنزل منظم تحت بار سنگين
يك مكانيزم زمانبندي نبايستي وقتيكه بار سيستم سنگين است، از كار بيافتد يا بايستي در تحت شرايط معيني از بوجود آوردن برنامههاي جديد خودداري كند تا بار سنگين نشود و يا اينكه در شرايط بار سنگين، سطح سرويسي را كه براي همهي برنامهها فراهم ميآورد، تقليل دهد. واضح است كه بسياري از اهداف فوق با هم در تضادند و به همين دليل طراحي يك روش زمانبندي عملي پيچيده است.
انواع زمانبندها
به طور كلي به سه نوع زمانبند مختلف وجود دارد كه ممكن است در يك سيستم عامل پيچيده با هم، همزيستي داشته باشند و به عنوان زمانبند بلندمدت، زمانبند ميانبند و زمانبند كوتاه مدت مورد اشاره قرار ميگيرند.
شكل 1-4، مسيرهاي پيمايش ممكن كارها و برنامهها از طريق مولفهها و صفهاي يك سيستم را كه به صورت مستطيل ارائه گرديده است، را نشان ميدهد.
در شكل 1-4، محلهاي اصلي عمل سه نوع زمانبند با فلشي كه جهت آن به طرف پايين است، نشان داده شده است. همانگونه كه در شكل مذكور نشان داده شده است، يك كار دستهاي تحويل شده، مادامي كه در انتظار پردازش شدن توسط زمانبند بلندمدت به سر ميبرد، به صف دستهاي ميپيوندد. فرآيندهاي توليدشده توسط كار دستهاي، هنگامي كه جهت اجرا، زمانبندي ميشوند، وارد صف آماده ميشوند تا منتظر تخصيص پردازنده توسط زمانبند كوتاه مدت بمانند. فرآيند در حال اجرا بعد از بيتكليف شدن (معلق شدن) از حافظه حذف ميشود و به حافظه جانبي انتقال مييابد. اينگونه فرآيندها، بعداً از طريق زمانبند ميانمدت به حافظه اصلي پذيرفته ميشوند تا جهت اجرا توسط زمانبند كوتاه مدت مدنظر قرار گيرند.
زمانبند بلندمدت
زمانبند بلندمدت هنگامي كه حضور دارد، با صف دستهاي كار ميكند و كار بعدي را كه بايد اجرا شود، را انتخاب مينمايد. كارهاي دستهاي تمام دادهها و فرامين مورد نياز اجرايشان را دارا ميباشد. همچنين كارهاي دستهاي معمولاً شامل برآوردهاي تعيين شده توسط برنامهنويس يا سيستم در مورد نيازهاي منابعشان نظير اندازه حافظه، زمان اجراي مورد انتظار و نيازمنديهاي دستگاه ميباشد. آگاهي از رفتار مورد انتظار كار، سبب سهولت بخشيدن به كار زمان بلندمدت ميگردد.
هدف اصلي زمانبند بلندمدت، تامين آميزهاي متوازن از كارها، نظير با تنگناي (مقيد به) پردازنده و با تنگناي (مقيد به) ورودي / خروجي جهت زمانبند بلندمدت ميباشد. زمانبند بلندمدت به طريقي همانند يك تنظيمكننده سطح اول در نگهداري بهرهوري منابع در سطح مطلوب عمل ميكند.
به عنوان مثال، هنگامي كه بهرهوري پردازنده پايين است، زمانبند ممكن است كارهاي بيشتري بپذيرد تا تعداد فرآيندهاي صف آماده را افزايش دهد و با آن احتمال داشتن كار مفيدي كه در انتظار تخصيص پردازنده به سر ميبرد، وجود دارد. برعكس، هنگامي كه ضريب بهرهوري همانگونه كه در زمان پاسخگويي منعكس ميگردد، بالاست، زمانبند بلندمدت مختار است كه ميزان پذيرش كار دستهاي را كاهش دهد. علاوه بر آن، معمولاً هنگامي كه يك كار پايان يافته، از سيستم خارج ميشود، زمان بلندمدت فراخوانده ميشود. بدين ترتيب، بسامد فراخواني، زمانبند بلندمدت به سيستم و بار كاري هر دو وابسته است، ولي بطور كلي در مورد دو نوع زمانبند ديگر به مراتب پايينتر است.
زمانبند ميانمدت
يك فرآيند در حال اجرا، بعد از مدت زماني پس از شروع اجرا، يك درخواست ورودي و خروجي يا با صدور يك فراخواني سيستمي بيتكليف ميگردد. با درنظر گرفتن اينكه فرآيندهاي بيتكليف (در حال تعليق) نميتوانند به سمت پايين يافتن جلو بردند تا اينكه شرط بيتكليفي مربوط منتفي گردد، غالباً حذف آنها از حافظه اصلي جهت جادادن به فرآيندهاي ديگر سودمند واقع ميشود.
هنگامي كه تعدادي از فرآيندها بيتكليف ميشوند، بقيه فرآيندهاي موجود در حالت آماده در سيستم، در وضعيتي كه تمام فرآيندهاي بيتكليف شده (معلق) در حافظه به صورت مقيم باقي ميمانند، ممكن است تا سطحي كاهش يابند كه به كار كردن زمانبند كوتاه مدت از طريق واگذاري كم يا هيچ انتخابي براي آن آسيب رساند. در سيستمهايي كه جهت حافظه مجازي هيچگونه پشتيباني به عمل نميآيد، با انتقال فرآيندهاي بيتكليف شده به حافظه جانبي اين مشكل منتفي ميگردد. ذخيره تصوير فرآيند بيتكليف شده در حافظه جانبي مبادله يا نقل مكان ناميده ميشود و گفته ميشود كه فرآيند به خارج نقل مكان يافته است.
زمانبند ميانمدت، مسوول ادارهي فرآيندهاي نقل مكان يافته به خارج ميباشد و مادامي كه فرآيندي بيتكليف ميشود، چندان كاري ندارد كه انجام دهد. با اين وجود، زماني كه شرايط بيتكليفي منتفي ميشود، زمانبند ميانمدت سعي بر آن دارد كه ميزان حافظه اصلي مورد نياز را تخصيص دهد و فرآيند را به داخل نقل مكان دهد و آن را آماده سازد.
براي اينكه زمانبند ميانمدت بتواند كارش را خوب انجام دهد، بايستي اطلاعاتي در مورد نيازمنديهاي حافظهاي فرآيندهاي نقل مكان يافته به خارج برايش فراهم گردد. پيادهسازي چنين كاري دشوار نيست، زيرا اندازه واقعي فرآيند به هنگام نقل مكان ميتواند ثبت گردد و در بلاك كنترل فرآيند مربوطه ذخيره گردد.
زمانبند كوتاهمدت
زمانبند كوتاهمدت، پردازنده را مابين مجموعه فرآيندهاي آماده مقيم در حافظه اصلي اختصاص ميدهد. هدف اصلي آن به حداكثر رساندن عملكرد سيستم در ارتباط با مجموعه انتخاب شدهاي از معيارها ميباشد. چون زمانبند كوتاهمدت مسوول نقل و انتقال از حالت آماده به حالت اجرا ميباشد، بايد در هر تغيير فرآيند فراخوانده شود تا فرآيند بعدي را جهت اجرا انتخاب نمايد. در عمل، هر زمان كه يك رويداد (داخلي يا خارجي) سبب ميگردد كه حالت كلي سيستم تغيير يابد، زمانبند كوتاهمدت خوانده ميشود.
در صورتي كه يك چنين تغيير بتواند فرآيند در حال اجرا را بيتكليف كند يا منجر به اين شود كه يك يا چند فرآيند بيتكليف شده را آماده سازد، زمانبند كوتاهمدت بايد اجرا شود تا تغيين نمايد كه آيا چنين تغييرات قابل ملاحظهاي واقعاً رخ دادهاند يا نه و اگر چنين باشد، فرآيند بعدي را جهت اجرا انتخاب نمايد. بعضي از رويدادهايي كه به خاطر تواناييشان در تغيير حالت كلي سيستم سبب زمانبندي مجدد ميگردند، عبارتند از:
- تيكهاي ساعت (وقفههاي مبتني بر زمان)
- وقفهها و پايان يافتنهاي ورودي / خروجي
- اكثر فراخوانيهاي عملياتي سيستم عامل
- ارسال و دريافت سيگنالها
- فعالسازي برنامههاي محاورهاي
به طور كلي، هر زمان كه يكي از اين رويدادها به وقوع ميپيوندد، سيستم عامل زمانبند كوتاهمدت را فرا ميخواند تا تعييم نمايد كه آيا فرآيند ديگري جهت اجرا بايد زمانبندي شود يا نه؟
الگوريتمهاي زمانبندي
زمانبندي كوتاه مدت (زمانبندي پردازنده)، بر اساس الگوريتمهايي انجام ميگيرد كه آنها را ميتوان در يك دستهبندي كلي، در دو دستهي انحصاري يا انقطاعناپذير (Preemptive) و الگوريتمهاي غيرانحصاري يا انقطاعپذير (Non Preemptive) قرار داد. در الگوريتمهاي انقطاعپذير پس از اينكه يك پردازنده كنترل پردازنده را بدست آورد (پردازنده در حال اجرا)، تا زماني كه به دليل نياز به يك منبع كنترل را به مدير زمانبندي برنگرداند، پردازنده در اختيار وي باقي ميماند.
در الگوريتمهاي انقطاعپذير، در پايان برش زماني (Time Slice) و يا تغييرات شرايط سيستم، مدير زمانبندي ميتواند كنترل پردازنده را از يك پردازنده در حال اجرا گرفته و به پردازنده ديگري بدهد.
الگوريتمهاي زمانبندي سعي دارند در حد امكان موارد زير را رعايت كنند:
- عادل بودن
- قابل پيشبيني بودن عملكرد
- كاهش هزينههاي سيستم
- استفادهي متعادل از منابع
- عدم تعويق نامحدود يك پردازه
- توجه به اولويتهاي برنامهها
- ارجحيت برنامههاي داراي منابع كليدي
- كاهش منظم بار سيستم در شرايط بار سنگين
و بدينمنظور معيارهاي قابل محاسبه در سيستم به صورت زير تعريف ميشود:
الف. بهرهوري پردازنده (CPU utilization): هدف از بهرهوري پردازنده، مشغول بودن آن به طور دائمي است.
ب. «Throughput» تعداد پردازهي اجراشده در واحد زمان در يك سيستم ميباشد، پردازههاي كوتاه باعث بالا رفتن Throughput و كارهاي بلند باعث پايين آمدن آن ميشوند.
ج. زمان گردش(Turnaround Time): مدت زمان بين مطرحشدن كار در سيستم تا اجراي كامل آن (از زمان باز ايجاد پردازه تا رفتن آن به حالت كامل) «زمان گردش كار» نام دارد.
د. زمان انتظار(Waiting Time): مدت زماني كه پردازه در صف آماده منتظر اجراشدن ميماند، متاثر از الگوريتم زمانبندي است و «زمان انتظار» تعريف ميشود. براي هر پردازه، زمان ورودي و خروجي و زمان پردازش مستقل از الگوريتم است و به كد پردازه و سيستم بستگي دارد.
ه. زمان پاسخ(Response Time): زمان بين مشاهدهي يك درخواست اجرا در سيستم تا اولين پاسخ به كاربر، «زمان توليد پاسخ» است. همواره رسيدن به هدف حداكثر شدن كارايي پردازنده و گذردهي سيستم و حداقل شدن زمان گردش كار زمان انتظار و زمان پاسخ در يك سيستم امكانپذير نيست، زيرا گاهي اين اهداف در تناقض با يكديگرند، از اين رو مناسب است كه در بهينه كردن معيارها هدف كم كردن پراكندگي مقادير زمان پاسخ از يك مقدار ميانگين و يا حداقل كردن حداكثر زمان پاسخ مدنظر قرار داده شود. با درنظر گرفتن معيارهاي فوق، تعدادي از الگوريتمهاي زمانبندي مورد بررسي قرار ميگيرند:
الگوريتم اولويت با اولين ورودي
اين الگوريتم به سادگي هر پردازنده ورودي را در صف FIFO قرار داده و از سر صف اجرا را شروع ميكند و اجراي پردازهها را بطور انحصاري انجام ميدهد. از مزاياي اين آلگوريتم، سادگي اجرا و عملي بودن آن است و از معايب آن، زيادبودن ميانگين زمان انتظار، انقطاعناپذيري و غيرقابل استفاده بودن در سيستمهاي اشتراك زماني است.
الگوريتم اولويت با كوتاهترين كار
در اين روش، در صورتي كه از ابتدا، كليهي پردازهها در صف منتظر بوده و مقاطع زماني (Burst Time) مورد نياز آنها مشخص باشد، پردازهاي انتخاب ميشود كه كوتاهتر از همه است و به صورت انحصاري اجراي آن شروع ميشود. از مزاياي اين الگوريتم، حداقل كردن متوسط زمان انتظار و دارا بودن كمترين زمان انتظار در بين الگوريتمها و از معايب آن، نياز به داشتن اطلاعات مقاطع زماني مورد نياز قبل از اجرا، احتمال به تعويق افتادن كارهاي طولاني و انقطاعناپذير بودن ميباشد.
الگوريتم اولويت با كمترين زمان باقيمانده
در اين الگوريتم، انتخاب بر اساس كمترين زمان مورد نياز براي كامل شدن صورت ميگيرد. اين الگوريتم غيرانحصاري بوده و با ورود هر پردازه به صف آماده بررسي پردازهها صورت ميگيرد. اگر پردازه تازه وارد شده، زمان كمتري براي كامل شدن لازم دارد، پردازنده در اختيار آن قرار ميگيرد. از مزاياي اين روش، انقطاعپذيري (غيرانحصاري بودن) و از معايب آن، احتمال تعويق كارهاي طولاني و نياز به داشتن اطلاعاتي در مورد تكميل پردازه ميباشد.
الگوريتم نوبتي
در اين الگوريتم، با درنظر گرفتن برش زماني، به محض ورود يك پردازه يا پايان برش زماني آن، پردازه در انتهاي صف قرار ميگيرد و يك برش زماني به پردازه ابتداي صف تخصيص مييابد. از مزاياي اين روش، انقطاعپذيري، عدم نياز به اطلاعات اوليه در مورد زمانهاي مورد نياز پردازهها و زمان پاسخ نسبتاً مناسب و از معايب آن، نياز به دقت در تنظيم برش زماني، كاهش كارآيي پردازنده، به خاطر زمانهاي تعويض متن در برشهاي زماني خيلي كوتاه و شباهت به الگوريتم FCFS براي برشهاي زمان طولاني ميباشد.
الگوريتم اولويت با بالاترين نسبت پاسخ
اين الگوريتم با درنظر گرفتن يك معيار مشخص، پردازهها را اولويتبندي كرده و انتخاب پردازهي بعدي بر اساس اين اولويت انجام ميشود و اجراي آن به صورت انحصاري تا كاملشدن پردازه ادامه مييابد. اولويتهايي كه مي توان در اين الگوريتم درنظر گرفت، عبارتند از:
- نسبت مقاطع زماني ورودي يا خروجي به مقاطع زماني پردازنده (I/O Burst بهCPU Burst )
- محدوديت زماني، نيازهاي حافظه
- تعداد فايلهاي بازشده
- اهميت پردازه و بخش ارائهدهنده كار
يك اولويت مناسب در اين روش، اولويت نسبت پاسخ است كه به صورت زير تعريف ميشود:
زمان سرويس / زمان سرويس + زمان انتظار = اولويت
زمان سرويس، كل زمان مورد نياز براي اتمام پردازه است. از اين رو، پردازههاي كوتاه به محض ورود اولويت بالا پيدا ميكنند. زمان انتظار، كل زماني است كه پردازه در انتظار بوده است. از اين رو، پردازههايي كه مدت زيادي به افتادهاند، به مرور اولويت بالا پيدا ميكنند. از مزاياي اين روش، توجه به زمان انتظار پردازهها، توجه به پردازههاي كوتاه و كاهش زمان انتظار و از معايب آن، انقطاعناپذيري و نياز به داشتن اطلاعاتي در مورد كل زمان مورد نياز پردازهها ميباشد.
زمانبندي صف چند سطحي
در يك سيستم ميتوان از ابتدا پردازهها را در چندين سطح با اولويتهاي متفاوت قرار داد و در يك سطح از يك الگوريتم و بين سطحها از الگوريتم ديگري براي زمانبندي استفاده نمود.
مثلاً ميتوان سطح را به صورتي درنظر گرفت كه بالاترين اولويت به ترتيب مربوط به پردازههاي سيستمي، پردازههاي محاورهاي اجرايي و محاورهاي ويرايش فايل و پايينترين اوليت مربوط به پردازههاي دستهاي باشد. همچنين با قراردادن امكان حركت يك پردازه بين صفها، پردازهاي كه مدت زيادي با اولويت پايين در يك صف منتظر بوده، به پردازهاي با اولويت بالاتر تبديل ميشود.
خلاصه
«Throughput» در يك سيستم تعداد كار انجام شده در واحد معيني از زمان Throughput سيستم گفته ميشود.
هدف از چند برنامگي، افزايش كارايي پردازنده و Throughput سيستم بوسيله زمانبندي است. براي استفادهي حداكثر از پردازنده بايد همواره تعدادي پردازنده براي اجرا كردن در سيستم موجود باشد، ولي با شرط نيز در زمانهايي كه يك پردازه نياز به ورودي يا خروجي دارد، پردازنده بيكار ميشود. از اينرو با استفاده از زمانبندي بايد زمانهاي بيكارشدن پردازنده را به حداقل رساند.
البته بايد توجه داشت كه معيار افزايش كارايي پردازنده ميتواند در كل موجب توجه كمتر به ساير معيارها، نظير عملكرد خوب سيستم در اجراي كارها و كاهش زمان پاسخ سيستم گردد، زيرا براي افزايش كارايي پردازنده، همواره لازم است تعدادي پردازنده منتظر اجراشدن در سيستم موجود باشند.
نتیجه:
سيستم عامل با سادهترين تحليل و بررسی دو عمليات اساسی را در کامپيوتر انجام میدهد:
– مديريت منابع نرم افزاری و سخت افزاری يک سيستم کامپيوتری را بر عهده دارد. پردازنده ، حافظه، فضای ذخيرهسازی نمونههايی از منابع اشاره شده می باشند .
– روشی پايدار و يکسان برای دستيابی و استفاده از سختافزار را بدو ن نياز از جزييات عملکرد هر يک از سخت افزارهای موجود را برای برنامههای کامپيوتری فراهم می نمايد .
اولين وظيفه يک سيستم عامل، مديريت منابع سختافزاری و نرم افزاری است. برنامههای متفاوت برای دستيابی به منابع سختافزاری نظير: پردازنده ، حافظه، دستگاههای ورودی و خروجی، حافظههای جانبی، در رقابتی سخت شرکت خواهند کرد. سيستمهای عامل بعنوان يک مدير عادل و مطمئن زمينه استفاده بهينه از منابع موجود را برای هر يک از برنامههای کامپيوتری فراهم مینمايند.
وظيفه دوم يک سيستم عامل ارائه يک رابط (اينترفيس) يکسان برای ساير برنامههای کامپيوتری است. در اين حالت زمينه استفاده بيش از يک نوع کامپيوتر از سيستم عامل فراهم شده و در صورت بروز تغييرات در سختافزار سيستمهای کامپيوتری نگرانی خاصی از جهت اجرای برنامه وجود نخواهد داشت، چرا که سيستم عامل به عنوان ميانجی بين برنامههای کامپيوتری و سختافزار ايفای وظيفه کرده و مسووليت مديريت منابع سختافزاری به وی سپرده شده است.
برنامهنويسان کامپيوتر نيز با استفاده از نقش سيستم عامل به عنوان يک ميانجی به راحتی برنامههای خود را طراحی و پياده سازی کرده و در رابطه با اجرای برنامههای نوشته شده بر روی ساير کامپيوترهای مشابه نگرانی نخواهند داشت (حتی اگر ميزان حافظه موجود در دو کامپيوتر مشابه نباشد). در صورتيکه سختافزار يک کامپيوتر بهبود و ارتقاء يابد، سيستم عامل اين تضمين را ايجاد خواهد کرد که برنامهها، در ادامه بدون بروز اشکال قادر به ادامه حيات و سرويسدهی خود باشند. مسوليت مديريت منابع سختافزاری بر عهده سيتم عامل خواهد بود نه برنامههای کامپيوتری، بنابراين در زمان ارتقای سختافزار يک کامپيوتر مسوليت سيستم عامل در اين راستا اولويت خواهد داشت.
سيستم عامل، نرمافزاري است كه يك سري اطلاعات اوليه را در اختيار كامپيوتر قرار ميدهد تا بر اساس اين اطلاعات اوليه بتوان نرمافزارهاي جديدي را به كامپيوتر معرفي كرده و با آن ارتباط برقرار نمود. يا به عبارت ديگر سيستم عامل به صورت يك پل ارتباطي بين سختافزارها و نرمافزارها و كاربر عمل ميكند.
سيستم عاملها به طور كلي به دو دسته خطي و گرافيكي تقسيم ميشوند. در سيستم عاملهاي خطي اطلاعات به صورت نوشتاري به كامپيوتر داده ميشود، مانند سيستم عامل DOS و در سيستم عاملهاي گرافيكي ميتوان بدون نوشتن، اطلاعات را به كامپيوتر وارد كرد، مانند سيستم عامل ويندوز و لينوكس.
ويندوز 98 يکی از بهترين نمونهها در اين زمينه است. سيستم عامل فوق بر روی سختافزارهای متعدد توليد شده توسط توليدکنندگان متفاوت اجرا میگردد. ويندوز 98 قادر به مديريت و استفاده از هزاران نوع چاپگر ديسک و ساير تجهيزات جانبی است.
فهرست منابع
- استالينگ، ويليام. ترجمه مهندس عيناله جعفرنژادقمي. 1382. سيستمهاي عامل. انتشارات علوم رايانه.
- سميع، مهندس مهدي و كاجي، مهندس علياصغر. 1382. مهندسي كامپيوتر. انتشارات اركان.
- سيلبر شاتس – گالوين – گين. ترجمه مهندس عيناله جعفري نژادقمي. 1381. مفاهيم و اصول طراحي سيستمهاي عامل. انتشارات علوم رايانه.
- صادقي، ايرج. 1379. سيستمهاي عامل. انتشارات ناقوس.
- فهيمي، دكترمهرداد. 1375. سيستمهاي عامل (مفاهيم و تكنيكها)، انتشارات جلوه.
فهرست مطالب
(مفاهيم اوليه)
1 .1- سيستم عامل چيست؟. 3
1 .1 .1- ديدگاه برتر.. 4
2 .1 .1- ديدگاه سيستم.. 5
3 .1 .1- اهداف سيستم.. 6
2 .1- ظهور تدريجي و سير تكاملي سيستمهاي عامل… 7
1 .2 .1- پردازش سريالي يا پياپي… 8
2 .2 .1- پردازش دستهاي… 11
3 .1- تكامل سيستم عاملهاي جديد.. 14
خلاصه فصل اول.. 19
(تطابق تكنيكهاي سيستم عامل با نسلهاي كامپيوتر)
1 .2- سيستمعاي عامل دستهاي… 21
2 .2- سيستمهاي بلادرنگ…. 22
3 .2- سيستمهاي خوشهاي… 22
4 .2- سيستمهاي توزيع شده. 24
1 .4 .2- سيستمهاي با ارتباط محكم.. 24
2 .4 .2- سيستمهاي با ارتباط سست…. 24
5 .2- سيستمهاي عامل تركيبي… 25
6 .2- سيستمهاي خاص – منظور پردازش تراكنشها 26
خلاصه فصل دوم.. 27
(مديريت حافظه)
1 .3- نيازهاي مديريت حافظه.. 29
1 .1 .3- جابجايي… 29
2 .1 .3- حفاظت…. 30
3 .1 .3- اشتراك…. 32
4 .1 .3- سازمان منطقي… 32
5 .1 .3- سازمان فيزيكي… 33
2 .3- مولفه مديريت حافظه اصلي… 34
3 .3- مولفه مديريت حافظهي جانبي… 37
4 .3- حافظههاي ميانگير.. 37
5 .3- حفاظت از حافظه.. 39
6 .3- تخصيص حافظه.. 40
1 .6 .3- اولين جاي مناسب: 43
2 .6 .3- بهترين جاي مناسب: 43
3 .6 .3- بدترين جاي مناسب: 43
خلاصه فصل سوم.. 46
(زمانبندي)
1 .4- اهداف زمانبندي… 50
1 .1 .4- عادل باشد.. 50
2 .1 .4- توان عملياتي را بالا ببرد. 50
3 .1 .4- تعداد استفادهكنندگان زياد. 50
4 .1 .4- قابل پيشبيني باشد.. 50
5 .1 .4- هزينههاي سيستم را به حداقل برساند.. 51
6 .1 .4- متعادل نمودن استفاده از منابع.. 51
7 .1 .4- رسيدن به يك حالت متعادل.. 51
8 .1 .4- از به تعويق انداختن به مدت نامحدود اجتناب شود. 52
9 .1 .4- استفاده از اولويتها 52
10 .1 .4- ارجحيت به برنامههاي كليدي… 52
11 .1 .4- سرويس مناسب…. 52
12 .1 .4- تنزل منظم تحت بار سنگين… 53
2 .4- انواع زمانبندها 53
1 .2 .4- زمانبند بلندمدت… 54
2 .2 .4- زمانبند ميانمدت… 55
3 .2 .4- زمانبند كوتاهمدت… 56
3 .4- الگوريتمهاي زمانبندي… 57
1 .3 .4- الگوريتم اولويت با اولين ورودي… 59
2 .3 .4- الگوريتم اولويت با كوتاهترين كار. 59
3 .3 .4- الگوريتم اولويت با كمترين زمان باقيمانده. 60
4 .3 .4- الگوريتم نوبتي… 60
5 .3 .4- الگوريتم اولويت با بالاترين نسبت پاسخ.. 60
6 .3 .4- زمانبندي صف چند سطحي… 61
خلاصه فصل چهارم.. 62
خلاصه.. 63
نتيجهگيري… 65
فهرست منابع.. 66