تکنیکهای تخصیص حافظه: صفحهبندی و قطعهبندی
سیستم عامل برای مدیریت کارآمد حافظه و اجرای همزمان چندین برنامه، از تکنیکهای مختلفی مانند صفحهبندی و قطعهبندی استفاده میکند. این تکنیکها به سیستم عامل اجازه میدهند تا حافظه فیزیکی را به واحدهای کوچکتری تقسیم کرده و به طور بهینه بین فرآیندها تخصیص دهد.
اهداف یادگیری
- آشنایی با مفاهیم صفحهبندی و قطعهبندی
- درک مزایا و معایب هر یک از این تکنیکها
- یادگیری نحوه عملکرد جداول صفحه و جداول قطعه
- آشنایی با مفاهیم تکهتکه شدن داخلی و خارجی
صفحهبندی (Paging)
در تکنیک صفحهبندی، حافظه فیزیکی به بلوکهای با اندازه ثابت به نام قاب (Frame) و فضای آدرس منطقی فرآیند به بلوکهایی با همان اندازه به نام صفحه (Page) تقسیم میشود. سیستم عامل میتواند صفحات یک فرآیند را در قابهای مختلف حافظه فیزیکی قرار دهد. برای ترجمه آدرسهای منطقی به فیزیکی از یک جدول صفحه (Page Table) استفاده میشود.
در این مثال، یک فضای آدرس منطقی 2^m بایتی به 2^(m-n) صفحه با اندازه 2^n بایت تقسیم شده است. حافظه فیزیکی نیز به 2^(m-n) قاب با اندازه 2^n بایت تقسیم شده است. جدول صفحه، نگاشت بین صفحات منطقی و قابهای فیزیکی را نشان میدهد.
مزایای صفحهبندی:
- کاهش تکهتکه شدن خارجی: با توجه به اینکه صفحات میتوانند در قابهای مختلف قرار گیرند، تکهتکه شدن خارجی به حداقل میرسد.
- امکان اجرای برنامههای بزرگتر از حافظه فیزیکی: با استفاده از حافظه مجازی، میتوان برنامههایی را اجرا کرد که اندازه آنها از حافظه فیزیکی بزرگتر است.
معایب صفحهبندی:
- پیچیدگی پیادهسازی: پیادهسازی صفحهبندی نسبت به روشهای سادهتر تخصیص حافظه پیچیدهتر است.
- سربار ترجمه آدرس: ترجمه آدرسهای منطقی به فیزیکی نیازمند دسترسی به جدول صفحه است که میتواند زمانبر باشد.
- تکهتکه شدن داخلی: اگر اندازه یک فرآیند مضربی از اندازه صفحه نباشد، آخرین صفحه آن به طور کامل پر نخواهد شد و باعث هدر رفتن حافظه میشود.
قطعهبندی (Segmentation)
در تکنیک قطعهبندی، فضای آدرس منطقی فرآیند به بلوکهایی با اندازه متغیر به نام قطعه (Segment) تقسیم میشود. هر قطعه نمایانگر یک واحد منطقی از برنامه مانند کد، داده یا پشته است. سیستم عامل میتواند قطعات یک فرآیند را در نواحی مختلف حافظه فیزیکی قرار دهد. برای ترجمه آدرسهای منطقی به فیزیکی از یک جدول قطعه (Segment Table) استفاده میشود.
در این مثال، یک فضای آدرس منطقی به سه قطعه تقسیم شده است: کد، داده و پشته. هر قطعه دارای یک آدرس پایه و یک طول است. جدول قطعه، نگاشت بین قطعات منطقی و نواحی حافظه فیزیکی را نشان میدهد.
مزایای قطعهبندی:
- انعطافپذیری بیشتر نسبت به صفحهبندی: با توجه به اینکه قطعات میتوانند اندازههای مختلفی داشته باشند، قطعهبندی انعطافپذیری بیشتری نسبت به صفحهبندی ارائه میدهد.
- کاهش تکهتکه شدن خارجی: با توجه به اینکه قطعات میتوانند در نواحی مختلف حافظه فیزیکی قرار گیرند، تکهتکه شدن خارجی به حداقل میرسد.
- حفاظت و اشتراکگذاری بهتر: قطعهبندی امکان پیادهسازی مکانیسمهای حفاظت و اشتراکگذاری حافظه را به طور موثرتری فراهم میکند.
معایب قطعهبندی:
- پیچیدگی پیادهسازی: پیادهسازی قطعهبندی نسبت به صفحهبندی پیچیدهتر است.
- مشکل در پیدا کردن فضای خالی: پیدا کردن فضای خالی برای قطعات بزرگ در حافظه فیزیکی میتواند دشوار باشد و منجر به تکهتکه شدن خارجی شود.
نکات کلیدی
- صفحهبندی و قطعهبندی دو تکنیک اصلی برای مدیریت حافظه در سیستم عامل هستند.
- هر دو تکنیک از جداول برای نگاشت آدرسهای منطقی به فیزیکی استفاده میکنند.
- صفحهبندی از بلوکهای با اندازه ثابت استفاده میکند، در حالی که قطعهبندی از بلوکهای با اندازه متغیر استفاده میکند.
- هر تکنیک مزایا و معایب خاص خود را دارد که باید در طراحی سیستم عامل در نظر گرفته شود.
نکات کاربردی و مشاورهای
- برای درک بهتر مفاهیم صفحهبندی و قطعهبندی، سعی کنید مثالهای مختلفی را حل کنید و نحوه عملکرد جداول صفحه و جداول قطعه را بررسی کنید.
- با مطالعه کتابهای سیستم عامل معتبر، دانش خود را در این زمینه عمیقتر کنید و با الگوریتمهای پیشرفتهتر تخصیص حافظه آشنا شوید.
- در حل مسائل مربوط به مدیریت حافظه در آزمونهای استخدامی، به دقت به جزئیات سوال مانند اندازه حافظه فیزیکی، اندازه صفحه یا قطعه و الگوریتم تخصیص حافظه توجه کنید.
منابع
- ویکیپدیا: صفحهبندی
- ویکیپدیا: قطعهبندی
- کتاب Operating System Concepts, 10th Edition, Abraham Silberschatz