مقدمه:
سیستم عامل یکی از نرمافزارهای سیستم است که به عنوان واسطی بین سختافزار و برنامههای کاربردی و کاربران عمل مینماید.
ویژگیها و وظایف سیستم عامل عبارتند از:
الف. کنترل و ایجاد هماهنگی بین برنامههای کاربردی مختلف در استفاده از سختافزار.
ب. کنترل عملکرد دستگاههای مختلف ورودی و خروجی.
ج. تخصیص منابع به برنامههای مختلف.
سیستم عامل برنامهای است که هستهی آن همواره بر روی کامپیوتر، در حالت اجرا قرار دارد. دو هدف اصلی سیستم عامل، ایجاد سادگی برای کاربرد و استفادهی کارا و موثر از کامپیوتر است.
فصل اول
مفاهیم اولیه
1 .1- سیستم عامل چیست؟
2 .1- ظهور تدریجی و سیر تکاملی سیستمهای عامل
3 .1- تکامل سیستم عاملهای جدید
1 .1- سیستم عامل چیست؟
سیستم عامل بخش مهمی از هر سیستم کامپیوتر است. هر سیستم کامپیوتری را میتوان به چهار قسمت تقسیم کرد:
سختافزار، سیستم عامل، برنامههای کاربردی و کاربران
سختافزار شامل CPU (یا بطور خلاصه پردازنده)، حافظه و دستگاههای ورودی و خروجی است و منابع اصلی کامپیوتر را فراهم میکند. برنامههای کاربردی مثل کامپایلرها، سیستمهای بانک اطلاعاتی، بازیها و برنامههای تجاری، چگونگی بهرهبرداری از این منابع جهت حل مسائل محاسباتی کاربران را مشخص میکند. کاربران مختلفی وجود دارند که میخواهند مسائل متفاوتی را حل کنند.
بنابراین ممکن است برنامههای کاربردی گوناگونی وجود داشته باشند. سیستم عامل، بکارگیری سختافزار را بین برنامههای مختلف کاربران، کنترل و تنظیم میکند.
سیستم عامل مانند یک دولت است. اجزای سیستم کامپیوتری عبارتند از: سختافزار، نرمافزار و دادهها. سیستم عامل ابزارهایی را براستفادهی بهینه از منابع فراهم میکند. سیستم عامل مانند دولت، خودش کار خاصی انجام نمیدهد، بلکه فقط محیطی را فراهم میآورد که برنامههای دیگر به خوبی اجرا شوند.
1 .1 .1- دیدگاه برتر
دیدگاه برتر نسبت به کامپیوتر، بر حسب واسطی که مورد استفاده قرار میگیرد، فرق میکند، اغلب کاربران کامپیوتر از PC استفاده میکنند که شامل مانیتور، صفحه کلید، ماوس و واحد سیستم است. چنین سیستمی برای یک کاربر تهیه شده است تا از منابع آن برای انجام کارهای بیشتر استفاده کند. در این مورد، سیستم عامل برای سهولت استفاده طراحی شد، ولی نگاهی به کارایی داشت، اما به بهرهوری منابع پرداخته نشد. کارایی برای کاربر مهم است، ولی بخش زیادی از سیستم بیکار میماند و منتظر سرعت I/O کاربر است.
بعضی از کاربران از پایانههایی استفاده میکنند که به کامپیوتر بزرگ یا مینی کامپیوتر وصل هستند. کاربران دیگر نیز از طریق پایانههای دیگر به این کامپیوتر دسترسی دارند. این کاربران از منابع به طور مشترک استفاده میکنند و اطلاعات را مبادله مینمایند. سیستم عامل طراحی شد تا بهرهوری منابع را افزایش دهد. بدین ترتیب، کل زمان پردازنده، حافظه و I/O به طور کارآمد مورد استفاده قرار میگیرند.
کاربران دیگر از ایستگاههای کاری استفاده میکنند که به شبکههای سایر ایستگاههای کاری و کارگزاران وصل هستند. این کاربران میتوانند منابعی را در اختیار بگیرند، ولی از منابعی مثل فایلها و چاپگرها به طور اشتراکی استفاده میکنند. لذا سیستم عامل آنها طراحی شد تا بین بهرهوری از منابع و استفاده شخصی توازن برقرار کند.
اخیراً کامپیوترهای دستی گوناگونی، بعضی وصل به شبکهها متصل هستند (از طریق سیم یا به صورت بیسیم). بر حسب قدرت و محدودیتهایی که دارند، عملیات راه دور را انجام میدهند. این سیستمهای عامل طراحی شدند تا استفاده شخصی را فراهم کنند، اما کارایی در اثنای کارکردن باتری نیز مهم است.
کاربران نسبت به بعضی از کامپیوترها دیدگاهی ندارند. به عنوان مثال، کامپیوترهای تعبیه شده در دستگاههای خانگی و اتومبیلها، صفحه کلیدی عددی دارند که خاموش یا روشن بودن آنها، وضعیت آنها را نشان میدهد. این کامپیوترها و سیستمهای عامل آنها طوری طراحی شدهند که بدون دخالت کاربر اجرا میشوند.
2 .1 .1- دیدگاه سیستم
از نقطهنظر کامپیوتر، سیستم عامل برنامهای است که به شدت با سختافزار عجین شده است. سیستم عامل را میتوان تخصیص دهندهی منابع درنظر گرفت. سیستم کامپیوتر دارای منابع سختافزاری و نرمافزاری متعددی است که برای حل مساله مفید است. این منابع عبارتند از: زمان CPU، فضای حافظه، فضای ذخیرهسازی فایل، دستگاههای I/O و ... . سیستم عامل مدیر این منابع است و آنها را در اختیار برنامههای کاربردی و کاربران قرار میدهد تا نیازهای خودشان را برطرف کنند. چون ممکن است درخواستهای متعددی برای منابع وجود داشته باشد که حتی متناقض هم باشند، سیستم عامل باید منابع را طوری در اختیار کاربر یا برنامه کاربردی قرار دهد تا عملکرد سیستم کامپیوتری بهینه باشد.
سیستم عامل را از دیدگاه نیاز به کنترل دستگاههای I/O و برنامههای کاربردی نیز میتوان مورد مطالعه قرار داد. در این دیدگاه، سیستم عامل یک برنامه است. برنامههای کنترل، برنامههای کاربران را کنترل میکند تا از کامپیوتر به درستی استفاده کنند. در این دیدگاه، بیشتر به کنترل دستگاههای I/O پرداخته میشود.
به طور کلی، تعریف دقیقی از سیستم عامل وجود ندارد. علت وجود آنها، بهرهبرداری بهینه از سیستم کامپیوتری است. هدف اصلی سیستمهای کامپیوتری، اجرای برنامههای کاربران و حل آسانتر مسالههای کاربران است. سختافزار ساخته شده تا این هدف برآورده شود.
چون استفاده از سختافزار محض آسان نیست، برنامههای کاربردی بوجود آمدند. بسیاری از عملیات این برنامههای کاربردی، مشترک است، مثل عملیاتی که دستگاههای I/O را کنترل میکنند. عملیات مشترک کنترل و تخصیص منابع، به صورت نرمافزار جداگانهای به نام سیستم عامل نوشته شدند.
تعریف دقیقی وجود ندارد که مشخص کند چه عملیاتی به عنوان بخشی از سیستم عامل محسوب میشود و چه عملیاتی به عنوان بخشی از سیستم عامل نیست. یک دیدگاه، ساده این است که هرچیزی که فروشنده در قبال درخواست سیستم عامل به شما تحویل میدهد، به عنوان سیستم عامل منظور شود. میزان حافظه مورد نیاز و ویژگیهای سیستمهای عامل با هم متفاوت است. بعضی از آنها کمتر از یک مگابایت حافظه اشغال میکنند و فاقد ویراستار صفحهای هستند، ولی بعضی دیگر از آنها چندصد مگابایت حافظه نیاز دارند و شامل غلطیاب و سیستمهای پنجرهای هستند.
متداولترین تعریف از سیستم عامل این است که، سیستم عامل برنامهای است که همواره در سیستم کامپیوتری در حال اجراست (و هسته نامیده میشود) و سایر برنامهها به نام برنامههای کاربردی خوانده میشوند.
3 .1 .1- اهداف سیستم
بهتر است سیستم عامل را با توجه به کاری که انجام میدهد، تعریف کنیم. اولین هدف سیستم عامل این است که محیط آسانی را برای کار فراهم کند. علت استفاده از سیستم عامل این است که بکارگیری کامپیوتر را آسان میکند. این دیدگاه برای کامپیوترهای کوچک واضحتر است.
هدف دوم سیستم عامل، بهرهبرداری بهینه از سختافزار است. این هدف، برای سیستمهای کامپیوتری بزرگ چندکاربره مورد نظر است. چون این سیستمها گران هستند، مطلوب است که به طور بهینه و کارآمد مورد بهرهبرداری قرار گیرند. این دو هدف، یعنی فراهم کردن محیط آسان و استفاده کارآمد، گاهی با هم در تضادند. در گذشته ملاحظات کارایی مهمتر از سهولت بوده است. بدین ترتیب، اغلب نظریههای سیستم عامل، به بهرهبرداری بهینه از منابع کامپیوتر مربوط میشوند. به عنوان مثال، یونیکس از صفحه کلید و چاپگر به عنوان واسط استفاده کرد. به طوری که کاربر چندان راحت نبود. در مرور زمان، سختافزار تغییر کرد و یونیکس در سختافزار جدید و با واسط کاربرپسند، شروع بکار کرد. واسط گرافیکی کاربر (CPU) بوجود آمد و موجب شد که کاربران به راحتی با یونیکس کار کنند.
طراحی سیستم عامل، وظیفه پیچیدهای است. طراحان با برقراری توازن بین طراحی و پیادهسازی مواجهاند و همواره سیستم عامل را به روز میکنند. موفقیت سیستم عامل در برآورده کردن اهداف طراحی، به کاربران بستگی دارد.
سیستمهای عامل و معماری کامپیوتر به شدت بر یکدیگر موثر بودند. پژوهشگران برای سهولت استفاده از سختافزار، سیستم عامل را بوجود آوردهاند. کاربران سیستمهای عامل تغییراتی را در طراحی سختافزار پیشنهاد کردند.
2 .1- ظهور تدریجی و سیر تکاملی سیستمهای عامل
یک سیستم عامل بار کاریش را یا به صورت پیاپی و یا بطور همزمان پردازش مینماید، یعنی منابع سیستم کامپوتر ممکن است به یک برنامه منفرد تا خاتمه اجرای آن اختصاص داده شود و یا اینکه به گونهای پویا مابین مجموعهای از برنامههای فعال در مراحل مختلف اجرا تخصیص مجدد یابد.
سیستمهای عاملی که از توانایی اجرای همزمان برنامهها برخوردارند، به عنوان سیستمهایی با عملکرد چندبرنامهای مورد اشاره قرار میگیرد. چند نوع از سیستمهای عامل پیاپی و چندبرنامهای وجود دارند. در راستای ظهور تدریجی و سیر تاریخی تکامل سیستمهای عامل راه دراز و پرفراز و نشیبی طی شده است تا امروزه کاربران از سیستم عامل استفاده بهینه نمایند.
1 .2 .1- پردازش سریالی یا پیاپی
بطور نظری هر سیستم کامپیوتری بدون پشتیبانی نرمافزار سیستمی ممکن است به زبان ماشین برنامهسازی شود. برنامهسازی «ماشین ساده» جهت سیستمهای کامپیوتری اولیه متداول بود. برنامهها جهت ماشین ساده میتوانست از طریق ترجمه دستی رشتههایی از دستورالعملها به باینری یا هر کد دیگری که مبنای آن 2 بود، ایجاد گردند. آنگاه دستورالعملها و دادهها با استفاده از کلیدهای میز فرمان یا شاید هم از طریق یک صفحه کلید هگزا دسیمالی وارد کامپیوتر میشدند.
برنامهها از طریق بازکردن شمارنده برنامه با آدرس اولین دستورالعمل آغاز میگردیدند. نتایج اجرا از طریق بررسی محتویات ثباتهای مربوطه و محلهای حافظه بدست میآمدند. دستگاههای ورودی / خروجی در صورت وجود میبایست از طریق اجرای مستقیم برنامه، مثلاً از طریق خواندن و نوشتن درگاههای ورودی / خروجی مربوطه کنترل میشدند. بدهی است میزان سودمندی برنامهسازی با ماشین ساده جهت سختافزار و کاربران کم بود. پردازش طولانی و طاقتفرسای برنامه و ورود دادهها عملاً از اجرای تمام برنامهها، مگر برنامههای خیلی کوتاهی در چنان محیطی ممانعت به عمل میآورد.
گام تکاملی قابل توجه بعدی در استفاده از سیستم کامپیوتر با پیدایش دستگاههای ورودی و خروجی نظیر کارت خوانهای کارتهای منگنه شده و نوارخوانهای نوار کاغذی و مترجمهای زبان برداشته شد. در این راستا برنامهها که به یک زبان برنامهسازی نوشته میشدند، با بهرهگیری از یک برنامه کامپیوتری نظیر کامپایلر یا مفسر به شکل قابل اجرایی درمیآمدند. برنامه دیگری به نام بارکننده بطور خودکار برنامههای قابل اجرا را بر حافظه ماشین بار میکرد.
کاربر، برنامه و دادههای ورودیش را بر روی دستگاه ورودی قرار میداد و بارکننده آنها را از آن دستگاه ورودی به حافظه منتقل میساخت. بعد از انتقال کنترل به صورت دستی یا خودکار به برنامه بر شده اجرای برنامه آغاز میگردید. برنامه در حال اجرا، ورودیش را از دستگاه ورودی تعیین شده میخواند و خروحی خود را بر روی یک دیسک خروجی نظیر چاپگر یا صفحه نمایش ظاهر میساخت. هنگامی که برنامه در حافظه بود، ممکن است با مجموعههای مختلفی از دادهها از نو اجرا شود.
روند ساخت و آمادهسازی برنامهها در چنان محیطهایی به علت اجرای سریالی یا پیاپی برنامهها و عملیات دستی گوناگون دربرگیرنده در پردازش خیلی کند و دشوار بود. در یک سلسله عملیات متداول برنامه ویرایشگر بار میشد تا برنامه یا کد مبدا برنامه کاربر را آماده سازد. گام بعدی، بارکردن و اجرای مترجم زبان و مهیا ساختن که مبدا برنامه کاربر جهت آن بود. هنگامی که دستگاههای ورودی سریالی نظیر کارتخوانها بکار برده میشدند، مترجمهای زبان چندکاره نیاز به آن داشتند که برنامه مبدا جهت خوانده شدن در طول هر گذر جابجا گردد. اگر خطاهای دستوری کشف میشدند، کل پردازش باید از نو تکرار میشد. سرانجام برنامه یا کد مقصد حاصله از برنامه مبداء که از نظر دستوری از صحت برخوردار بود، باز میشد و اجرا میگردید. اگر خطاهای زمان اجرا کشف میشدند، وضعیت ماشین میتوانست مورد بررسی قرار گیرد و توسط کلیدهای میز فرمان یا با کمک برنامهای به نام اشکالزدا اصلاح میشد.
نرمافزارهای سیستم، علاوه بر مترجمهای زبان، شامل بارکنندهها و احتمالاً برنامههای ویرایشگر و اشکالزدا بود. بشتر آنها از دستگاههای ورودی / خروجی استفاده میکردند و بدینلحاظ میبایست برنامهای داشته باشد که آن دستگاهها را بکار بیاندازد، چون بسیاری از برنامههای کاربران نیز از دستگاههای ورودی / خروجی جهت استفاده از تمام برنامهها تامین گردد. این واقعیت منجر به سلسلهای از پیادهسازیهایی گردید که از قراردادن دستههای کارت حاوی روالهای ورودی / خروجی در برنامه کاربر شروع گردید تا سرانجام مجموعهای از روالهای از قبل کامپایل شده و استفاده از پبوندزن و برنامههای کتابخانهای جهت ترکیب آنها با برنامه مقصد هر کاربر ارتقاء وضعیت یافت.
در سیستم عامل شرح داده شده، روالهای ورودی / خروجی و برنامه بارکننده یک شکل ابتدایی یک سیستم عامل را نشان میدهد. هرچند کاملاً خام بود، باز هم یک محیطی را جهت اجرای برنامهها فراتر از آنچه در ماشین ساده وجود داشت، را فراهم میساخت. مترجمهای زبان، ویرایشگرها و اشکالزداها، برنامههای سیستمی بودند که متکی به خدمات ارائه شده از جانب سیستم عامل بودند، ولی بطور کلی به عنوان بخشی از آن درنظر گرفته نمیشدند. به عنوان مثال، یک مترجم معمولاً از روالهای ورودی / خروجی فراهم شده جهت بدست آوردن ورودی (برنامه مبدا) و تولید خروجی استفاده مینمود.
این شیوه عملیات، هرچند پیشرفت قطعی نسبت به رویکرد ماشین ساده بود، روشن بود که خیلی کارا نبود. اجرای سیستم کامپیوتر نیاز به بارگذاری دستی برنامهها و دادهها داشت. چنین روشی جهت استفاده از منابع نتیجه کمی داشت. میزان مولد بودن کاربر، بویژه در محیطهای چندکاربره کم بود، زیرا کاربران میبایست در انتظار نوبتشان جهت استفاده از ماشین میماندند. حتی با چنان ابزارهایی نظیر ویرایشگرها و اشکالزداها ساخت برنامهها خیلی به کندی پیش میرفت و با برنامه دستی و بارگذرای دادهها همراه بود.
2 .2 .1- پردازش دستهای
گام بعدی، در تکامل سیستمهای عامل خودکار نمودن ترتیب عملیات لازم جهت اجرای برنامه و جهت جنبههای مکانیکی ساخت برنامه بود. هدف، افزایش میزان استفاده از منبع سیستم و مولدبودن برنامهنویس از طریق کاهش یا حذف زمانهای بیکاری ناشی از عملیات دستی نسبتاً طولانی بود.
حتی زمانی که کاربر به صورت خودکار درآمد، عملیاتی نظیر سوارکردن نوارها و تکمیل نمودن فرمها نسبت به سرعتهای پردازنده و حافظه، زمان زیادی طول میکشید. چون چندان کاری جهت کاهش این عملیات نمیتوانستند انجام دهند، عملکرد سیستم از طریق تقسیم سرباز بین تعدادی برنامهها ممکن بود افزایش یابد، بویژه اگر چند برنامه به صورت دستهای بر روی یک نوار ورودی منفرد جای میگرفتند تا عملیات یاد شده یکبار برای آن انجام میگرفتند، سربار برنامه به همین ترتیب کاهش مییافت.
یک مفهوم مرتبط که غالباً مرحلهبندی نام داشت، این بود که کارهای ارائه شده از نو ترتیب مییافتند. به نحوی که کارهای مشابه در یک دسته قرار میگرفتند. مثلاً با دستهبندی چند کار کامپایل فرترن توام با هم، کامپایلر فرترن میتوانست تنها یکبار شود تا تمام آنها را در یک ردیف پردازش نماید.
برای پی بردن به استفاده بالقوه از منابع پردازش دستهای یک دسته کار نصب شده میبایست بدون دخالت کند انسان بطور خودکار اجرا میگردید. دستورالعملهایی باید فراهم میشد که به سیستم عامل بگوید چگونه با هر کار منفرد برخورد نماید. این دستورالعملها معمولاً با استفاده از فرامین سیستم عامل که در بطن حوی واره دستهای نهفته میشد، تامین میگردید. فرامین سیستم عامل، دستورهایی بودند که به زبان کنترل کار یا JCL نوشته میشدند.
فرامین JCL معمولاً حاوی علائم آغاز و پایان کار، فرامینی جهت بارگذاری و اجرای برنامهها و فرامینی جهت اعلام نیازمندیهای منابع، نظیر زمان اجرای مورد انتظار و نیازهای حافظه بود. این فرامین توام با برنامهها و دادههای کاربر در بطن جوی واره کار جای میگرفت.
یک بخش سستم عامل دستهای مقیم در حافظه که غالباً ناظر دستهای نامیده میشد، این فرامین را میخواند و تفسیر میکرد و اجرا مینمود. در پاسخ به آنها کارهای دستهای، هربار یکی اجرا میشدند. هرکار شامل چندگاه بود و هر کدام معمولاً دربر گیرنده بارگذاری و اجرای برنامه بود. به عنوان مثال، یک کار ممکن بود شامل کامپایل کردن و اجرای بعدی برنامه یک کاربر باشد. هرگام خاصی که باید طی شود، با بهرهگیری از فرمان مناسبی به ناظر خاطرنشان میگردید، هنگامی که ناظر با فرمان LOB_END مواجه میشد، ممکن بود به دنبال بکار دیگری که با فرمان JOB_START مشخص میگردید، به گردد.
یک ناظر دستهای، علاوه بر بارکننده و روالهای متداول ورودی / خروجی حاوی مفسر زبان فرمان بود که قادر به تشخیص و پردازش مجموعهای از فرامین نظیر RUN, LOAD بود.
با کاهش و حذف دورههای عطالت یا بیکاری مولفه که ناشی از عملیات کند دستی بود، پردازش دستهای شامل پتانسیل بیشتری جهت استفاده منابع سیستمی و توان عملیاتی افزوده شده را عرضه میداشت تا پردازش سریالی ساده، بویژه در سیستمهای کامپیوتری که به چند کاربر خدمات عرضه میداشتند.
تا آنجا که به ساخت برنامه مربوط میشد، پردازش دستهای چندان پیشترفت بیشتری نسبت به پردازش سریالی ساده نبود. زمان برگشت که عبارت بود از زمان نحویل کار به ماشین تا زمان دریافت خروجی از ماشین در سیستمهای دستهای طولانی بود. مرحلهبندی ممکن بود زمان برگشت را افزایش دهد، زیرا مدت زمان انتظار جهت نصب شدن یک دسته کار کامل به آن افزوده میشد.
علاوه بر آن، برنامهنویسان مجبور بودند به صورت برون خطی با استفاده از روبرداری حافظه برنامههایشان را غلطگیری یا اشکالزدایی نمایند که با حالتی که هنگام کشف خرابی میتوان ماشین را بلافاصله مورد بررسی قرار داد، در تضاد بود.
با ترتیبدهی اجرای برنامه که قسمت اعظم آن با استفاده از سیستمهای عامل دستهای به صورت خودکار درآمده بود، اختلاف سرعت بین پردازندههای سریع و دستگاههای ورودی خروجی نسبتاً کند، نظیر کارتخوانها و چاپگرها یک مانع عملکردی عمدهای را پدید آورده بودند. پیشرفتهای بیشتری در پردازش دستهای عمدتاً در راستای افزایش توان عملیاتی و استفاده منابع از طریق همپوشی عملیات ورودی / خروجی بود. این پیشرفتها همزمان با معرفی مجاری یا کانالهای دستیابی مستقیم به حافظه، کنترل کنندههای جانبی و پردزندههای ورودی و خروجی تخصیص یافته بود.
خودگردانی و هوشمندی افزوده شده زیر سیستمهای ورودی / خروجی همپوشی اجرای برنامه را با عملیات ورودی / خروجی از سوی برنامههای دیگر امکانپذیر ساخت. به عنوان مثال، بخشی از حافظه اصلی ممکن بود جهت بافرینگ یا میانگیری ورودی / خروجی کنار گذاشته شود. در طول اجرای برنامه بخش ورودی / خروجی ممکن بود همزمان کارتهای ورودی کار بعدی را بخواند و به بافر با حافظه میانگیر منتقل سازد. هنگامی که آن کار در مرحله بعدی جهت اجرا زمانبندی میشد، پردازنده میتوانست هم سرعت با حافظه اصلی ورودیش را دریافت دارد که با ورودی کند کارتخوان در تضاد بود. بطور مشابه خروجی ممکن بود به حافظه میانگیر خروجی انتقال یابد و همزمان با اجرای کار بعدی چاپ شود.
شکلهای پیچیدهتر بافرینگ ورودی / خروجی که اسپول نامیده میشد، از دیسکها جهت ذخیرهسازی موقت ورودی/ خروجی کار استفاده مینمود. عملیات کار دیسک جهت برنامه بعدی و دیسک به چاپگر جهت برنامه قبلی با بهرهگیری از ناظر اسپولینگ همزمان با اجرای برنامه جاری انجام میگرفتند.
برای حفظ میزان استفاده بالای پردازنده، لازم میشد که ورودی / خروجی چند کار به صورت صف بر روی دیسک ذخیره شوند. به واسطه توانایی اسپولینگ در افزایش نرخ انتقال موثر ورودی / خروجی در زمان اجرای برنامه گونههایی از آن در انواع سیستمهای عامل دیگر نیز حضور یافتند.
بسیاری از سیستمهای عامل تککاربره جهت کامپیوترهای شخصی اساساً جهت پردازش سریالی مهیا میگردیدند. برنامههای کاربر معمولاً در پاسخ به فرامین تایپ شده کاربر از میز فرمان بر حافظه بار میشدند و اجرا میگردیدند و یک سیستم مدیریت فایل غالباً جهت ذخیرهسازی برنامه و دادهها فراهم میگردید. با استفاده از فایلهای حاوی فرامینی به سیستم عامل که بطور پیدرپی اجرا میشدند، شکلی از پردازش دستهای میسر گردید. فایلهای فرامین اساساً جهت خودکار نمودن مشخصات انفرادی پیچیده و توالیهای عملیاتی عملیات مکرر مورد استفاده قرار میگرفتند.
3 .1- تکامل سیستم عاملهای جدید
در طی سالهای گذشته، ساختار و قابلیت سیستم عامل به تدریج تکامل یافت. اما در سالهای اخیر عناصر طراحی جدید در سیستمهای عامل نوین و نسخههای جدید سیستمهای عامل موجود معرفی شدند که ماهیت سیستمها عامل را تغییر دادند. این سیستمهای عامل، به توسعههای جدید در سختافزار و کاربردهای جدید پاسخ میدهند. مهمترین توسعههای سختافزار عبارتند از: ماشینهای چندپردازندای، افزایش سرعت ماشینها، اتصال به شبکههای سریع، افزایش اندازه و تنوع دستگاههای ذخیرهسازی. در طیف کاربردهای چندرسانهای، دستیابی به وب و اینترنت و محاسبات مشتری – کارگزار در طراحی سیستم عامل موثر بودهاند.
میزان تغییر درخواستها در سیستم عامل، نه تنها مستلزم اصلاحات و پیشرفتهایی در معماریهای موجود بود، بلکه مستلزم روشهای جدیدی برای سازماندهی سیستم عامل است. گسترهی وسیعی از روشها و عناصر طراحی در سیستمهای عامل آزمایشی و تجاری به کار گرفته شدند، اما اغلب این کارها را میتوان به صورت زیر دستهبندی کرد:
• معماری ریز هسته
• چند نخی
• چندپردازشی متقارن
• سیستمهای عامل توزیعی
• طراحی شی گرا
تا کنون، اغلب سیستمهای عامل شامل هسته یکپارچه و بزرگی بودند. اغلب وظایف سیستم عامل مثل زمانبندی، سیستم فایل، شبکهبندی، گردانندههای دستگاه، مدیریت حافظه و غیره در این هسته بزرگ انجام میشدند. معمولاً هسته یکپارچه به صورت فرآیند واحدی پیادهسازی میشود، به طوری که تمام عناصر از فضای آدرس مشترکی استفاده کنند. معماری ریز هسته فقط وظایف اساسی مثل فضاهای آدرس، ارتباطات بین فرآیندها (IPC) و زمانبندی پایهای را به هسته واگذار میکند. سایر خدمات سیستم عامل، توسط فرآیندهایی که گاهی کارگزار نامیده میشوند، ارائه میگردند. این فرآیندها در حالت کاربر اجرا میشوند و ریزهسته با آنها مثل سایر کاربردها رفتار میکنند. در این روش، پیوستگی توسعه هسته و کارگزار از بین میرود. کارگزاران، ممکن است برای کاربرد با محیط خاصی درنظر گرفته شوند. روش ریز هسته، پیادهسازی را آسان میکند، قابلیت انعطاف را فراهم میکند و برای محیط توزیعی مناسب است. در واقع، ریزهسته با فرآیندهای محلی و راه دور با روش یکسانی تعامل دارد. به این ترتیب، ساخت سیستمهای توزیعی آسان میشود.
در چندنخی، فرآیندی که کاربردی را اجرا میکند، به نخهایی تقسیم میشود که میتوانند همزمان اجرا شوند. نخها و فرآیندها به صورت زیر متمایز میشوند:
• نخ یک واحد کار قابل توزیع است. شامل بستر پردازنده (شمارنده برنامه و اشارهگر پشته) و ناحیه داده پشته (برای فراخوانی زیر روال) است. نخ به صورت ترتیبی اجرا میشود و وقفهپذیر است، بطوری که پردازنده میتواند اجرای نخی را به تعویق اندازد و به نخ دیگری بپردازد.
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 79 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود مقاله سیستم عامل، روح کامپیوتر