مفاهیم سیستم عامل (1)






جلسه اول:

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

ویژگی ها:

سهولت : باعث سهولت استفاده از رایانه می شود.
کارامدی : سیستم موجب استفاده کارامد منابع می شود.
قابلیت رشد : سیستم عامل باید طوری ساخته شده باشد که بتوان برنامه های کاربردی جدید را روی ان نصب کرد و سیستم عامل را ارتقا داد.

منابع کلیدی سیستم عامل:

1) پردازنده
2) حافظه
3) دستگاه های ورودی و خروجی
4) داده : مستقل از فیزیک و جرم است.قائم به ذات نیست.داده روی کابل IDE حتی روی شبکه نگهداری شود مهم نیست.مهم این است که سیستم عامل از مکانی که خودش اطلاع دارد ،داده را بردارد و مورد استفاده قرار دهد.
سیستم چند پردازشی:یعنی اینکه چندین پردازنده در اختیار داریم و هر پردازنده پردازش خاصی را انجام می دهد.معمولا در سیستم های چند پردازشی یک پردازشگر به عنوان Master و بقیه ی پردازشگرها به عنوان Slave عمل می کنند.
چند وظیفه ای:در یک بازه ی زمانی چند پروسه انجام شود.اگر چندین پردازنده داشته باشیم ،می توانیم چندین Task را مدیریت کنیم. در صورتی که یک پردازنده داشته باشیم از Time Sharing استفاده می کنیم.
اشتراک زمانی یا تسهیم زمانی:یعنی ارائه یک منبع در زمان های متفاوت به متقاضیان متقابل. اشتراک زمانی برای استفاده CPU یا پردازشگر بسیار مهم است.(در شرایط مطلوب با الگوریتم مطلوب) اما اینکار برای به اشتراک گذاشتن منبعی مثل Printer بین چندین کاربر یا چندین پروسه غیر معقول می باشد.
نکته:به کارگیری چند کاره بسیار مهم است . چون امکان دارد یک پروسه یا یک برنامه خاص دارای چندین Task باشد و این Task ها نتوانند به صورت همزمان یا با اشتراک زمانی خدمات را بگیرند.
پردازش:به برنامه های در حال اجرا که قسمتی از ان در حافظه ی اصلی قرار گرفته باشد ،پردازش می گویند.
حالت هایی که یک پردازشگر می تواند به خود بگیرد:

حالت Running :

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

حالت Ready :

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

حالت Despatch :

یعنی انتخاب پروسه از حالت Ready به Running . این عمل توسط سخت افزاری به نام Despatcher انجام می شود.این پروسه براساس الگوریتم هایی که کار می کند پروسه را از حالت Ready به Running می برد.

Time Run Out :

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

حالت Blocked :

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

حالت Suspend Ready :

زمانی وجود دارد که پروسه ی در حال اجرا هیچ مشکلی اعم از مشکل زمانی و منبع نداشته باشد و اینکه سیستم عامل نیاز بداند که پروسه را تعلیق کند.این عمل زمانی انجام می شود که پروسه ای در حالت Running باشد که این پروسه براساس الگوریتم خاصی اجرا می شود و تمام منابع سیستم در اختیار این پروسه قرار دارد و پروسه های خیلی کوچکتر از این پروسه در صف Ready باشند و نیاز به منبع های در اختیار پروسه ی در حالت Running داشته باشد. اگر پروسه به Loop افتاده باشد سیستم عامل پروسه را به Suspend می فرستد.

حالت Suspend Blocked :

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

جلسه دوم:

پروسه ها به دو گونه هستند:
1) پروسه هایی که مقید به ورودی و خروجی هستند.
2) پروسه هایی که مقید به CPU هستند.
پروسه هایی که مقید به CPU هستند؛به این پروسه ها، پروسه های Comfort یا مطلوب می گویند. به علت اینکه این پروسه ها با پردازنده در ارتباط هستند و سرعت انها بالا است و جهت گیری که سیستم عامل ها در مورد این پروسه ها دارند، این است که کار این پروسه ها را سریعتر انجام می دهند.به این معنی که منابع کلیدی را سریع تر ازاد می کنند و در اختیار این پروسه ها قرار می دهند و این به این علت است که CPU بتواند سریع تر در اختیار پروسه های دیگر قرار گیرد.

