تحقیق در مورد BSD

word قابل ویرایش
15 صفحه
8700 تومان
87,000 ریال – خرید و دانلود

BSD, Windows, Linux سیستم های مدیریت حافظه

مقایسه سیستم های مدیریت حافظه
BSD, Windows, Linux
چکیده:
در این قسمت می خواهیم سیستم مدیریت حافظه یک سیستم عامل را مورد بررسی و کاوش قرار دهیم. ما ابتدا با یک نگاه جامع به سیستمهای مدیریت حافظه که به اختصار به آنها MM نیز میگویند میپردازیم و بعد سیستم های مدیریت حافظه را در سیستم عامل های واقعی Linux 2.4 ، Windows 2000 و BSD 4.4 با هم مقایسه می کنیم.

فهرست عناوین

مقدمه ۴
سیستم های مدیریت حافظه ۴
حافظه مجازی ۵
صفحه بندی ۵
مقایسه ۷
ساختمانهای داده ای برای تشریح فضای پروسس ۹
۴٫۴ BSD 9
Windows 11
Linux 12
توزیع فضای آدرس پروسس ۱۲
جابجایی صفحات ۱۳
۴٫۴ BSD 13
Windows 15
Linux 18
پیشنهادات و نتایج ۱۹

۱- مقدمه:
در این مقاله زیر سیستم های مدیریت حافظه این سیستم عامل ها را با هم مقایسه می کنیم Linux 2.4 ، Windows 2000 و BSD 4.4 . BSD 4.4 به این دلیل انتخاب شد که نماینده نسخه های مختلف Unix است که بسیاری از اصول و پایه های مهم طراحی یک سیستم عامل را داراست و امروزه بسیاری از سیستم های عامل مانند: FreeBSD، NetBSD و OpenBSD بر مبنای آن ساخته شده اند. از همه مهمتر، Unix به صورت عالی مستند شده است و کتاب های بسیاری در مورد آن نوشته شده اند. Windows 2000 انتخاب شده است، چون یک سیستم عامل عامه پسند است و برای کامپیوتر های شخصی و افراد مبتدی، بسیار کارا است و حالا هم به شکل یک سیستم عامل کاملا بالغ در آمده است.
Linux 2.4 را به این دلیل انتخاب کردیم که هر روز هوا داران بیشتری پیدا می کند و به نظر می رسد که جایگاه مهمی را در آینده پیدا خواهد کرد. ما خیلی مایل به خصوصیات و کارآیی های این سیستم عامل عا نیستیم و در عوض می خواهیم در این مقاله به نحوه طراحی و معماری داخلی این سیستم عامل ها نگاهی بیاندازیم:

۲- سیستم های مدیریت حافظه:
ما سیستم های مدیریت حافظه را به اختصار، MM می گوییم. MM ها بخش خیلی مهمی از هسته سیستم عامل خستند. کار اصلی آنها مدیریت سلسله مراتب حافظه اصلی یا RAM و دیسک های سخت موجود بر روی ماشین می باشد.
کار های مهم آن شامل: تخصیص حافظه و ازاد سازی آن برای پروسس هایی است که از راهکار ها و پیاده سازی حافظه مجازی (یا Virtual Memory) استفاده می کنندکه با استفاده از دیسک سخت به عنوان حافظه اصلی اضافه کار می کند.
سیستم حافظه باید تا آنجایی که امکان دارد بهینه شود، زیرا که کارآیی آن به شکل فزاینده ای به کارآیی کل سیستم و سرعت آن بستگی دارد.

۲-۱- حافظه مجازی:
ایده مهم در رابطه با سیستم های MM ، حافظه مجازی است. در گذشته در روز های اولیه کامپیوتر، محققان نیاز روزافزون به حافظه را برای برنامه کاربردی احساس می کردند. بنا بر این ایده حافظه مجازی به وقوع پیوست. ایده این است که به یک برنامه به دروغ بگوییم که مقادیر زیادی حافظه برای استفاده آن موجود است. هسته یک چنین راهکاری را با استفاده از حافظه ثانویه دیسک سخت به وجود می آورد تا احتیاج به فضای اضافی حافظه را پاسخ گوید. برای اینکه سیستم مدیریت حافظه مجازی کار کند، ما احتیاج به یک سری توابع نگاشتی داریم که عمل ترجمه آدرس ها را به عهده می گیرد و آدرس مجازی را به آدرس فیزیکی واقعی تبدیل می کند. آدرس مجازی آن آدرسی است که برنامه از آن استفاده می کند تا به یک نقطه از حافظه اشاره کند و آدرس فیزیکی، دقیقا آدرس همان نقطه ای از حافظه است که برای باس محلی حافظه قرار داده می شود. این تابع عموما یکی از توابع صفحه بندی یا سگمنت بندی یا هر دوی آنها است که وابسته به هسته سیستم عامل، معماری پردازنده و حالت های آن دارد.

