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






جلسه یازدهم:

صفحه بندی قطعات:

ادرس منطقی در صفحه بندی قطعات از سه قسمت تشکیل شده است.
ادرس Segment که اطلاعات ان در جدول Segmentation Table قرار دارد.
ادرس Page که این ادرس ،ادرس Page ای است که در Segment مورد نظر جای دارد.
فیلد Offset که نشان می دهد از کجای ان صفحه اطلاعات بارگذاری شود.
ابتدا ادرس Segment توسط Segment Table Base Register چک می شود که ایا این Segment در جدول Segment Table وجود دارد یا نه.اگر وجود دارد،شماره ی Segment مورد نظر و صفحه ای که قرار است اطلاعات در ان ریخته شود از ST واکشی می شود.شماره ی Page و Offset که در ادرس منطقی وجود دارد با شماره ی Segment و Page ای که واکشی شده است ،مقایسه می شود.اگر Page مورد نظر با Offset داده شده در این Segment و Page جای گرفت،ان موقع شماره ی Page و Offset برای یافتن Page مورد نظر در جدول PMT ارسال می شود و شماره ی Page با Segment مورد نظر Concat می شود.ادرس صفحه را در جدول PMT پیدا می کند.ادرس مورد نظر را از ان سطر PMT می خواند و با Offset مورد نظر Concat می شود و ادرس فیزیکی به دست می اید.

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

Virtual Memory :

شمای مدیریت حافظه است که در ان تنها قسمتی از پروسه وارد حافظه ی اصلی می شود.این امکان کمک می کند تا پروسه هایی که اندازه ی انها بزرگتر از حافظه ی اصلی است،بتوانند اجرا شوند.در این روش قسمتی از حافظه ی جانبی به عنوان حافظه ی مجازی انتخاب می شود و به مانند حافظه ی اصلی فریم بندی می شود.پروسه ای که قرار است اجرا شود و اندازه ی ان به اندازه ی حافظه ی اصلی نیست(بزرگتر است) ،مابقی پروسه در حافظه ی مجازی اجرا می شود.جدول PMT با کمی تغییرات و اضافه کردن فیلد Presence (حضور) جدولی را تشکیل می دهد که می توان صفحات را ادرس دهی کرد.پیدا کردن یک Page ازپروسه در حافظه ی مجازی توسط File Map Table صورت می گیرد.این جدول مشخص می کند که کدام Page از پروسه در کدام Frame از حافظه قرار دارد. FMT از لحاظ منطقی کاری به ترتیب قرار گرفتن صفحات روی دیسک ندارد. فیلد حضور نشان می دهد ایا Page ای که قراراست اجرا شود در حافظه ی اصلی است یا نه.اگر در حافظه ی اصلی قرار داشته باشد ،مقدار فیلد حضور IN می شود.اگر در خارج از حافظه ی اصلی قرار داشته باشد ،مقدار فیلد حضور OUT می شود.

سیاست های تخصیص حافظه ی مجازی:

1) Allocation Policy :

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

2) Fetch Policy (واکشی) :

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

3) Replacement Policy (سیاست جایگزینی) :

اگر حافظه ی اصلی پر بود، کدام پروسه از حافظه خارج شود و پروسه ای که امده جایگزین شود.این سیاست خود به سه قسمت تقسیم می شود:
1) 3-1 FiFo صف
2) 3-2 LRU Stack
3) 3-3 Optimal بهینه
در روش FiFo پروسه ای که وارد صف می شود اول خدمات می گیرد و خارج می شود و پروسه ی بعدی وارد می شود.

4) Last Recently Used ( LRU) :

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

5)Optimal :

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

جلسه دوازدهم:

6) Place Ment Policy :

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

Buddy System :

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

بن بست:وضعیتی است که پروسه ای منبعی را در اختیار می گیرد و خود درخواست منابعی را می کند که در اختیار پروسه های دیگر است.به این حالت بن بست می گویند.

چهار حالت وجود دارد که این چهار حالت باعث وقوع بن بست می شود.البته اگر سه تا از این شرایط برقرار باشد می گوییم که بن بست رخ داده است.
بازداری دوجانبه 1) Mutual Exclusion
نگه داشتن و انتظار 2) Hold And Wait
قبضه نکردن 3) Non Preemption
انتظار حلقوی 4) Circular Waiting
1) در یک زمان فقط یک پروسه می تواند از منبع استفاده کند.
2) منبع را بگیرد و منتظر بماند تا منبع ازاد شود.بعد منبع ازاد را به اختیار خود دراورد.
3) پروسه ای منبعی را در اختیار بگیرد و به هیچ وجه منبع را ازاد نکند.
4) پروسه ی P1 درخواست منبعی را بکند که در اختیار پروسه ی دیگر است و ان پروسه درخواست منبعی را بکند که در اختیار پروسه ی P1 است.
راه هایی که باعث می شود از بن بست جلوگیری شود:

1) بازداری دوجانبه:

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

2) نگه داشتن و انتظار:

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

3) قبضه نکردن:

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

4) انتظار حلقوی:

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

جلسه سیزدهم:

مدیریت فایل:

یک نوع ساختار داده ای است که اطلاعات از طریق این ساختار داده ای بر روی حافظه ی جانبی قرار می گیرد.یعنی اگر فایلی وجود دارد،حافظه ی جانبی وجود دارد.فایل حتما در یک حافظه ی ماندگار قرار می گیرد.وظیفه ی سیستم عامل این است که فضای حافظه ی جانبی را مدیریت کند تا این فضا در اختیار فایل قرار گیرد.یعنی به قسمت های منطقی فایل این فضا را تخصیص بدهد یا نه؟
دو نوع مدیریت فایل داریم:
1) مدیریت فایل به صورت یکپارچه
2) مدیریت فایل به صورت غیر یکپارچه
در مدیریت فایل به صورت یکپارچه تمام Page های مربوط به فایل در Block های مجاور همدیگر قرار می گیرد.

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

در روش پراکنده دو روش وجود دارد :
یکی به صورت زنجیره ای و دیگری به صورت Index .در اولی از یک لیست پیوندی استفاده می شود.در انتهای هر بلاک اشاره گری است به بلاک بعدی .در این روش نیاز به همجواری فیزیکی وجود ندارد.این اشاره گر خود یک نوع اتلاف حافظه است.
در روش دوم پراکنده ،یک بلاک از حافظه ، Index (شاخص دار) شده،ادرس تمام بلاک های پر شده به صورت مرتب شده قرار دارد.اگر فایلی نیاز به دسترسی داشت ،بلاک شامل ادرس را می خواند و بلاک های مورد نظر ان را پیدا می کند.
* ارسال مقاله توسط عضو محترم سایت با نام کاربری : PSTdinco