سیستم عامل جلسه اول

سیستم عامل (Operating system-OS) چیست:
سیستم عامل برنامه ای است که اجرای برنامه های کاربری را کنترل کرده و به عنوان واسط بین برنامه های کاربری و سخت افزار کامپیوتر عمل می کند
https://www.howtogeek.com/wp-content/uploads/2018/08/img_5b68e80f77e33.png?width=1198&trim=1,1&bg-color=000&pad=1,1

اهداف و وظایف سیستم عامل
می توان گفت که سیستم عامل سه هدف دارد:

سهولت (convenience) سیستم عامل استفاده از کامپیوتر را آسان می سازد

کارآمدی (efficiency) سیستم عامل موجب استفاده کارامد از منابع سیستم عامل می شود

قابیت تکامل (ability to evolve) سیستم عامل باید طوری ساخته شود تا به طور موثر،  مورد توسعه و آزمون و معرفی وظایف جدید بدون تداخل با خدمات سیستم امکان پذیر باشد

سیستم عامل به عنوان واسط کاربر و کامپیوتر

می توان ساختار سخت افزار و نرم افزار، ارایه دهنده کاربردها ، برای کاربر را به صورت لایه ای یا سلسله مراتبی در نظر گرفت

 

 

درسنامه آموزشی دانش فنی پایه کلاس دهم شبکه و نرم افزار رایانه پودمان 1:  کلیات - گاما

 

 

 

نرم افزار کامپیوتر چیست؟

 

System Software ( نرم افزار سیستمی ) - ویرگول

 

Operating System - Overview

 

برای کسی که از آن کاربرد ها استفاده می کنید (کاربر نهایی) معمولا جزییات سخت افزار کامپیوتر اهمیتی  ندارد. بنابراین، کاربر نهایی سیستم کامپیوتر را به صورت مجموعه ای از کاربرد ها در می گیرد .هر کاربرد در یک زبان برنامه نویسی به وسیله ی برنامه ساز کاربردی ایجاد می شود. اگر قرار بود برنامه ی کاربردی به صورت مجموعه ای از دستورالعمل های ماشین (Machine code)  و با مسئولیت کامل سخت افزار ایجاد و کنترل شود ، کار بسیار پیچیده و طاقت فرسایی بود، برای سهولت انجام این کار مجموعه ای از برنامه های سیستمی به وجود آمده است،

 

بعضی از این برنامه ها را برنامه های سودمند (Utility software) مانند (ماشین حساب تقویم یا ویرایشگر متن) یا کتابخانه ای می گویند

این دسته از برنامه ها توابعی را پیاده سازی می کنند که مکررا مورد استفاده قرار می گیرد و به ایجاد برنامه مدیریت فایل ها و کنترل دستگاه های ورودی و خروجی کمک می کند ، برنامه ساز از این امکانات برای توسعه برنامه کاربردی استفاده می کند و برنامه های کاربردی در حین اجرا ، برنامه های سودمند برای انجام برخی وظایف احظار می کند

 

مهم ترین برنامه سیستم، سیستم عامل است سیستم عامل سخت افزار را از دید برنامه ساز مخفی می کند و  واسط ساده ای در اختیار کاربر قرار می دهد تا از سیستم به آسانی استفاده کند ،سیستم عامل به عنوان یک میانجی عمل می کند تا برنامه ساز و برنامه های کاربردی آسان تر به آن امکانات و خدمات دسترسی داشته باشند و از آن ها استفاده کند

 

به طور خلاصه سیستم عامل معمولا خدماتی در زمینه های زیر ارایه می کند:

 

توسعه برنامه (Program Development): سیستم عامل امکانات و خدمات متنوعی مثل ویراستار ها  (Editor)و اشکال زدا ها  (Debugger)را برای کمک به برنامه ساز در ایجاد برنامه ارائه می کند، معمولا این خدمات به شکل برنامه های سودمند  (Utility) هستند، گرچه به عنوان بخشی از هسته سیستم عامل محسوب نمی شود ولی همراه سیستم عامل وجود دارد و به نام ابزار های ایجاد برنامه کاربردی خوانده می شوند

 