۲-۲- صفحه بندی:
در صفحه بندی، فضای آدرس (چه به شکل مجازی و چه واقعی) به صفحات ثابتی که البته می تواند دارای چندین سایز مختلف باشد، تقسیم بندی می شود. صفحات به صورت جداگانه می توانند به دست گرفته شوند و در مکان های مختلفی در حافظه اصلی یا دیسک سخت قرار داده شوند.

ترجمه آدرس عملا توسط بخش مدیریت حافظه یا MMU انجام میگیرد. با استفاده از یک جدول صفحه در شکل ۱ نشان داده شده است. جداول صفحه ارتباط بین صفحات مجازی و صفحات فیزیکی را مشخص میکنند. به عنوان مثال کدام صفحه مجازی هم اکنون کدام صفحه فیزیکی را اشغال کرده است.
MMU آدرس حافظه مجازی را به آدرس حافظه فیزیکی تبدیل میکند که شامل شماره Page Frame است و یک آفست در آن صفحه است. حفاظت میتواند به صورت صفحه به صفحه اعمال شود.
از آنجاییکه فضای آدرس مجازی نسبت به حافظه فیزیکی عظیم است ما باید از دیسک سخت برای ذخیره صفحات که در حافظه فیزیکی نمی توانند ذخیره شوند استفاده کنیم. در ارتباط با هر صفحه مجازی در جدول صفحه یک بیت وجود دارد که مشخص میکند که صفحه در حافظه فیزیکی وجود دارد یا خیر. اگر صفحه در حافظه فیزیکی موجود نباشد سخت افزار یک پیغام خطای صفحه تولید میکند و این حالت استثنا در نرم افزار کنترل شده و صفحه مورد نیاز را از روی هارد دیسک به حافظه فیزیکی منتقل میکند یا اگر غیر قابل قبول باشد یک پیغام خطا تولید میشود.
کافمن و دنینگ ویژگیهای سیستمهای صفحه بندی را به سه سیاست مهم تقسیم بندی و معین کرده اند:

۱٫ وقتی سیستم صفحات را به حافظه اصلی بار میکند سیاست واکشی اجرا میشود.
۲٫ جایی که سیستم صفحات را در داخل حافظه قرار میدهد سیاست جایگذاری اعمال میشود.
۳٫ روشی را که به کمک آن سیستم صفحاتی را که باید از حافظه برداشته شوند انتخاب میکند وقتی که صفحات برای تقاضای جایگذاری موجود نبودند سیاست جایگذاری جابجایی اجرا میگردد.

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

