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