اجرای برنامه (Program Execution): برای اجرای برنامه کارهای مهمی باید صورت گیرد دستورالعمل ها و داده ها باید به حافظه اصلی بار شوند ، دستگاه های ورودی و خروجی و فایل ها باید مقدار اولیه بگیرند و منابع دیگر باید آماده شوند ، سیستم عامل این وظایف زمان بندی را برای کاربر انجام می دهد

 

دسترسی به دستگاه های ورودی-خروجی(I/O Management)  : هر دستگاه ورودی خروجی برای انجام کار به مجموعه ای از دستورالعمل ها و علامت کنترلی نیاز دارد، سیستم عامل ، واسط یکنواختی را فراهم می کند که این جزییات را مخفی می سازد تا برنامه ساز با استفاده از دستورالعمل های ساده خواندن و نوشتن به این دستگاه ها دسترسی داشته باشد

 

دسترسی کنترل شده به فایل ها  (File management): برای دسترسی به فایل ها ، سیستم عامل نه تنها باید با ماهیت دستگاه های ورودی-خروجی (گرداننده دیسک, گرداننده نوار) آشنایی داشته باشد ، بلکه باید ساختار داده های ذخیره شده در فایل های رسانه ذخیره سازی را بشناسد و در سیستم های چند کاربره سیستم عامل راهکار حفاظتی را برای کنترل دستیابی به فایل ها فراهم می سازد

 

دسترسی به سیستم  (Access Control): برای سیستم های اشتراکی یا عمومی ، سیستم عامل دسترسی به کل سیستم و منابع خاص را کنترل می کند .سیستم عامل باید منابع و داده ها را از کاربران غیرمجاز حفاظت کند و مشکلات ناشی از رقابت، برای منابع را رفع کند

 

کشف و پاسخگویی به خطاها  (Debugging) : وقتی سیستم حین اجراست،  ممکن است خطاهای گوناگونی رخ دهد خطاهای سخت افزای و داخلی و خارجی مثل خطای حافظه ،کار نکردن یا بد کار کردن یک دستگاه و خطا های نرم افزاری مثل تقسیم بر صفر (Division Error)  و سعی در دسترسی به مکان غیر مجاز  (Segment fault) و عدم توانایی سیستم عامل برای پاسخگویی به درخواست یه برنامه کاربردی،  در هر مورد سیستم عامل باید با کمترین تاثیر بر روی برنامه های کاربردی در حال اجرا ، شرایط خطا را از بین ببرد ,عکس العمل سیستم عامل می تواند پایان داده به برنامه عامل خطا, (Termination)  تکرار عمل  (repeat) یا گزارش خطا به برنامه کاربری  (Error) باشد

 

حسابداری (Accounting): یک سیستم عامل خوب آمار بهره برداری از منابع مختلف را جمع آوری کرده و پارامتر های کارایی مثل زمان پاسخ  (Response time)را نظارت می کند. در هر سیستم از این اطلاعات برای پیش بینی نیاز های اتی و تنظیم سیستم برای بهبود کارایی مفید واقع می شود. در سیستم چند کاربره از این اطلاعات به منظور تهیه صورت حساب کاربران استفاده می شود

 

جنبه های سیستم عامل:

سیستم عامل محیطی را فراهم می سازد که برنامه ها در آن اجرا می شوند ،سیستم های عامل از نظر داخلی با هم تفاوت هایی دارند زیرا به شکل های مختلفی ساخته می شوند اما مشترکاتی دارند که در این بخش بررسی می شود

 

چند برنامه ای (Multi Programing):

یکی از مهم ترین جنبه های سیستم عامل توانایی انجام چند برنامه ای است به طور کلی یک برنامه نمی تواند به طور دایم پردازنده و دستگاه های i/o  را در اختیار داشته باشد غالبا هر یک از کاربران چندین برنامه را در حال اجرا دارند ،چند برنامه ای بهره وری پردازنده را افزایش می دهد زیرا کارها (کد و داده ها) را طوری سازمان دهی می کند ،که در هر زمان کاری را برای اجرا دارد