وظایف سیستم عامل:

1) رابط کاربر:

در سیستم عامل های قدیمی رابط کاربر به صورت Command بود.مثلا در سیستم عامل DOS ، ما برای ارتباط با کامپیوتر از Prompt استفاده می کردیم . در سیستم عامل های جدید این ارتقا پیدا کرد و تبدیل شد به GUI .

2) به اشتراک گذاشتن سخت افزار:

این خصوصیت به صورت اجباری است.چون نمی توان سخت افزاری مانند CPU را به یک کاربر اختصاص داد و به کاربر دیگر اختصاص نداد.

3) اجازه به اشتراک گذاشتن داده ها بین کاربران:

منظور این است که به کاربر اجازه دهد که داده ها را به اشتراک بگذارد یا نه؟این عمل صرفنظر از سخت افزار است. User ها تنها به کاربران انسانی محدود نمی شوند . در این میان پروسه ها نیز اجازه استفاده از داده ها را دارند.

4) زمان بندی منابع برای تخصیص به کاربران:

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

5) تسهیل در ورودی و خروجی:

یعنی اینکه سیستم عامل این توانایی را داشته باشد که به طور خودکار سخت افزار ما را بشناسد یا توانایی ارتقا داشته باشد. این به این منظور است که بتوان Driver مخصوص به هر سخت افزار را به راحتی در ان نصب کرد.

6) توانایی شناخت خطاها در سیستم عامل باید وجود داشته باشد:

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

7) سیستم عامل باید حسابدار باشد:

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

ساختار PCB : ( Process Control Block) :

سیستم عامل اطلاعات مربوط به پروسه ها را در یک ساختار به نام PCB نگهداری می کند.این اطلاعات مربوط به پروسه ها در سیستم عامل ها متفاوت است و در طول حیات پروسه ها این اطلاعات تغییر می کند.

اطلاعاتی که در مورد پروسه ها باید داشته باشیم:

1) نام پروسه :

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

2) اولویت پروسه( Priority ) :

مفهوم ان به غیر از حق تقدم است.

3) وضعیت پروسه (وضعیت سخت افزاری) :

وقتی که پروسه ای در حال اجرا است و سیستم عامل یا کاربر بنا به دلایلی این پروسه را تعلیق می کند،به هنگامی که مشکل تعلیق برطرف شد و خواست با CPU کار کند باید بتواند به وضعیت قبلی برگردد.مثلا باید مشخص شود که این پروسه از کدام Register استفاده می کرده است.

4) امار و اطلاعات و زمانبندی برای استفاده منابع :

این مشخص می کند از کدام منبع چند بار استفاده شده است یا CPU چند بار به پروسه اختصاص داده شده است و پروسه چقدر برای به دست اوردن منابع انتظار کشیده است.

5) مدیریت و وضعیت حافظه :

مشخص می کند با استفاده از ساختار مدیریت حافظه این پروسه در کجای حافظه قرار دارد.ادرس دستیابی به پروسه در اینجا مشخص می شود.

6) وضعیت ورودی و خروجی :

کدام دستگاه مورد استفاده پروسه قرار گرفته است .پروسه از کدام پورت ورودی و خروجی استفاده کرده است.

7) اطلاعات مربوط به مدیریت حافظه و فایل:

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

8) اطلاعات مربوط به حسابداری و حسابرسی :

مشخص می کند پروسه از کدام منبع به چه میزان استفاده کرده است وچه میزان نیاز به منابع برای اجرا دارد.

جلسه سوم:

زمانبندی :

زمانبندی به مجموعه ای از مکانیزم ها و سیاست ها گفته می شود که یک سیستم عامل برای اجرای فرایندها به کار می برد.
زمانبند ماجولی از سیستم عامل است که انتخاب می کند کدام فرایند اجرا شود.
سه نوع زمانبند داریم:
1) Long Term Schduling
2) Medium Term Schduling
3) Short Term Schduling
پروسه های Bach به پروسه هایی گفته می شود که با کنترل و Data همراه هستند . این پروسه ها عموما منابع سیستم را اشغال می کنند.

