صفحه‌بندی (رایانه)

تاریخچه

در دهه ۱۹۶۰، مبادله کردن یک تکنیک برای مدیریت حافظه مجازی بود. مبادله به خارج یعنی یک برنامه کاملاً از حافظه اصلی به دیسک و مبادله به داخل یعنی از دیسک به حافظه اصلی منتقل شود. برنامه به خارج مبادله شده، هنوز جریان دارد اما اجرایش متوقف شده و اصطلاحاً معلق می‌شود و حافظه آن در حافظه اصلی به برنامه دیگری اختصاص می‌یابد.
یک برنامه می‌تواند شامل جای‌گذاشت‌های متعددی باشد، که هر یک قسمت واحد از حافظه را در زمان‌های مختلف اشغال می‌کنند. جای‌گذاشت‌ها روش صفحه‌بندی حافظه اصلی به دیسک نیستند و فقط برای کم کردن استفاده از حافظه اصلی هستند. معماری‌های جدیدتر از قطعه‌بندی حافظه استفاده می‌کنند و این قطعه‌ها هستند که واحد انتقال بین حافظه اصلی و دیسک هستند. این قطعات باید در حافظه اصلی به شکل متوالی وجود داشته باشند که نیاز به پردازش و بیشتر و سربار بیشتر هستند تا از تکه‌تکه شدن جلوگیری شود
صفحه‌بندی در ابتدا توسط کمپانی فررانتی در کامپیوتر اطلس معرفی شد. اختراع جدول‌های صفحه‌بندی باعث شد که پردازنده در هر نقطه دلخواه از حافظه اصلی فعالیت کند در عین حال آدرس دهی منطقی به شکل همجوار باقی بماند. صفحات در روش صفحه‌بندی واحد انتقال بین حافظه اصلی و دیسک هستند.

صفحه‌بندی بر حسب نیاز

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

صفحه‌بندی رضایت بخش

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

صف صفحات آزاد، دزدی و بازپس‌گیری

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

پیش تمیزکاری

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

اشتراک‌گذاری

در محیط‌های اشتراکی و چند کاربره چندین کاربر ممکن است یک برنامه را اجرا کنند که ممکن است کد و داده‌اش در صفحات مجزا باشند. برای کاهش استفاده از حافظه اصلی تمامی کاربران یک نسخه از برنامه را استفاده می‌کنند. در داخل جدول آدرس دهی صفحات، صفحات هر پردازه اشاره به یک نسخه از برنامه انجام می‌دهند در حالی که صفحاتی که به داده اشاره می‌کنند برای هر پردازه متفاوت هستند.

پیاده‌سازی در یونیکس و شبه یونیکس

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

پیاده‌سازی در لینوکس

در نسخه‌های 2.6.x به بعد لینوکس از دید کاربر نهایی مبادله فایلی به سرعت مبادله با افراز مبادله می‌باشد؛ تنها محدودیت این است که فایل‌های مبادله باید به شکل همجوار و در داخل یک فایل سیستمی باشند. برای افزایش عملکرد، سیستم عامل یک نقشه از محل قرارگیری فایل‌های مبادله موجود در دیسک را ذخیره می‌کند و به آن‌ها مستقیم دسترسی پیدا می‌کند و حافظه نهان را دور می‌زند که باعث جلوگیری از ایجاد سربار فایل سیستم می‌شود. با وجود این رد هت استفاده از افراز مبادله را پیشنهاد می‌کند. زمانی که از افراز مبادله روی دیسک سخت، که عملکردی چرخشی دارد، استفاده می‌کنیم این مزیت وجود دارد که می‌توانیم آن‌ها را کنار هم ذخیره کنیم که سرعت عمل و سرعت پیگیری را بالا می‌برد. در این حال، انعطاف‌پذیری فایل‌های مبادله به مزایای افرازهای مبادله می‌ارزد. مثلاً، فایل مبادله می‌تواند بر روی هر فایل سوارکردنی قرارگیرد، می‌تواند به ابعاد دلخواه باشد یا بنا به نیاز تغییر داده شود. افرازهای مبادله انعطاف‌پذیر نیستند نمی‌توان آن‌ها با افراز و به راحتی را افزایش داد که باعث ایجاد پیچیدگی می‌شود. هسته لینوکس تعداد نامحدودی از وسایل و فایل‌های مبادله مجازی را پشتیبانی می‌کند. وقتی بخواهد صفحه‌ای را به مبادله به خارج کند از وسیله‌ای با بیشترین اولویت استفاده می‌کند و اگر چند دستگاه اولویت یکسانی داشته باشند از روش راند رابین برای آن‌ها استفاده می‌شود که باعث افزایش کارایی می‌شود مادامی که دستگاه‌ها بتوانند به شکل بهینه و موازی مورد دسترسی قرار بگیرند.

فضای مبادله

سازندگان سیستم‌های عامل معمولاً فضای مورد نیاز برای مبادله را پیشنهاد می‌کنند.

محدودیت آدرس دهی در سخت‌افزار ۳۲بیتی

صفحه‌بندی این اجازه را به یک پردازه می‌دهد که بتواند فضای موجود برای آدرس مجازی و منطقی را به شکلی آدرس دهی و استفاده کند که وابسته به محدودیت آدرس فیزیکی که همان حافظه اصلیست نباشد.

حافظه اصلی از مجازی کوچکتر باشد

در اکثر سیستم‌ها حافظه مجازی بیشتر از حافظه اصلیست. در بعضی سیستم‌ها مانند اکثر کامپیوترهای کاربری عادی مانند کامپیوترهایی که قطعه پردازنده آن‌ها فقط ۲۴ پایه آدرس دهی متصل دارد و محدودیت آدرس دهی برای حافظه اصلی وجود دارد و نمی‌توان بیش از ۱۶ مگابایت را آدرس دهی کرد.
بعضی اوقات بیشینه مقدار حافظه اصلی را نمی‌توان نصب کرد به دلیل هزینه بالا یا اینکه مفید نخواهد بود.
بعضی اوقات آدرس‌های داخلی برای ورودی/خروجی استفاده می‌شود و نمی‌توان تمام آن را به حافظه اصلی اختصاص داد.

حافظه اصلی هم اندازه حافظه مجازی

کامپیوتری با آدرس دهی n بیت می‌تواند ۲ به توان n بیت را آدرس دهی کند. مثلاً پردازنده‌هایی با معماری‌های ۳۲ بیتی می‌توانند تمامی ۴ گیگ از حافظه را آدرس بدهند.
در این موارد صفحه‌بندی می‌تواند برای آدرس دهی بیش از ۴ گیگ استفاده شود. مثلاً وقتی چندین برنامه هم‌زمان استفاده می‌شوند که ممکن است با هم بیش از ۴ گیگ را مصرف کنند که لزومی ندارد تمامی این مقدار در حافظه اصلی باشد. یک سیستم صفحه‌بندی مشخص می‌کند که کدام صفحات به دیسک مبادله شوند. با وجود این که در سیستم مذکور آدرس دهی محدود به ۴ گیگ هست سیستم عامل می‌تواند با استفاده از سیستم صفحه‌بندی و فایل مبادله بیش از ۴ گیگ را آدرس بدهد که این اندازه این فایل‌ها بنا به نیاز تغییر می‌کند.