۳- مقایسه:
حال میخواهیم بر روی سیستم های مدیریت حافظه در Linux 2.4 ، Windows 2000 و BSD 4.4 متمرکز شویم. سیستم حافظه مجازی در BSD 4.4 مبتنی بر کد حافظه مجازی Mach 2.0,2.5,3.0 است. Windows2000 جزو سری طولانی سیستم عامل ها از زمان MS-DOS ساخته شده است.
Linux 2.4 به وسیله هکرها ساخته شد که در اصل توسط Linux Torvalds ساخته شده است.
علاوه بر منابعی که در جاهای گوناگون برای این سیستم عاملها وجود دارد اطلاعات بیشتری را میتوانید در مورد این موضوع از لینکهای ۱۸و۱۷ و۲۱ در انتهای مقاله بدست آورید.
به جای آنکه سیستمهای مدیریت حافظه را برای تک تک این سیستمها به صورت جزئی توضیح دهیم که یک کار بس طولانی خواهد بود ما در اینجا بعضی از نقاط بارز آنها را با هم مقایسه میکنیم.
هر سه سیستم دارای سیستم مدیریت حافظه مدرنی هستند و دارای نکات مشترک زیادی میباشند. ساختارهای دادهای آنها خیلی به هم شبیه اندو خصوصیات هر یک نیز به یکدیگر شباهت زیادی دارد. بعضی از شباهتهای آنها نیز در زیر آورده شده است:
۲ لایه انتزاعی سخت افزار: تمام این سیستم عاملها دارای لایه ای هستند که به آن Hardware Abstraction Layer یا HAL میگویند که کارهای وابسته به سیستم را انجام میدهد و بنابراین به بقیه هسته اجازه میدهد که به شکل مستقل از زیربنای سخت افزار کد شود. این شیوه، انتقال سیستم عامل را به دیگر ساختارهای سخت افزاری ممکن میسازد.
۳ کپی در حال نوشتن: وقتی که یک صفحه باید به اشتراک گذاشته شود، سیستم فقط از یک صفحه با هر دو پروسس استفاده میکند که از همان کپی صفحه به صورت اشتراکی استفاده میکنند. بهر حال وقتیکه یک پروسس یک عمل نوشتن بر روی یک صفحه انجام میدهد یک کپی خصوصی برای آن پروسس ساخته میشود که بعدا میتواند به صورت انفرادی از آن استفاده کند. این کار راندمان بسیار بهتری را به دست میدهد.
۴ صفحه بندی سایه ای: یک شی سایه برای شی اصلی ساخته میشود به طوریکه شی سایه ای بعضی از صفحات خود را به صورت تغییر یافته از صفحات شی اصلی داراست. اما بقیه صفحات را با شی اصلی به اشتراک میگذارد و آنها با عمل کپی به هنگام نوشتن شکل میگیرند.
۵ یک شبه پشت صحنه: یک شبه پشت صحنه وجود دارد که به صورت متناوبصدا زده میشود و کارهایی را مانند خالی کردن (Flushing) و آزاد سازی حافظه بلا استفاده را انجم میدهد.
۶ فایلهای قرار داده شده در حافظه: یک فایل میتواند بر روی حافظه قرار داده شود که بعدا میتواند با دستورات ساده خواندن و نوشتن اسنفاده شود.
۷ ارتباطات بین پروسسی: فایلهای قرار داده شده بر روی حافظه بعدا اجازه داده میشوند که بین پروسسها به اشتراک گذاشته شوند که یک شیوه را برای ارتباطات بین پرو سس ها فراهم می آورد.
در بخش زیر ما این سیستم ها را از نظر ویژگیهای خاص آنها با هم مقایسه میکنیم.

۳-۱- ساختما نهای داده ای برای تشریح فضای پروسس:
حال ما به مطالعه ساختمان داده هایی که سیستمها برای نگه داری و ذخیره رد حافظه مجازی استفاده میکنند میپردازیم:

۳-۱-۱-BSD 4.4:
در BSD 4.4 ساختمان داده ها در شکل ۲ نشان داده شده اند. از آنجاییکه هر پروسس اساسا دارای فضای آدرس مجازی مسطح خود است این ساختار برای هر پروسس تکرار میشود..
ساختار های اساسی عبارتند از :
۱ Vm_map_entry
2 Vm_map
3 Vm_space
4 Vm_page
5 Shadow object
6 Object

شکل۲) ساختارهای داده ای برای مدیریت حافظه مجازی پروسس

Vm_pMap یک لایه وابسته به سخت افزار است و وظیفه انجام مدیریت حافظه را در پایین ترین سطح خود به عهده دارد و عموما شیوه های مختلفی را که پروسسور های گوناگون برای برنامه نویسی حافظه مجازی دارند را پشتیبانی میکند و کد وابسته به سخت افزار را فق در یک موجول قرار میدهد و موجب میشود که بقیه کد مربوط به حافظه مجازی مستقل از سخت افزار باشد. این کار منجر به یک طراحی پیمانه ا ی و موجولار میشود و انتقال کد به معماریهای گوناگون را به نسبت آسانتر و سریعتر میکند.
ساختار vm_map دارای یک اشاره گر به vm_pmap و یک زنجیره vm_pMap_entry است.
یک vm_map_entry برای هر ناحیه همسا یگی از حافظه مجازی استفاده میشود که دارای همان حقوق حفاظت و وراثت است. سپس به زنجیره ای از اشیا vm_object اشاره میکند. آخرین چیز در لیست شی واقعی است مثل فایل و دیگری سایه شی ها هستند.
سایه شی ها در شاخه دیگری از کار مقیسه ما بحث خواهند شد. شی دارای یک اشاره گر به یک لیست از اشیا vm_page است که نشان دهنده صفحات حافظه فیزیکی واقعی هستند. این صفحات در حافظه اصلی به عنوان حافظه نهان از دیسک سخت شناخته میشوند که یکی از مفاهیم حافظه مجازی است.
همچنین Vm_object دارای اشاره گر هایی به توابعی است که اعمالی را بر روی آن انجام میدهند.