ایده چند برنامه ای به این صورت است که سیستم عامل همزمان چندین کار را در حافظه (Memory) دارد. به طور کلی ،از آن جا که تمام کار ها در حافظه اصلی (Memory) جا نمی شوند. کار ها در آغاز بر روی دیسک (Hard Disk  - HDD) و در مخزن کار (Job pool) ذخیره می شوند این مخزن شامل تمام فرایند هایی است که بر روی دیسک قرار دارند و منتظر هستند تا حافظه اصلی به آن ها تخصیص یابد

 

مجموعه ای از کار ها (Jobs) در حافظه می تواند زیر مجموعه ای از کار هایی باشد که در مخزن کار ها  نگهداری می شوند. سیستم عامل یکی از کارهای موجود در حافظه را انتخاب و شروع به اجرای آن می کند. سرانجام ، این کار ممکن است منتظر بماند تا عملیاتی مثل i/o  انجام گیرد. در این حالت سیستم غیر چند برنامه ای پردازنده بی کار خواهد بود.

 

 اما در سیستم عامل چند برنامه ای ، سیستم عامل کار دیگری را اجرا می کند. وقتی این کار قرار است منتظر بماند سیستم عامل به کار دیگری می پردازد و سرانجام کار اول از حالت انتظار خارج می شود و پردازنده را در اختیار می گیرد، تا زمانی که حداقل یک کار برای اجرا وجود دارد پردازنده بی کار نخواهد بود

 

این ایده در شرایط زندگی نیز وجود دارد مثلا یک وکیل در هر زمان فقط برای یک مشتری کار نمی کند وقتی یکی از آن ها نیاز به کار دیگر مثل تایپ نامه دارد وکیل به مشتری دیگر می پردازد اگر وکیل مشتریان کافی داشته باشد هرگز بی کار نخواهد بود

 

سیستم های چند برنامه ای محیطی را فراهم می کنند که در آن منابع مختلف سیستم (برای مثل پردازنده و حافظه و دستگاه ای جانبی ) به خوبی مورد استفاده قرار می گیرند ولی برای تعامل با کاربر فراهم نشده اند

 

اشتراک زمانی(Time Sharing) چند وظیفه ای (Multitasking):

بسط منطقی چند برنامه ای است. در سیستم های اشتراک زمانی، پردازنده چندین کار را انجام می دهد به طوری که از یکی به دیگری می رود و این تعویض کار ها آن قدر زیاد و سریع انجام می گیرد که کاربر یا کاربران می توانند با هر برنامه در حال اجرا تعامل داشته باشند

 

اشتراک زمانی به سیستم کامپیوتر محاوره ای (interactive)  نیاز دارد که ارتباط مستقیمی بین کاربر و سیستم برقرار می سازد. کاربر با استفاده از دستگاه ورودی مثل صفحه کلید یا موس به سیستم عامل یا مستقیما به برنامه کاربردی دستوری دهد و منتظر نتیجه ی آن در یک دستگاه خروجی می ماند ، بنابراین زمان پاسخ باید کوتاه باشد معمولا کمتر از یک ثانیه

 

سیستم عامل اشتراک زمانی اجازه می دهد کاربران متعددی به طور همزمان در یک کامپیوتر مشترک باشند چون هر فعالیت یا فرمان در سیستم اشتراک زمانی باید کوتاه باشد هر کاربر به زمان اندکی از پردازنده نیاز دارد چون سیستم سریعا از کاربری به کاربر دیگر می رود هر کاربر فکر می کند که سیستم در اختیار اون قرار دارد در حالی که بین چندین کاربر مشترک است

سیستم عامل اشتراک زمانی با استفاده از زمانبدی چند برنامه ای ، بخش کوچکی از کل کامپیوتر اشتراک زمانی را در اختیار هر کاربر قرار می دهد

