مقدمه
با توجه به مفهوم حافظه مجازی، برای اجرای برخی از فرآیندها، تنها بخشی از فرآیند باید در حافظه اصلی وجود داشته باشد، به این معنی که تنها چند صفحه در هر زمان میتوانند در حافظه اصلی وجود داشته باشند. با اینحال، تصمیمگیری در مورد اینکه کدام صفحات باید در حافظه اصلی و کدام صفحات در حافظه ثانویه نگهداری شوند، دشوار است زیرا نمیتوانیم از قبل بگوییم که یک فرآیند در زمان خاصی به صفحه خاصی نیاز دارد.
برای غلبه بر این مشکل، مفهومی به نام صفحهبندی و الگوریتمهای جایگزینی صفحه در سیستم عامل معرفیشده است. در مدیریت حافظه مجازی، الگوریتمهای جایگزینی صفحه در سیستم عامل نقش مهمی دارند. هدف اصلی همه سیاستهای صفحهبندی، کاهش حداکثر تعداد خطاهای صفحه است.
تعویض صفحات بسیار گران است (نیازمند استفاده از دیسک است)، بنابراین مایلیم تا حد امکان از خطاهای صفحه جلوگیری کنیم. الگوریتمی که برای انتخاب صفحاتی که برای خالی کردن فضای صفحه جدید استفاده میکنیم، میتواند تأثیر زیادی بر تعداد خطاهای صفحهای که رخ میدهد داشته باشد.
صفحه بندی چیست؟
در حافظه مجازی فرآیندها میتوانند از حافظه بیشتری نسبت به آنچه در ماشین وجود دارد استفاده کنند. هنگامی که به حافظهای دسترسی پیدا میشود که وجود ندارد (عیب صفحه)، باید آن را صفحه بندی کرد.
صفحهبندی به فضای آدرس فیزیکی یک فرآیند اجازه میدهد که بههمپیوسته نباشد. صفحهبندی یک طرح پارتیشنبندی با اندازه ثابت است و به جلوگیری از تکهتکه شدن خارجی و نیاز به فشردهسازی کمک میکند. نگاشت از آدرس مجازی به آدرس فیزیکی توسط واحد مدیریت حافظه (MMU) که یک دستگاه سختافزاری است انجام میشود و این نگاشت به تکنیک صفحهبندی معروف است.
تکنیک صفحهبندی، حافظه فیزیکی (حافظه اصلی) را به بلوکهایی با اندازه ثابت که بهعنوان Frames شناخته میشوند، تقسیم میکند و همچنین حافظه منطقی (حافظه ثانویه) را به بلوکهایی با همان اندازه که بهعنوان صفحات شناخته میشوند، تقسیم میکند. این تکنیک مسیر تمام فریمهای آزاد را حفظ میکند. اندازه فریم بهاندازه یک صفحه است و قاب اساساً مکانی است که میتوان یک صفحه (منطقی) را بهصورت فیزیکی قرارداد.
جایگزینی صفحه در سیستم عامل
وجود حافظه مجازی به ما این امکان را میدهد که همزمان فرآیندهای بیشتری را به حافظه وارد کنیم. وقتی فرآیندی صفحات بیشتر را درخواست میکند و هیچ حافظه رایگانی برای واردکردن آنها در دسترس نیست میتوان راهکارهای زیر را در نظر گرفت:
- فرآیند را در صف انتظار قرارداد تا زمانی که فرآیند دیگری اجرای خود را بهپایان برساند و درنتیجه فریمها را آزاد کند.
- برخی از فرآیندهای دیگر را بهطور کامل از حافظه حذف کنیم تا فریمها آزاد شوند.
- برخی از صفحات را پیدا کنیم که در حال حاضر استفاده نمیشوند، و آنها را به دیسک منتقل کنیم تا فریمهای رایگان دریافت کنیم. این تکنیک صفحهبندی یا جایگزینی صفحه در سیستمعامل نامیده میشود و الگوریتمهای جایگزینی صفحه در سیستم عامل این تکنیکها را عملی میسازند.
در این حالت، اگر فرآیندی درخواست یک صفحه جدید کند و فرض کند هیچ فریم رایگانی وجود ندارد، سیستمعامل باید تصمیم بگیرد که کدام صفحه را جایگزین کند. سیستمعامل باید از یک الگوریتم جایگزینی صفحه برای انتخاب صفحه قربانی استفاده کند و فریم قربانی را روی دیسک بنویسد، سپس صفحه موردنظر را در فریم بخواند و جداول صفحه را بهروز کند. همه اینها نیاز به دو برابر زمان دسترسی به دیسک دارد.
جایگزینی صفحه با تغییر نوع سرویس خطای صفحه، از تخصیص بیشازحد حافظه جلوگیری میکند. برای کاهش هزینه جایگزینی صفحه، یک بیت اصلاح استفاده میشود تا نشان دهد که آیا هر صفحه اصلاحشده است یا خیر؟ این تکنیک، جداسازی کامل بین حافظه منطقی و حافظه فیزیکی را فراهم میکند. برای آشنایی شما با انواع سیستم عاملها پیشنهاد میکنیم فایل آماده موجود در لینک زیر مطالعه کنید و ارائهای جذاب و مخاطب پسند در این زمینه داشته باشید.
خطای صفحه page fault چیست؟
اگر صفحه ارجاع شده در حافظه اصلی وجود نداشته باشد، خطایی رخ میدهد که به آن خطای صفحه یا page fault میگویند. CPU یا همان واحد پردازش مرکزی باید با استفاده از حافظهی ثانویه به صفحه ازدسترفته دسترسی پیدا کند. اگر تعداد خطاهای صفحه بسیار زیاد باشد، زمان دسترسی مؤثر سیستم بسیار زیاد خواهد شد.
تراشینگ thrashing چیست؟
اگر تعداد خطاهای صفحه برابر با تعداد صفحات ارجاع شده باشد یا تعداد خطاهای صفحه بهقدری زیاد باشد که CPU صرفاً مشغول خواندن صفحات از حافظه ثانویه باشد، زمان دسترسی مؤثر برابر با زمان صرف شده توسط کاربر خواهد بود که بسیار بالاست، این مفهوم را تراشینگ (thrashing) مینامند.
هر سیستمعامل روشهای خاص خود را با استفاده از الگوریتمهای جایگزینی صفحه در سیستم عامل برای ذخیره جداول صفحه دارد. اکثراً برای هر فرآیند یک جدول صفحه اختصاص میدهند. یک اشارهگر به جدول صفحه با سایر مقادیر ثبات (مانند شمارنده دستورالعمل) در بلوک کنترل فرآیند ذخیره میشود.
هنگامیکه به توزیعکننده گفته میشود فرآیندی را شروع کند، باید ثبتهای کاربر را مجدداً بارگیری کند و مقادیر جدول صفحه سختافزاری صحیح را از جدول صفحه کاربر ذخیرهشده تعریف کند. پیادهسازی سختافزاری جدول صفحه را میتوان به روشهای مختلفی انجام داد.
در سادهترین حالت، جدول صفحه بهعنوان مجموعهای از ثباتهای اختصاصی پیادهسازی میشود. این رجیسترها باید با منطق بسیار سریع ساخته شوند تا ترجمه آدرس صفحهبندی کارآمد باشد. هر دسترسی به حافظه باید از طریق نقشه صفحهبندی انجام شود، CPU این رجیسترها را مجدداً بارگذاری میکند.
باوجود نکات ذکرشده درباره جدول صفحه در الگوریتم های جایگزینی صفحه در سیستم عامل، هنوز هم اکثر رایانههای امروزی به جدول صفحه اجازه میدهند بسیار بزرگ باشد (مثلاً ۱ میلیون ورودی). برای این ماشینها، استفاده از ثباتهای سریع برای پیادهسازی جدول صفحه امکانپذیر نیست. در عوض، جدول صفحه در حافظه اصلی نگهداری میشود و یک ثبت پایه جدول صفحه (PTBR) به جدول صفحه اشاره میکند. تغییر جداول صفحه فقط نیازمند تغییر یک ثبات است که بهطور قابلملاحظهای زمان تعویض متن را کاهش میدهد.
در حالت کلی در تمام الگوریتمهای صفحهبندی سیستمعامل اگر میخواهیم به مکانی دسترسی داشته باشیم، ابتدا باید با استفاده از مقدار PTBR و شماره صفحه در جدول صفحه، فهرست کنیم. این کار نیاز به دسترسی حافظه دارد. شماره فریم را در اختیار ما قرار میدهد که با افست صفحه ترکیب میشود و آدرس واقعی را ایجاد میکند. سپس میتوانیم به مکان موردنظر در حافظه دسترسی پیدا کنیم. از موضوعات مرتبط با مبحث سیستم عامل میتوانید مقاله آماده شده توسط مجموعه پی استور را از لینک زیر مطالعه کنید.
مزایای جایگزینی صفحه در سیستم عامل
مزایای صفحهبندی در سیستمعامل عبارتاند از:
- تخصیص حافظه آسان و ارزان است.
- تکه تکه شدن خارجی را از بین می برد.
- داده ها (فریم های صفحه) را می توان در سراسر PM پراکنده کرد.
- صفحات به طور مناسب طراحی می شوند.
- تعویض کارآمدتر
- نیازی به ملاحظات در مورد پراکندگی نیست.
الگوریتم صفحهبندی در سیستمعامل از تکنیک جایگزینی صفحه بهصورت زیر استفاده میکند:
ابتدا محل صفحه موردنظر را روی دیسک مشخص کرده و سپس یک فریم رایگان پیدا میکنیم:
الف) اگر یک فریم رایگان وجود داشته باشد، از آن استفاده میکنیم.
ب) اگر فریم رایگان وجود نداشته باشد، از الگوریتم جایگزینی صفحه برای انتخاب فریم قربانی استفاده میکنیم.
ج) بعدازآن فریم قربانی را روی دیسک مینویسیم و بر اساس آن تغییرات را در جدول صفحه و جدول فریم اعمال میکنیم.
پسازآن صفحه موردنظر را در کادر تازه آزادشده میخوانیم و سپس جداول صفحه و فریم را تغییر میدهیم و در آخر فرآیند را مجدداً راهاندازی میکنیم.
الگوریتم های جایگزینی صفحه در سیستم عامل
الگوریتم های جایگزینی صفحه در سیستم عامل تصمیم میگیرند که کدام صفحهی حافظه جایگزین شود، فرآیند جایگزینی گاهی اوقات تعویض یا نوشتن روی دیسک هم نامیده میشود، صفحهبندی زمانی انجام میشود که صفحه درخواستی در حافظه اصلی پیدا نشود.
حافظه مجازی دو جنبه اصلی دارد: تخصیص فریم و جایگزینی صفحه، داشتن الگوریتم بهینهی تخصیص فریم و صفحهبندی بسیار مهم است. تخصیص فریم همهچیز در مورد تعداد فریمهایی است که قرار است به فرآیند اختصاص داده شود، درحالیکه جایگزینی صفحه تماماً در مورد تعیین شماره صفحهای است که باید جایگزین شود تا فضایی برای صفحه درخواستی ایجاد شود.
الگوریتم های جایگزینی صفحه در سیستم عامل عبارتاند از:
۱. الگوریتم صفحه بندی FIFO
اولین نوع از الگوریتم های جایگزینی صفحه در سیستم عامل، الگوریتم FIFO است که راه بسیار ساده برای جایگزینی صفحه است و بهعنوان First in First Out شناخته میشود. این الگوریتم عمدتاً جایگزین قدیمیترین صفحهای میشود که برای طولانیترین زمان در حافظه اصلی وجود داشته است. این الگوریتم با حفظ ردیابی تمام صفحات در صف پیادهسازی میشود. با درخواست تعویض، صفحات جدید به انتهای یک صف اضافه میشوند و صفحهای که در بالای صفحه قرار دارد قربانی میشود. اینیک روش مؤثر برای جایگزینی صفحه نیست، اما میتواند برای سیستمهای کوچک استفاده شود.
مزایای FIFO
- استفاده از این الگوریتم ساده و آسان است.
- FIFO باعث سربار بیشتر نمیشود.
معایب FIFO
- این الگوریتم از فرکانس آخرین زمان استفاده، استفاده نمیکند، بلکه فقط جایگزین قدیمیترین صفحه میشود.
- با افزایش فریمهای صفحه، خطاهای صفحه افزایش مییابد.
- عملکرد این الگوریتم بدترین نوع عملکرد است.
مثال: رشته مرجع ۱، ۳، ۰، ۳، ۵، ۶ را با ۳ فریم صفحه در نظر بگیرید. میخواهیم تعداد خطاهای صفحه را بیابیم.
در ابتدا همه اسلاتها خالی هستند، بنابراین وقتی ۱، ۳، ۰ آمد، به شکافهای خالی اختصاص داده میشوند —> 3 خطای صفحه.
وقتی ۳ میآید، از قبل در حافظه است، بنابراین —> 0 خطای صفحه.
سپس ۵ میآید، در حافظه موجود نیست، بنابراین جایگزین قدیمیترین شکاف صفحه یعنی ۱ میشود. —> 1 خطای صفحه.
۶ میآید که در حافظه موجود نیست، بنابراین جایگزین قدیمیترین شکاف صفحه یعنی ۳ میشود.—>1 خطای صفحه.
درنهایت وقتی هم که ۳ آمد در دسترس نیست بنابراین بهجای خطای صفحه ۰، ۱ را جایگزین میکند.
ناهنجاری بلیدی Belady: ناهنجاری Belady ثابت میکند که هنگام استفاده از الگوریتم جایگزینی صفحه First in First Out (FIFO) ممکن است هنگام افزایش تعداد فریمهای صفحه، خطاهای صفحه بیشتری داشته باشیم. بهعنوانمثال، اگر رشته مرجع ۳، ۲، ۱، ۰، ۳، ۲، ۴، ۳، ۲، ۱، ۰، ۴ و ۳ اسلات را در نظر بگیریم، درمجموع ۹ خطای صفحه دریافت میکنیم، اما اگر اسلاتها را به ۴ افزایش دهیم، ما ۱۰ خطای صفحه دریافت میکنیم.
۲. الگوریتم صفحه بندی LIFO
یکی دیگر از الگوریتم های جایگزینی صفحه در سیستم عامل الگوریتم LIFO است. این الگوریتم جایگزینی صفحه، مخفف “Last In First Out” است. این الگوریتم به روشی مشابه با اصل LIFO کار میکند یعنی جدیدترین صفحه جایگزین شده و درنهایت به حافظه اصلی وارد میشود. این الگوریتم از پشته برای نظارت بر تمام صفحات استفاده میکند.
۳. الگوریتم صفحه بندی LRU
این الگوریتم مخفف عبارت “Last recent used” است و به سیستمعامل کمک میکند تا صفحاتی را که در یک بازه زمانی کوتاه استفاده میشوند جستجو کند. در این الگوریتم صفحهای که برای طولانیترین زمان در حافظه اصلی استفادهنشده است برای جایگزینی انتخاب میشود. پیادهسازی این الگوریتم آسان است و این الگوریتم از شمارنده همراه با صفحه زوج استفاده میکند.
مثال ۲: مراجع صفحه ۷، ۰، ۱، ۲، ۰، ۳، ۰، ۴، ۲، ۳، ۰، ۳، ۲ را با فریم ۴ صفحه در نظر بگیرید. میخواهیم شماره خطای صفحه را پیدا میکنیم.
مزایای LRU
- یک تکنیک کارآمد است.
- با این الگوریتم، شناسایی صفحات معیوب که برای مدت طولانی موردنیاز نیستند، آسان میشود.
- در تجزیهوتحلیل کاملاً کمک میکند.
معایب LRU
- گران است و پیچیدگی بیشتری دارد.
- نیاز به یک ساختار داده اضافی دارد.
۴. الگوریتم صفحه بندی بهینه Optimal
نوع دیگری از الگوریتم های جایگزینی صفحه در سیستم عامل، الگوریتم صفحهبندی بهینه (Optimal Page Replacement Algorithm) است که به اختصار الگوریتم صفحه بندی OPR نامیده می شود. این الگوریتم عمدتاً جایگزین صفحهای میشود که در آینده برای طولانیترین زمان استفاده نخواهد شد. اجرای عملی این الگوریتم امکانپذیر نیست. پیادهسازی عملی آن امکانپذیر نیست زیرا نمیتوانیم از قبل صفحاتی را که در آینده برای طولانیترین زمان استفاده نخواهند شد را پیشبینی کنیم.
این الگوریتم منجر به تعداد کمتری از خطاهای صفحه میشود و بنابراین شناختهشدهترین الگوریتم است، همچنین از این الگوریتم میتوان برای سنجش عملکرد سایر الگوریتمها استفاده کرد. چنانچه به فناوری و کامپیوتر علاقمند هستید و میخواهید اطلاعات خود را در این زمینه کاملتر کنید پیشنهاد میکنیم مقاله موجود در لینک زیر را مطالعه کنید.
مزایای صفحه بندی OPR
- استفاده از این الگوریتم آسان است.
- این الگوریتم کارایی عالی را ارائه میدهد و پیچیدگی کمتری دارد.
- برای گرفتن بهترین نتیجه از پیادهسازی ساختارهای داده بسیار آسان است.
معایب صفحه بندی OPR
- در این الگوریتم آگاهی آینده از برنامه، موردنیاز است.
- پیادهسازی عملی امکانپذیر نیست زیرا سیستمعامل قادر به ردیابی درخواست آینده نیست.
۵. الگوریتم صفحه بندی تصادفی
همانطور که از نام آن مشخص است (Random Page Replacement Algorithm) این الگوریتم بهطور تصادفی صفحه را جایگزین میکند. این الگوریتم میتواند مانند هر الگوریتم جایگزینی صفحه دیگری که LIFO، FIFO، Optimal و LRU هستند، کار کند.
مزیت صفحه بندی RPR: بسیار ساده است.
عیب صفحه بندی RPR: به راحتی میتوانید با تعویض صفحات درست قبل از نیاز، انتخابهای “بد” داشته باشید.
تعویض صفحات بسیار گران است (نیازمند استفاده از دیسک است)، بنابراین مایلیم تا حد امکان از خطاهای صفحه جلوگیری کنیم. الگوریتمی که برای انتخاب صفحاتی که برای خالی کردن فضای صفحه جدید استفاده میکنیم، میتواند تأثیر زیادی بر تعداد خطاهای صفحهای که رخ میدهد داشته باشد.
سخن پایانی درباره الگوریتم های جایگزینی صفحه در سیستم عامل
در این پست با الگوریتم های جایگزینی صفحه در سیستم عامل آشنا شدیم و دریافتیم که در سیستمعاملها، صفحهبندی بهعنوان مکانیزمی برای ذخیرهسازی بهکار میرود و برای بازیابی فرآیندها از حافظه ثانویه به حافظه اصلی در قالب صفحات استفاده میشود.
درنهایت یک صفحه از فرآیند دریکی از فریمهای حافظه ذخیره میشود. حافظه اصلی نیز بهصورت فریم تقسیم خواهد شد. هدف اصلی صفحهبندی، تقسیم هر فرآیند در قالب صفحات است، صفحات فرآیند فقط در صورت نیاز به حافظه اصلی وارد میشوند در غیر این صورت در حافظه ثانویه قرار میگیرند.
همه اینها با تکنیکهایی انجام میپذیرند که الگوریتم های جایگزینی صفحه در سیستم عامل نام دارند. امید است که مطالب این پست مفید واقعشده باشد، منتظر نظرات و پیشنهادهای سازنده شما در این زمینه هستیم. موفق و پیروز باشید.
یک پاسخ
توضیحات کامل و عالی بود