۳-۱-۲-Windows:
ساختارهای دادهای که در WinodwsNT هستند در شکل ۳ نشان داده شده اند.

ساختار های داده ای Windows NT برای مدیریت حافظه مجازی پروسس

به جای یک لیست پیوندی Windows NT آنرا به شکل یک درخت نگه داری میکند. هر نود این درخت شناسه آدرس مجازی یا Virtual address Descriptor یا VAD نامیده میشود. هر VAD نشانگر یک بازه از آدرسهاست که دارای پارامتر های حفاظتی یکسانی هستند و اطلاعات وضعیت را نگه داری میکنند. این درخت همچنین متعادل سازی شده است به این معنی که عمق آن همیشه به میزان حداقل نگه داری میشود و این موضوع این مطلب را میرساند که زمان جستجو یعنی مدت زمان که طول میکشد تا یک نود شامل یک آدرس را پیدا کنیم به صورت نسبی کم خواهد بود.
VAD هر نود درخت را به صورت یکی از مقادیر حالت نگه داری، آزاد یا رزرو شده علامت میزند.
نگه دارها آنهایی هستند که مورد استفاده قرار گرفته اند. به عنوان مثال دیتا یا کد بر روی آنها ریخته شده است.
آنهائیکه مارک آزاد خورده اند هنوز مورد استفاده قرار نگرفته اند و آنهاییکه رزرو خورده اند آنهایی هستند که قابل دسترس برای استفاده و نگاشتن نیستند تا زمانیکه حالت رزرو شده از روی آنها برداشته شود.
رزرواسیون در مواقع بخصوصی مورد استفاده قرار میگیرد به عنوان مثال یک نود میتواند برای پشته یک Thread هنگام ساخته شدن آن رزرو شود. پیوند به ریشه درخت در PCB یا Process control Block نگهداری میشود.

۳-۱-۳- Linux:
لینوکس ساختار داده های حافظه مجازی را به شکل مشابهی با unix پیاده سازی میکند. آن یک لیست پیوندی از vm_area_structs نگه داری مینماید. اینها ساختارهایی هستند که مناطق پیوسته ای از حافظه را نمایش میدهند که دارای پارامتر های حفاظتی یکسانی میباشند. این لیست هر گاه یک صفحه شامل مکان بخصوصی باشد که باید یافت شود مورد جستجو قرار میگیرد. این ساختار همچنین بازه آدرسهایی را که به آنها نگاشته میشود و مود حفاظتی در حافظه قرار دارد (غیر قابل صفحه بندی) و سمتی را که در حافظه رشد میکند (بالا یا پایین) را ضبط میکند. همچنین خصوصی یا عمومی بودن منطقه را نیز ضبط میکند. اگر تعداد عناصر وارد شده در آن از یک عدد بخصوصی مثلا ۳۲ بیشتر شود آنگاه لیست پیوندی به یک درخت تبدیل می شود. این شیوه بسیار خوبی است که از بهترین ساختار در بهترین شرایط استفاده میکند.

۳-۲- توزیع فضای آدرس پروسس:
هر سه سیستم فضای آدرس مجازی پروسس را به یک شکل توزیع میکنند. فضاهای بالاتر به وسیله مورد استفاده قرار میگیرد و پروسس میتواند بخش پایین تر را استفاده کند. فضای متعلق به بخش هسته تمام پروسسها معمولا به یک کد آدرس هسته اشاره میکند. بنابراین هنگامیکه یک پروسس سوئیچ میکند ما باید که مقادیر جدول صفحه بخش پائینی را جابجا کنیم در حالیکه بخش بالایی به همان صورت باقی میماند. در لینوکس و BSD معمولا ۳ گیگا بایت برای پروسس و ۱ گیگا بایت برای هسته داده میشود در حالیکه در Windows2000 به هر کدام ۲ گیگا بایت میدهیم.

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

