موضوع مقاله: مدیریت حافظه (سیستم عامل) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مدیریت حافظه (سیستم عامل) | مقدمه: در سیستم‌عامل‌ها، مدیریت حافظه وظیفه‌ای است که مسئول مدیریت حافظه اصلی رایانه می‌باشد. | ## بخش 1: مدیریت حافظه (سیستم عامل) | این وظیفه، وضعیت هر بخش از حافظه را — چه اختصاص‌داده‌شده و چه آزاد — پیگیری می‌کند. مدیریت حافظه تعیین می‌کند که چگونه حافظه میان فرایندهای مختلف تقسیم شود و هر فرایند به کدام بخش از حافظه دسترسی داشته باشد. زمانی که بخشی از حافظه به یک فرایند اختصاص می‌یابد، ماژول مدیریت حافظه مسئول محافظت از آن در برابر دسترسی سایر فرایندها است. همچنین، هنگامی که یک فرایند دیگر به حافظه نیاز ندارد یا خاتمه یافته است، این ماژول حافظه را بازیابی می‌کند. تکنیک‌های مدیریت حافظه تخصیص پیوستهٔ تک تخصیص تک، ساده‌ترین تکنیک مدیریت حافظه است. در این روش، تمام حافظه اصلی رایانه — معمولاً به جز بخش کوچکی که برای سیستم‌عامل رزرو شده — در اختیار یک برنامهٔ واحد قرار می‌گیرد. سیستم‌عامل ام‌اس-داس نمونه‌ای از سیستم‌هایی است که به این شیوه حافظه را تخصیص می‌دهند. تخصیص پارتیشن‌بندی‌شده در تخصیص پارتیشن‌بندی‌شده، حافظه اصلی به چندین پارتیشن (بخش حافظه) تقسیم می‌شود که معمولاً نواحی پیوسته‌ای از حافظه هستند. در این روش، مدیریت حافظه شامل تخصیص یک پارتیشن به یک وظیفه هنگام شروع و آزادسازی آن هنگام پایان وظیفه است. تخصیص پارتیشن‌بندی‌شده معمولاً به پشتیبانی سخت‌افزاری نیاز دارد تا از تداخل وظایف با یکدیگر یا با سیستم‌عامل جلوگیری شود. پارتیشن‌ها ممکن است ایستا باشند — یعنی در زمان راه‌اندازی سیستم (IPL) یا توسط اپراتور رایانه تعریف شوند — یا پویا، به این معنا که به‌طور خودکار برای یک کار خاص ایجاد شوند. | ## بخش 2: مدیریت حافظه (سیستم عامل) | سیستم‌عامل IBM System/360 با قابلیت «چندبرنامه‌ای با تعداد ثابت وظیفه» (MFT) نمونه‌ای از پارتیشن‌بندی ایستا است، و «چندبرنامه‌ای با تعداد متغیر وظیفه» (MVT) مثالی از پارتیشن‌بندی پویا محسوب می‌شود. در سیستم‌های MVT و جانشینان آن، اصطلاح «ناحیه» (region) برای تمایز پارتیشن‌های پویا از پارتیشن‌های ایستا استفاده می‌شود. این پارتیشن‌ها را می‌توان به‌گونه‌ای فشرده‌سازی کرد که قطعات بزرگ‌تری از حافظهٔ فیزیکی پیوسته فراهم شود. در این روش، نواحی در حال استفادهٔ حافظه به هم فشرده می‌شوند تا «حفره‌ها» یا نواحی بدون استفاده‌ای که بر اثر پایان یافتن وظایف به‌وجود آمده‌اند، حذف شوند. برخی سیستم‌ها امکان جابه‌جایی پارتیشن‌ها به حافظه ثانویه را برای آزادسازی حافظهٔ بیشتر فراهم می‌کنند. مدیریت حافظه صفحه‌بندی‌شده در تخصیص صفحه‌بندی‌شده، حافظه اصلی رایانه به واحدهایی با اندازهٔ ثابت تقسیم می‌شود که «چارچوب صفحه» (page frame) نام دارند، و فضای نشانی‌دهی مجازی برنامه نیز به صفحاتی با همان اندازه تقسیم می‌شود. واحد مدیریت حافظه (MMU) در سخت‌افزار، نگاشت بین صفحات و چارچوب‌ها را انجام می‌دهد. حافظهٔ فیزیکی می‌تواند به‌صورت مبتنی بر صفحه تخصیص یابد، در حالی که فضای نشانی‌دهی از دید برنامه‌نویس به‌صورت پیوسته دیده می‌شود. معمولاً در مدیریت حافظهٔ صفحه‌بندی‌شده، هر وظیفه در فضای نشانی‌دهی مخصوص به خود اجرا می‌شود. با این حال، برخی سیستم‌عامل‌ها با فضای نشانی‌دهی یکپارچه وجود دارند که همهٔ فرایندها را در یک فضای نشانی‌دهی اجرا می‌کنند؛ مانند IBM i که همهٔ فرایندها را در یک فضای نشانی‌دهی بزرگ اجرا می‌کند، و همچنین سیستم‌های IBM OS/VS1 و OS/VS2 (SVS) که تمام وظایف را در یک فضای نشانی‌دهی مجازی ۱۶ مگابایتی اجرا می‌کردند. حافظهٔ صفحه‌بندی‌شده می‌تواند به‌صورت برحسب تقاضا (demand-paged) نیز باشد، به این معنا که سیستم در صورت نیاز، صفحات را بین حافظهٔ اصلی و حافظه ثانویه جابه‌جا می‌کند. | ## بخش 3: مدیریت حافظه (سیستم عامل) | قطعه‌ها (Segments) نواحی‌ای از حافظه هستند که معمولاً به یک گروه منطقی از اطلاعات مانند یک رویهٔ کد یا یک آرایهٔ داده‌ای مربوط می‌شوند. قطعه‌ها نیاز به پشتیبانی سخت‌افزاری دارند که معمولاً به‌صورت یک «جدول قطعه» (Segment Table) پیاده‌سازی می‌شود و شامل نشانی فیزیکی قطعه در حافظه، اندازهٔ آن، و اطلاعات دیگری مانند بیت‌های محافظت دسترسی و وضعیت (مبادله‌شده، فعال و غیره) است.Samanta, D. قطعه‌بندی نسبت به دیگر روش‌ها، امکان محافظت بهتری از دسترسی‌ها فراهم می‌کند، چرا که ارجاع‌های حافظه نسبی به یک قطعهٔ خاص هستند و سخت‌افزار اجازه نمی‌دهد برنامه به حافظه‌ای خارج از محدودهٔ تعریف‌شده برای آن قطعه دسترسی پیدا کند. در صورت نبود صفحه‌بندی، قطعه، واحد فیزیکی است که در صورت نیاز جابه‌جا (swap) می‌شود. اما با وجود پشتیبانی از صفحه‌بندی، صفحات معمولاً واحد جابه‌جایی هستند و قطعه‌بندی تنها یک لایهٔ امنیتی اضافی فراهم می‌کند.Walraet, Bob (2014). نشانی‌ها در سیستم‌های قطعه‌ای معمولاً شامل شناسهٔ قطعه و آفست نسبی نسبت به آدرس پایهٔ آن قطعه (که صفر در نظر گرفته می‌شود) هستند. معماری اینتل IA-32 (معروف به x86) به یک فرایند اجازه می‌دهد تا تا ۱۶٬۳۸۳ قطعه داشته باشد که اندازهٔ هر کدام می‌تواند تا ۴ گیگابایت باشد. قطعه‌های مولتیکس زیرمجموعه‌هایی از حافظهٔ فیزیکی رایانه بودند که شامل حداکثر ۲۵۶ صفحه بودند. هر صفحه در مولتیکس شامل ۱٬۰۲۴ واژهٔ ۳۶-بیتی بود که اندازهٔ هر قطعه را به حداکثر ۱ مگابایت می‌رساند (با در نظر گرفتن بایت‌های ۹ بیتی که در مولتیکس استفاده می‌شدند). برنامه‌ها ممکن است به صورت «در صورت پایان اجرا یا هنگام انتظار برای رخداد طولانی‌مدت» از حافظهٔ اصلی خارج شوند.Walraet, Bob (2014). این تکنیک امکان گسترش موقتی و پویا برای یک کار خاص را فراتر از اندازهٔ تعیین‌شدهٔ اولیهٔ حافظه‌اش فراهم می‌کند. | ## جمع‌بندی | اگر فضای اختصاص‌نیافته‌ای وجود نداشته باشد، برنامه‌ای دیگر از حافظهٔ اصلی خارج می‌شود تا فضای آن در اختیار کار اول قرار گیرد.