برنامه ای وارد حافظه شده است و در حال اجرا است فراینده (Process) نام دارد

برنامه یک نهاد غیرفعال ولی فرایند یک نهاد فعال می باشد

 

وقتی فرایندی اجرا می شود ، فقط در مدت زمان کوتاهی اجرا می شود تا تمام شود یا نیاز به انجام عمل i/o  داشته باشد و منتظر بماند. ممکن است i/o  محاوره ای باشد یعنی خروجی به نمایشگر می رود تا کاربر آن را ببیند و یا ورودی از صفحه کلید , ماوس یا دستگاه دیگری می آید. چونi/o  محاوره ای با سرعت تایپ انسانی اجرا می شود ممکن است زمانی زیادی مصرف کند. ورودی ممکن است توسط سرعت تایپ انسانی محدود شود تایپ هفت کاراکتر در هر ثانیه برای انسان سرعت خوبی است اما برای کامپیوتر ها کند است در مدتی که i/o انجام می گیرد پردازنده بی کار نمی ماند بلکه به برنامه ی کاربر دیگری می پردازد

در اشتراک زمانی و چند برنامه ای لازم است چندین کار به طور همزمان در حافظه باشند و اگر چندین کار آماده ورود به حافظه باشند. ولی حافظه ی کافی برای تمام آن ها کافی نباشد آن گاه سیستم باید کارهایی را از بین آن ها انتخاب کند این تصمیم گیری توسط زمان بند کار (job Scheduling)  (Long Term Schduler) انجام می گیرد

 

وقتی سیستم عامل کاری را از مخزن کار ها انتخاب می کند آن کار را برای اجرا به حافظه بار می کند، وجود چندین برنامه به طور همزمان در حافظه , نیازمند نوعی مدیریت حافظه است علاوه بر این اگر همزمان چندین کار آماده اجرا باشند , سیستم باید کارهایی را از بین آن ها انتخاب کند، این تصمیم گیری بر عهده زمانبند پردازنده   (CPU-Schduler – Short Term Schduler) است. سرانجام وقتی چندین کار به طور همروند (Concurrent) اجرا می شوند. امکان تاثیر آن ها بر یکدیگر در تمام فازهای سیستم عامل از جمله زمانبندی فرایند ,ذخیره سازی ,در دیسک و مدیریت حافظه باید محدود باشد

در سیستم اشتراک زمانی سیستم عامل باید، زمان پاسخ معقولی را تضمین کند، که گاهی از طریق مبادله  (Swap)صورت می گیرد. که در آن فرایندها از حافظه ی اصلی   (Memory) به دیسک حافظه جانبی (HDD-SSD) و برعکس منتقل می شود. متداول ترین روش برای دستیابی به این هدف استفاده از حافظه مجازی (Virtual Memory) است. که با این تکنینک فرایندی که کاملا در حافظه نیست می تواند اجرا شود امتیاز اصلی طرح حافطه مجازی این است که کاربران را قادر می سازد که برنامه های بزرگ تر ازحافظه فیزیکی واقعی اجرا کنند.

 علاوه بر این ,  به صورت انتزاعی حافظه اصلی را به یک آرایه بزرگ و یکنواخت از حافظه تبدیل می کند , به طوری که کاربر ,حافظه ی منطقی را مثل حافظه فیزیکی می بیند ,این سازمان دهی مانع از این می شود که برنامه نویسان نگران محدودیت های حافظه فضای ذخیره سازی باشند

این سیستم های اشتراک زمانی باید یک سیستم فایل را نیز فراهم کنند - سیستم فایل، بر روی مجموعه ای از دیسک ها قرار می گیرد و در نتیجه باید مدیریت دیسک نیز فراهم شود. سیستم های اشتراک زمانی راهکاری برای حفاظت منابع در مقابل استفاده نادرست فراهم می سازند برای اطمینان از اجرای عادی سیستم باید راهکاری برای همزمانی و ارتباط  کارها فراهم کند و ممکن است تضمین کند که کارها دچار بن بست  (DeadLock)نمی شود