مقایسه سیستم های مدیریت حافظه
BSD, Windows, Linux
چکیده:
در این قسمت می خواهیم سیستم مدیریت حافظه یک سیستم عامل را مورد بررسی و کاوش قرار دهیم. ما ابتدا با یک نگاه جامع به سیستمهای مدیریت حافظه که به اختصار به آنها MM نیز میگویند میپردازیم و بعد سیستم های مدیریت حافظه را در سیستم عامل های واقعی Linux 2.4 ، Windows 2000 و BSD 4.4 با هم مقایسه می کنیم.
فهرست عناوین
مقدمه 4
سیستم های مدیریت حافظه 4
حافظه مجازی 5
صفحه بندی 5
مقایسه 7
ساختمانهای داده ای برای تشریح فضای پروسس 9
4.4 BSD 9
Windows 11
Linux 12
توزیع فضای آدرس پروسس 12
جابجایی صفحات 13
4.4 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_entry
2 Vm_map
3 Vm_space
4 Vm_page
5 Shadow object
6 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 نشانگر یک بازه از آدرسهاست که دارای پارامتر های حفاظتی یکسانی هستند و اطلاعات وضعیت را نگه داری میکنند. این درخت همچنین متعادل سازی شده است به این معنی که عمق آن همیشه به میزان حداقل نگه داری میشود و این موضوع این مطلب را میرساند که زمان جستجو یعنی مدت زمان که طول میکشد تا یک نود شامل یک آدرس را پیدا کنیم به صورت نسبی کم خواهد بود.
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 15 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود مقاله BSD, Windows, Linux سیستم های مدیریت حافظه