۳-۳-۱-:BSD 4.4
این سیستم از صفحه بندی صفحات مورد نیاز (با مقداری پیش صفحه بندی)برای سیاست واکشی خود استفاده میکند و یک الگوریتم تقریبی حداقل استفاده اخیر سراسری دارد که به آن از این به بعد LRUکه مخفف Approximate Least Recently used است. صفحه بندی بر حسب تقاضا به این معنی است که آنها فقط وقتی که مورد نیاز باشند به حافظه آورده میشوند. برای خارج کردن صفحات سیستم با یک الگوریتم جابجایی سراسری کار میکند. سراسری به این معنی است که سیستم صفحه ای را که باید خارج شود بدون در نظر گرفتن پروسسی که از آن اسفاده میکند انتخاب میکند و این به این معناست که صفحات تمام پروسسها یکسان در نظر گرفته می شوند و پارامتر های دیگری برای انتخاب بکار میرود. سیستم حافظه اصلی را به ۴ بخش تقسیم میکند:
۱) Wired: این صفحات قفل شده اند و قابل جابجایی و خارج کردن از حافظه نمی باشند. این صفحات معمولا به وسیله هسته استفاده میشوند.
۲) Active: صفحاتی که به نظر میرسند به صورت فعالی مورد استفاده قرار میگیرند در این لیست قرار داده میشوند.
۳) Inactive: این صفحات غیرفعال که دارای محتوای شناخته شده هستند ولی برای مدت زمانی مورد استفاده نبوده اند.
۴) Free:صفحاتی که دارای محتوای شناخته شدهای نیستندو بنابراین بلافاصله مورد استفاده قرار میگیرند.
یک شبه صفحه برای نگهداری مقداری از حافظه آزاد در سیستم استفاده می شود. شبه صفحه پروسسی است که اول از همه در مود هسته آغاز به کار میکند و تا زمانیکه کامپیوتر خاموش شود باقی میماند.

هدف شبه صفحه این است که یک مقدار حداقلی(معمولا ۵% از حافظه) را از صفحات در لیست آزاد نگه داری کند. که این مقدار در free_min نگهداری میشود. متغیر دیگری بنام Free_target وجود دارد که معمولا ۷% از حافظه است. هر وقت که به مقدار free_target برسیم شبه کارش را متوقف میکند.
همچنین باید مقدار صفحات غیر فعال را نگه داری کنیم که حداقل آن (که معمولا ۳۳ % از حافظه است ) در inactive_target نگه داری میشود. ولیکن مقدار آن با گذشت زمان به صورت اتوماتیک توسط سیستم تنظیم میشود. بنابراین هرگاه که میزان حافظه آزاد به زیر free_min برسد شبح فراخوانی میشود. شبح شروع به اسکن لیست غیرفعال از قدیمیترین به جدیدترین میکند و کار های زیر را برای هر صفحه انجام میدهد:
۱ اگر صفحه پاک و غیر ارجاع باشد به لیست آزاد ببر.

۲ اگر به توسط یک پروسس فعال اشاره شده باشد آنرا از لیست غیر فعال به لیست فعال منتقل کن.
۳ اگر صفحه کثیف باشد و در حال حاضر در swap file نوشته شده باشد فعلا از آن عبور کن.
۴ اگر صفحه کثیف نیست و به صورت فعال استفاده نمیشود پس آنرا روی دیسک برگردان.

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

همچنین در BSD یک ایده جابجایی Swapping وجود دارد. وقتی که نتواند با خطاهای صفحه همراهی کند حتی وقتی که کار ها ی خود را انجام میدهد یا اگر پروسسی برای بیش از ۲۰ ثانیه غیر فعال بماند شبح خروج از حافظه به حالت swappingمیرود. در مود swapping آن پروسسی که برای بیشترین زمان اجرا شده است گرفته شده وبه طور کامل به داخل دیسک سخت منتقل میشود.

۳-۳-۲- Windows:

سیستمی که توسط ویندوز برای این کار مورد استفاده قرار میگیرد بسیار بغرنج و پیچیده است. ویندوز از شیوه صفحه بندی مورد نیاز کلاستر شده Clustered Demand Paging برای واکشی صفحات و از الگوریتم ساعت برای جابجایی صفحات استفاده میکند. در روش Clustered Demand Paging صفحات فقط وقتی که مورد نیاز باشند به حافظه آورده می شوند. همچنین به جای آوردن یکی ویندوز معمولا یک کلاستر از آنها را که شامل ۱ تا ۸ صفحه است را می آورد که بستگی به وضعیت فعلی سیستم دارد. هسته ۵ نوع خطای صفحه دریافت میکند.:

۱) صفحه ای که به آن رجوع میشود در حافظه قرار نگرفته است.

۲) یک اخطار حفاظتی اتفاق میافتد.
۳) یک صفحه اشتراکی نوشته شده است.
۴) پشته نیاز به رشد دارد.
۵) صفحه ارجاع شده در حافظه آمده است ولی در حال حاضر در حافظه کامل نگاشته نشده است.

دو خطای اول جبران ناپذیرند و قابل درست شدن نمیباشند. سومی نشانگر یک تلاش برای نوشتن بر روی یک صفحه فقط خواندنی را نشان میدهد. آن صفحه را یک جای دیگر کپی کن و از صفحه جدید برای خواندن و نوشتن استفاده کن و در این روش کپی به هنگام نوشتتن کار میکند. خطای ۴ با پیدا کردن یک صفحه اضافی پاسخ داده میشود.
مهمترین مساله راجع به سیستم های صفحه بندی ویندوز این است که به صورت سنگینی از ایده working_set استفاده میکند. Working_set مقدار فضای حافظه ای تعریف میشود که به یک پروسس داده شده است. بنابراین working_set شامل صفحاتی از خود است که در حافظه اصلی موجودند. سایزworking_set یک مقدار ثابت نیست بنابراین مضراتی که بوسیله استفاده از آنها میاید کمتر میشود.
الگوریتم ساعت که توسط ویندوز استفاده میشود به صورت محلی عمل میکند وقتی که یک خطای صفحه رخ میدهد و working_set پروسس خطا کننده کمتر مقدار آستانه حداقل است آنگاه آن صفحه به Working_set اضافه میشود. از طرف دیگر اگر working set اگر از یک مقدار آستانه دیگری بالاتر باشد آنگاه آن از اندازه آن کم میشود.

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

در عوض کار کردن وقتی که یک خطای صفحه رخ می دهد درست مانند unix ویندوز نیز یک شبح کاری thread نیز دارد. اما در اینجا Balance Set Manager نامیده میشود. این شبح هر ثانیه صدا زده میشود و میزان حافظه آزاد را چک میکند که به مقدار کافی باشد. اگر نبود آنگاه Working set Manager را صدا میکند و آن تا زمانیکه مقدار حافظه به بالای مقدار آستانه برسد باقی میماند. آن نیز working_set های پروسس را از قدیمی و بزرگ تا جدید و کوچک چک میکند و برحسب اینکه چه تعداد خطای صفحه تولید کرده باشند آنها را زیاد یا کم میکنند. اگر بیت ارجاع یک صفحه پاک یا صفر باشد آنگاه شمارنده مرتبط به صفحه یکی اضافه میشود و اگر بیت ارجاع یک باشد، صفر میشود.

شکل ۴)ساختار داده ویندوز NT برای مدیریت حافظه مجازی پروسس

بعد از اسکن صفحات با بالا ترین شماره از Working_Set برداشته میشوند. بنابراین ویژگی سراسری بودن این الگوریتم ساعت بدلیل کار working Set Manager داده میشود. ویندوز لیست صفحات را به ۴ بخش تقسیم میکند:

۱) لیست صفحات تغییر یافته
۲) لیست صفحات در حال انتظار

۳) لیست صفحات آزاد
۴) لیست صفحات صفر شده.

اینها در شکل نشان داده شده اند. صفحات آزاد آن صفحات پاکی اند که به هیچ پروسسی مرتبط نشده اند. لیست صفر شده ها لیست صفحاتی اند که اگر احتیاج شود صفر میشوند.
نقل و انتقالات بین این لیستها توسط Working set Manager و تعدادی دیگر از Threadهای شبح مانند: Swapper Threadو صفحه نگاشته شده و نویسنده صفحات تغییر یافته انجام میشود.

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 8700 تومان در 15 صفحه
87,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد