nx دارای 15 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است
فایل ورد nx کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه و مراکز دولتی می باشد.
این پروژه توسط مرکز nx2 آماده و تنظیم شده است
توجه : در صورت مشاهده بهم ريختگي احتمالي در متون زير ،دليل ان کپي کردن اين مطالب از داخل فایل ورد مي باشد و در فايل اصلي nx،به هيچ وجه بهم ريختگي وجود ندارد
بخشی از متن nx :
BSD, Windows, Linux سیستم های مدیریت حافظه
مقایسه سیستم های مدیریت حافظهBSD, Windows, Linux چكیده:در این قسمت می خواهیم سیستم مدیریت حافظه یك سیستم عامل را مورد بررسی و كاوش قرار دهیم. ما ابتدا با یك نگاه جامع به سیستمهای مدیریت حافظه كه به اختصار به آنها MM نیز میگویند میپردازیم و بعد سیستم های مدیریت حافظه را در سیستم عامل های واقعی Linux 2.4 ، Windows 2000 و BSD 4.4 با هم مقایسه می كنیم.
فهرست عناوین
مقدمه 4سیستم های مدیریت حافظه 4 حافظه مجازی 5 صفحه بندی 5مقایسه 7 ساختمانهای داده ای برای تشریح فضای پروسس 9 44 BSD 9 Windows 11 Linux 12 توزیع فضای آدرس پروسس 12 جابجایی صفحات 13 44 BSD 13 Windows 15 Linux 18پیشنهادات و نتایج 19
1- مقدمه:در این مقاله زیر سیستم های مدیریت حافظه این سیستم عامل ها را با هم مقایسه می كنیم Linux 2.4 ، Windows 2000 و BSD 4.4 . BSD 4.4 به این دلیل انتخاب شد كه نماینده نسخه های مختلف Unix است كه بسیاری از اصول و پایه های مهم طراحی یك سیستم عامل را داراست و امروزه بسیاری از سیستم های عامل مانند: FreeBSD، NetBSD و OpenBSD بر مبنای آن ساخته شده اند. از همه مهمتر، Unix به صورت عالی مستند شده است و كتاب های بسیاری در مورد آن نوشته شده اند. Windows 2000 انتخاب شده است، چون یك سیستم عامل عامه پسند است و برای كامپیوتر های شخصی و افراد مبتدی، بسیار كارا است و حالا هم به شكل یك سیستم عامل كاملا بالغ در آمده است.Linux 2.4 را به این دلیل انتخاب كردیم كه هر روز هوا داران بیشتری پیدا می كند و به نظر می رسد كه جایگاه مهمی را در آینده پیدا خواهد كرد. ما خیلی مایل به خصوصیات و كارآیی های این سیستم عامل عا نیستیم و در عوض می خواهیم در این مقاله به نحوه طراحی و معماری داخلی این سیستم عامل ها نگاهی بیاندازیم:
2- سیستم های مدیریت حافظه:ما سیستم های مدیریت حافظه را به اختصار، MM می گوییم. MM ها بخش خیلی مهمی از هسته سیستم عامل خستند. كار اصلی آنها مدیریت سلسله مراتب حافظه اصلی یا RAM و دیسك های سخت موجود بر روی ماشین می باشد. كار های مهم آن شامل: تخصیص حافظه و ازاد سازی آن برای پروسس هایی است كه از راهكار ها و پیاده سازی حافظه مجازی (یا Virtual Memory) استفاده می كنندكه با استفاده از دیسك سخت به عنوان حافظه اصلی اضافه كار می كند. سیستم حافظه باید تا آنجایی كه امكان دارد بهینه شود، زیرا كه كارآیی آن به شكل فزاینده ای به كارآیی كل سیستم و سرعت آن بستگی دارد.
2-1- حافظه مجازی:ایده مهم در رابطه با سیستم های MM ، حافظه مجازی است. در گذشته در روز های اولیه كامپیوتر، محققان نیاز روزافزون به حافظه را برای برنامه كاربردی احساس می كردند. بنا بر این ایده حافظه مجازی به وقوع پیوست. ایده این است كه به یك برنامه به دروغ بگوییم كه مقادیر زیادی حافظه برای استفاده آن موجود است. هسته یك چنین راهكاری را با استفاده از حافظه ثانویه دیسك سخت به وجود می آورد تا احتیاج به فضای اضافی حافظه را پاسخ گوید. برای اینكه سیستم مدیریت حافظه مجازی كار كند، ما احتیاج به یك سری توابع نگاشتی داریم كه عمل ترجمه آدرس ها را به عهده می گیرد و آدرس مجازی را به آدرس فیزیكی واقعی تبدیل می كند. آدرس مجازی آن آدرسی است كه برنامه از آن استفاده می كند تا به یك نقطه از حافظه اشاره كند و آدرس فیزیكی، دقیقا آدرس همان نقطه ای از حافظه است كه برای باس محلی حافظه قرار داده می شود. این تابع عموما یكی از توابع صفحه بندی یا سگمنت بندی یا هر دوی آنها است كه وابسته به هسته سیستم عامل، معماری پردازنده و حالت های آن دارد.
2-2- صفحه بندی:در صفحه بندی، فضای آدرس (چه به شكل مجازی و چه واقعی) به صفحات ثابتی كه البته می تواند دارای چندین سایز مختلف باشد، تقسیم بندی می شود. صفحات به صورت جداگانه می توانند به دست گرفته شوند و در مكان های مختلفی در حافظه اصلی یا دیسك سخت قرار داده شوند.
ترجمه آدرس عملا توسط بخش مدیریت حافظه یا MMU انجام میگیرد. با استفاده از یك جدول صفحه در شكل 1 نشان داده شده است. جداول صفحه ارتباط بین صفحات مجازی و صفحات فیزیكی را مشخص میكنند. به عنوان مثال كدام صفحه مجازی هم اكنون كدام صفحه فیزیكی را اشغال كرده است.MMU آدرس حافظه مجازی را به آدرس حافظه فیزیكی تبدیل میكند كه شامل شماره Page Frame است و یك آفست در آن صفحه است. حفاظت میتواند به صورت صفحه به صفحه اعمال شود. از آنجاییكه فضای آدرس مجازی نسبت به حافظه فیزیكی عظیم است ما باید از دیسك سخت برای ذخیره صفحات كه در حافظه فیزیكی نمی توانند ذخیره شوند استفاده كنیم. در ارتباط با هر صفحه مجازی در جدول صفحه یك بیت وجود دارد كه مشخص میكند كه صفحه در حافظه فیزیكی وجود دارد یا خیر. اگر صفحه در حافظه فیزیكی موجود نباشد سخت افزار یك پیغام خطای صفحه تولید میكند و این حالت استثنا در نرم افزار كنترل شده و صفحه مورد نیاز را از روی هارد دیسك به حافظه فیزیكی منتقل میكند یا اگر غیر قابل قبول باشد یك پیغام خطا تولید میشود.كافمن و دنینگ ویژگیهای سیستمهای صفحه بندی را به سه سیاست مهم تقسیم بندی و معین كرده اند:
1 وقتی سیستم صفحات را به حافظه اصلی بار میكند سیاست واكشی اجرا میشود.2 جایی كه سیستم صفحات را در داخل حافظه قرار میدهد سیاست جایگذاری اعمال میشود.3 روشی را كه به كمك آن سیستم صفحاتی را كه باید از حافظه برداشته شوند انتخاب میكند وقتی كه صفحات برای تقاضای جایگذاری موجود نبودند سیاست جایگذاری جابجایی اجرا میگردد.
سیاست جایگذاری فقط برای بهینه ساختن رفتار های معینی اهمیت دارد. بنابراین به صورت عملی رفتار یك سیستم صفحه بندی فقط وابسته به سیا ستهای واكشی و جایگذاری دارد. در اكثر سیستمهای مدرن برای سیاست واكشی یك سیستم صفحه بندی خاصی استفاده میگردد كه در آن سیستم فقط وقتی كه صفحه ای مورد نیاز باشد آنرا به حافظه بار میكند ولی به هر حال گاهی اوقات بعضی از صفحات كه انتظار میرود مورد نیاز شوند را نیز از قبل صفحه بندی و جایگذاری می نماید. در ارتباط با سیاست جایگذاری صفحه الگوریتمهای زیادی در طول سالها اخته شده اند. مقایسه كاركرد الگوریتم های جایگذاری صفحات در مقالات بسیاری آمده است.
3- مقایسه:حال میخواهیم بر روی سیستم های مدیریت حافظه در 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 ساخته شده است.علاوه بر منابعی كه در جاهای گوناگون برای این سیستم عاملها وجود دارد اطلاعات بیشتری را میتوانید در مورد این موضوع از لینكهای 18و17 و21 در انتهای مقاله بدست آورید.به جای آنكه سیستمهای مدیریت حافظه را برای تك تك این سیستمها به صورت جزئی توضیح دهیم كه یك كار بس طولانی خواهد بود ما در اینجا بعضی از نقاط بارز آنها را با هم مقایسه میكنیم.هر سه سیستم دارای سیستم مدیریت حافظه مدرنی هستند و دارای نكات مشترك زیادی میباشند. ساختارهای دادهای آنها خیلی به هم شبیه اندو خصوصیات هر یك نیز به یكدیگر شباهت زیادی دارد. بعضی از شباهتهای آنها نیز در زیر آورده شده است:2 لایه انتزاعی سخت افزار: تمام این سیستم عاملها دارای لایه ای هستند كه به آن Hardware Abstraction Layer یا HAL میگویند كه كارهای وابسته به سیستم را انجام میدهد و بنابراین به بقیه هسته اجازه میدهد كه به شكل مستقل از زیربنای سخت افزار كد شود. این شیوه، انتقال سیستم عامل را به دیگر ساختارهای سخت افزاری ممكن میسازد.3 كپی در حال نوشتن: وقتی كه یك صفحه باید به اشتراك گذاشته شود، سیستم فقط از یك صفحه با هر دو پروسس استفاده میكند كه از همان كپی صفحه به صورت اشتراكی استفاده میكنند. بهر حال وقتیكه یك پروسس یك عمل نوشتن بر روی یك صفحه انجام میدهد یك كپی خصوصی برای آن پروسس ساخته میشود كه بعدا میتواند به صورت انفرادی از آن استفاده كند. این كار راندمان بسیار بهتری را به دست میدهد.4 صفحه بندی سایه ای: یك شی سایه برای شی اصلی ساخته میشود به طوریكه شی سایه ای بعضی از صفحات خود را به صورت تغییر یافته از صفحات شی اصلی داراست. اما بقیه صفحات را با شی اصلی به اشتراك میگذارد و آنها با عمل كپی به هنگام نوشتن شكل میگیرند.5 یك شبه پشت صحنه: یك شبه پشت صحنه وجود دارد كه به صورت متناوبصدا زده میشود و كارهایی را مانند خالی كردن (Flushing) و آزاد سازی حافظه بلا استفاده را انجم میدهد.6 فایلهای قرار داده شده در حافظه: یك فایل میتواند بر روی حافظه قرار داده شود كه بعدا میتواند با دستورات ساده خواندن و نوشتن اسنفاده شود.7 ارتباطات بین پروسسی: فایلهای قرار داده شده بر روی حافظه بعدا اجازه داده میشوند كه بین پروسسها به اشتراك گذاشته شوند كه یك شیوه را برای ارتباطات بین پرو سس ها فراهم می آورد.در بخش زیر ما این سیستم ها را از نظر ویژگیهای خاص آنها با هم مقایسه میكنیم.
3-1- ساختما نهای داده ای برای تشریح فضای پروسس:حال ما به مطالعه ساختمان داده هایی كه سیستمها برای نگه داری و ذخیره رد حافظه مجازی استفاده میكنند میپردازیم:
3-1-1-BSD 4.4:در BSD 4.4 ساختمان داده ها در شكل 2 نشان داده شده اند. از آنجاییكه هر پروسس اساسا دارای فضای آدرس مجازی مسطح خود است این ساختار برای هر پروسس تكرار میشود..ساختار های اساسی عبارتند از :1 Vm_map_entry2 Vm_map3 Vm_space4 Vm_page5 Shadow object6 Object
شكل2) ساختارهای داده ای برای مدیریت حافظه مجازی پروسس
Vm_pMap یك لایه وابسته به سخت افزار است و وظیفه انجام مدیریت حافظه را در پایین ترین سطح خود به عهده دارد و عموما شیوه های مختلفی را كه پروسسور های گوناگون برای برنامه نویسی حافظه مجازی دارند را پشتیبانی میكند و كد وابسته به سخت افزار را فق در یك موجول قرار میدهد و موجب میشود كه بقیه كد مربوط به حافظه مجازی مستقل از سخت افزار باشد. این كار منجر به یك طراحی پیمانه ا ی و موجولار میشود و انتقال كد به معماریهای گوناگون را به نسبت آسانتر و سریعتر میكند.ساختار vm_map دارای یك اشاره گر به vm_pmap و یك زنجیره vm_pMap_entry است.یك vm_map_entry برای هر ناحیه همسا یگی از حافظه مجازی استفاده میشود كه دارای همان حقوق حفاظت و وراثت است. سپس به زنجیره ای از اشیا vm_object اشاره میكند. آخرین چیز در لیست شی واقعی است مثل فایل و دیگری سایه شی ها هستند. سایه شی ها در شاخه دیگری از كار مقیسه ما بحث خواهند شد. شی دارای یك اشاره گر به یك لیست از اشیا vm_page است كه نشان دهنده صفحات حافظه فیزیكی واقعی هستند. این صفحات در حافظه اصلی به عنوان حافظه نهان از دیسك سخت شناخته میشوند كه یكی از مفاهیم حافظه مجازی است.همچنین Vm_object دارای اشاره گر هایی به توابعی است كه اعمالی را بر روی آن انجام میدهند.
3-1-2-Windows:ساختارهای دادهای كه در WinodwsNT هستند در شكل 3 نشان داده شده اند.
ساختار های داده ای Windows NT برای مدیریت حافظه مجازی پروسس
به جای یك لیست پیوندی Windows NT آنرا به شكل یك درخت نگه داری میكند. هر نود این درخت شناسه آدرس مجازی یا Virtual address Descriptor یا VAD نامیده میشود. هر VAD نشانگر یك بازه از آدرسهاست كه دارای پارامتر های حفاظتی یكسانی هستند و اطلاعات وضعیت را نگه داری میكنند. این درخت همچنین متعادل سازی شده است به این معنی كه عمق آن همیشه به میزان حداقل نگه داری میشود و این موضوع این مطلب را میرساند كه زمان جستجو یعنی مدت زمان كه طول میكشد تا یك نود شامل یك آدرس را پیدا كنیم به صورت نسبی كم خواهد بود.VAD هر نود درخت را به صورت یكی از مقادیر حالت نگه داری، آزاد یا رزرو شده علامت میزند.نگه دارها آنهایی هستند كه مورد استفاده قرار گرفته اند. به عنوان مثال دیتا یا كد بر روی آنها ریخته شده است.آنهائیكه مارك آزاد خورده اند هنوز مورد استفاده قرار نگرفته اند و آنهاییكه رزرو خورده اند آنهایی هستند كه قابل دسترس برای استفاده و نگاشتن نیستند تا زمانیكه حالت رزرو شده از روی آنها برداشته شود.رزرواسیون در مواقع بخصوصی مورد استفاده قرار میگیرد به عنوان مثال یك نود میتواند برای پشته یك Thread هنگام ساخته شدن آن رزرو شود. پیوند به ریشه درخت در PCB یا Process control Block نگهداری میشود.
3-1-3- Linux: لینوكس ساختار داده های حافظه مجازی را به شكل مشابهی با unix پیاده سازی میكند. آن یك لیست پیوندی از vm_area_structs نگه داری مینماید. اینها ساختارهایی هستند كه مناطق پیوسته ای از حافظه را نمایش میدهند كه دارای پارامتر های حفاظتی یكسانی میباشند. این لیست هر گاه یك صفحه شامل مكان بخصوصی باشد كه باید یافت شود مورد جستجو قرار میگیرد. این ساختار همچنین بازه آدرسهایی را كه به آنها نگاشته میشود و مود حفاظتی در حافظه قرار دارد (غیر قابل صفحه بندی) و سمتی را كه در حافظه رشد میكند (بالا یا پایین) را ضبط میكند. همچنین خصوصی یا عمومی بودن منطقه را نیز ضبط میكند. اگر تعداد عناصر وارد شده در آن از یك عدد بخصوصی مثلا 32 بیشتر شود آنگاه لیست پیوندی به یك درخت تبدیل می شود. این شیوه بسیار خوبی است كه از بهترین ساختار در بهترین شرایط استفاده میكند.
3-2- توزیع فضای آدرس پروسس:هر سه سیستم فضای آدرس مجازی پروسس را به یك شكل توزیع میكنند. فضاهای بالاتر به وسیله مورد استفاده قرار میگیرد و پروسس میتواند بخش پایین تر را استفاده كند. فضای متعلق به بخش هسته تمام پروسسها معمولا به یك كد آدرس هسته اشاره میكند. بنابراین هنگامیكه یك پروسس سوئیچ میكند ما باید كه مقادیر جدول صفحه بخش پائینی را جابجا كنیم در حالیكه بخش بالایی به همان صورت باقی میماند. در لینوكس و BSD معمولا 3 گیگا بایت برای پروسس و 1 گیگا بایت برای هسته داده میشود در حالیكه در Windows2000 به هر كدام 2 گیگا بایت میدهیم.
3-3- جابجایی صفحات:جابجایی صفحات بخش مهم هر سیستم مدیریت حافظه ای میبا شد. اساسا جابجایی صفحات مشخص میكند كه هنگامی كه به فضای آزاد بیشتری در حافظه نیاز داشتیم كدام صفحه به خارج یعنی خارج از حافظه منتقل شود.الگوریتم ایده آل جابجایی صفحات این است كه آن صفحه ای را كه دیر تر از همه دوباره ممكن است نیاز شود را برداریم. با انجام این كار موجب میشویم كه حداقل تعداد خطاهای صفحه رخ دهد و بنابراین حداقل زمان در جابجایی صفحات بین حافظه اصلی و ثانویه به وجود می آید. در عوض كارایی و بازدهی سیستم بالا می رود. اما از آنجاییكه امكان ندارد كه بفهمیم كدام صفحات در آینده مورد نیاز میشوند، الگوریتم جابجایی صفحه ایده ال غیر ممكن است كه پیاده سازی شود.حال بگذارید كه ببینیم چگونه هر كدام از سیستمها برای جابجایی صفحات كار میكنند.
3-3-1-:BSD 4.4این سیستم از صفحه بندی صفحات مورد نیاز (با مقداری پیش صفحه بندی)برای سیاست واكشی خود استفاده میكند و یك الگوریتم تقریبی حداقل استفاده اخیر سراسری دارد كه به آن از این به بعد LRUكه مخفف Approximate Least Recently used است. صفحه بندی بر حسب تقاضا به این معنی است كه آنها فقط وقتی كه مورد نیاز باشند به حافظه آورده میشوند. برای خارج كردن صفحات سیستم با یك الگوریتم جابجایی سراسری كار میكند. سراسری به این معنی است كه سیستم صفحه ای را كه باید خارج شود بدون در نظر گرفتن پروسسی كه از آن اسفاده میكند انتخاب میكند و این به این معناست كه صفحات تمام پروسسها یكسان در نظر گرفته می شوند و پارامتر های دیگری برای انتخاب بكار میرود. سیستم حافظه اصلی را به 4 بخش تقسیم میكند:1) Wired: این صفحات قفل شده اند و قابل جابجایی و خارج كردن از حافظه نمی باشند. این صفحات معمولا به وسیله هسته استفاده میشوند.2) Active: صفحاتی كه به نظر میرسند به صورت فعالی مورد استفاده قرار میگیرند در این لیست قرار داده میشوند.3) Inactive: این صفحات غیرفعال كه دارای محتوای شناخته شده هستند ولی برای مدت زمانی مورد استفاده نبوده اند.4) Free:صفحاتی كه دارای محتوای شناخته شدهای نیستندو بنابراین بلافاصله مورد استفاده قرار میگیرند.یك شبه صفحه برای نگهداری مقداری از حافظه آزاد در سیستم استفاده می شود. شبه صفحه پروسسی است كه اول از همه در مود هسته آغاز به كار میكند و تا زمانیكه كامپیوتر خاموش شود باقی میماند.
هدف شبه صفحه این است كه یك مقدار حداقلی(معمولا 5% از حافظه) را از صفحات در لیست آزاد نگه داری كند. كه این مقدار در free_min نگهداری میشود. متغیر دیگری بنام Free_target وجود دارد كه معمولا 7% از حافظه است. هر وقت كه به مقدار free_target برسیم شبه كارش را متوقف میكند.همچنین باید مقدار صفحات غیر فعال را نگه داری كنیم كه حداقل آن (كه معمولا 33 % از حافظه است ) در inactive_target نگه داری میشود. ولیكن مقدار آن با گذشت زمان به صورت اتوماتیك توسط سیستم تنظیم میشود. بنابراین هرگاه كه میزان حافظه آزاد به زیر free_min برسد شبح فراخوانی میشود. شبح شروع به اسكن لیست غیرفعال از قدیمیترین به جدیدترین میكند و كار های زیر را برای هر صفحه انجام میدهد:1 اگر صفحه پاك و غیر ارجاع باشد به لیست آزاد ببر.
2 اگر به توسط یك پروسس فعال اشاره شده باشد آنرا از لیست غیر فعال به لیست فعال منتقل كن.3 اگر صفحه كثیف باشد و در حال حاضر در swap file نوشته شده باشد فعلا از آن عبور كن.4 اگر صفحه كثیف نیست و به صورت فعال استفاده نمیشود پس آنرا روی دیسك برگردان.
بعد از اسكن كردن شبح چك میكند كه لیست غیر فعال كوچكتر از مقدار inactive_target باشد. سپس شروع به اسكن لیست فعال میكند تا بعضی از صفحات را به لیست غیر فعال برگرداند.
همچنین در BSD یك ایده جابجایی Swapping وجود دارد. وقتی كه نتواند با خطاهای صفحه همراهی كند حتی وقتی كه كار ها ی خود را انجام میدهد یا اگر پروسسی برای بیش از 20 ثانیه غیر فعال بماند شبح خروج از حافظه به حالت swappingمیرود. در مود swapping آن پروسسی كه برای بیشترین زمان اجرا شده است گرفته شده وبه طور كامل به داخل دیسك سخت منتقل میشود.
3-3-2- Windows:
سیستمی كه توسط ویندوز برای این كار مورد استفاده قرار میگیرد بسیار بغرنج و پیچیده است. ویندوز از شیوه صفحه بندی مورد نیاز كلاستر شده Clustered Demand Paging برای واكشی صفحات و از الگوریتم ساعت برای جابجایی صفحات استفاده میكند. در روش Clustered Demand Paging صفحات فقط وقتی كه مورد نیاز باشند به حافظه آورده می شوند. همچنین به جای آوردن یكی ویندوز معمولا یك كلاستر از آنها را كه شامل 1 تا 8 صفحه است را می آورد كه بستگی به وضعیت فعلی سیستم دارد. هسته 5 نوع خطای صفحه دریافت میكند.:
1) صفحه ای كه به آن رجوع میشود در حافظه قرار نگرفته است.
2) یك اخطار حفاظتی اتفاق میافتد.3) یك صفحه اشتراكی نوشته شده است.4) پشته نیاز به رشد دارد.5) صفحه ارجاع شده در حافظه آمده است ولی در حال حاضر در حافظه كامل نگاشته نشده است.
دو خطای اول جبران ناپذیرند و قابل درست شدن نمیباشند. سومی نشانگر یك تلاش برای نوشتن بر روی یك صفحه فقط خواندنی را نشان میدهد. آن صفحه را یك جای دیگر كپی كن و از صفحه جدید برای خواندن و نوشتن استفاده كن و در این روش كپی به هنگام نوشتتن كار میكند. خطای 4 با پیدا كردن یك صفحه اضافی پاسخ داده میشود.مهمترین مساله راجع به سیستم های صفحه بندی ویندوز این است كه به صورت سنگینی از ایده 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 های پروسس را از قدیمی و بزرگ تا جدید و كوچك چك میكند و برحسب اینكه چه تعداد خطای صفحه تولید كرده باشند آنها را زیاد یا كم میكنند. اگر بیت ارجاع یك صفحه پاك یا صفر باشد آنگاه شمارنده مرتبط به صفحه یكی اضافه میشود و اگر بیت ارجاع یك باشد، صفر میشود.
شكل 4)ساختار داده ویندوز NT برای مدیریت حافظه مجازی پروسس
بعد از اسكن صفحات با بالا ترین شماره از Working_Set برداشته میشوند. بنابراین ویژگی سراسری بودن این الگوریتم ساعت بدلیل كار working Set Manager داده میشود. ویندوز لیست صفحات را به 4 بخش تقسیم میكند:
1) لیست صفحات تغییر یافته 2) لیست صفحات در حال انتظار
3) لیست صفحات آزاد4) لیست صفحات صفر شده.
اینها در شكل نشان داده شده اند. صفحات آزاد آن صفحات پاكی اند كه به هیچ پروسسی مرتبط نشده اند. لیست صفر شده ها لیست صفحاتی اند كه اگر احتیاج شود صفر میشوند.نقل و انتقالات بین این لیستها توسط Working set Manager و تعدادی دیگر از Threadهای شبح مانند: Swapper Threadو صفحه نگاشته شده و نویسنده صفحات تغییر یافته انجام میشود.
ادامه خواندن تحقيق در مورد BSD
نوشته تحقيق در مورد BSD اولین بار در دانلود رایگان پدیدار شد.