زمانبند بلند مدت:

برای انتخاب پروسه های Bach از صف پروسه های Bach به حالت Ready توسط سیستم عامل استفاده می شود.

زمانبند میان مدت:

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

زمانبند کوتاه مدت:

زمانبندی است که پروسه هایی که در صف Ready هستند را برای اجرا انتخاب می کند.این پروسه ها شامل پروسه های Bach ،پروسه های تعاملی و پروسه هایی که از سطح Suspend وارد Ready شده اند هستند.
Suspend Queue :پروسه هایی که در صف Suspend Queue هستند پروسه هایی هستند که سیستم عامل برای انجام رویدادی خاص انها را تعلیق کرده است و این پروسه ها منتظر اجازه ی سیستم عامل برای اینکه از حالت تعلیق بیرون بیایند هستند.این پروسه ها از حافظه خارج نمی شوند.
پروسه های Interactive همان پروسه هایی هستند که ما انتظار داریم بعد از دادن Comment به سیستم، بلافاصله پاسخ ان را در Terminal مشاهده کنیم.

معیار های کمی زمانبندی:

1) میزان بکارگیری پردازنده( Processor Utilization )
2) توان عملیاتی( Trough put )
3) زمان انتظار( Waiting Time )
4) زمان پاسخگویی( Response Time )
5) Turn Over Time

میزان بکارگیری پردازنده:

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

Trough put :

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

Turn Over Time :

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

Waiting Time :

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

Response Time :

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

معیارهای کیفی زمانبندی:

1) Fairness (منصفانه) :

ایا الگوریتم ما منصفانه است یا خیر ؟
پروسه توسط الگوریتم به صورت منصفانه انتخاب می شود ؟

2) قابلیت پیش بینی :

وقتی پروسه ای یک زمانی به ان داده و اجرا شد، دفعه ی بعدی اجرا ایا ان زمان به پروسه اختصاص داده می شود یا نه.مثلا یک پروسه 5 نانو ثانیه طول می کشد تا در بار اول اجرا شود.دفعه ی بعدی که قرار است این پروسه اجرا شود ایا این زمان به پروسه اختصاص داده می شود یا خیر.ایا این زمان قابلیت تکرار دارد یا نه و ترافیک سیستم باعث می شود این زمان بیشتر شود یا کمتر.

3) قابلیت تکرار :

وقتی پروسه ای در حال اجرا است ایا دفعه ی بعدی قابلیت اجرا دارد یا نه؟تعیین می کند که اگر پروسه ای در حال اجرا باشد و اجرایش تمام شود ،ایا این امکان وجود دارد که این پروسه برای بار بعد فراخوانی شود.در شرایطی مانند اینکه جدول PCB اماده نباشد ،نمی تواند دوباره فراخوانی شود.

الگوریتم های زمانبندی :

1) First Come First Serviced :

یعنی پروسه ای که اول وارد صف می شود تا انتها اجرا شود و وقتی که اجرایش تمام شد پروسه ی بعدی اجرا شود. یک الگوریتم انحصاری است.یعنی پروسه ای که وارد CPU می شود باید اجرا شود.( Non Primitive )
زمان پاسخگویی این الگوریتم مناسب نیست.البته برای اولین پروسه خوب است و برای پروسه های بعدی خوب نیست.زمان انتظار زیاد است.الگوریتم FCFS برای پروسه های Bach بهتر است.

2) الگوریتم Priority :

الگوریتمی که مبتنی بر اولویت است.این الگوریتم انحصاری نیست.یعنی Primitive است.اولویت بالاتر باشد اجرا می شود.

3) Shortest Remaining Time Next :

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

4) Shortest Job First :

هر پروسه ای کوچکتر باشد خدمات بگیرد . در این حالت Trough put بالا می رود . چون همه پروسه های کوچک اجرا می شود.
هم چنین ممکن است پروسه های بزرگتر اصلا اجرا نشوند،زیرا پروسه های کوچکتر همواره اجرا می شوند.
ادامه دارد ......
ارسال مقاله توسط عضو محترم سایت با نام کاربری : PSTdinco