حافظه مجازی

حافظه مجازی یکی از بخش‌های متداول در اکثر سیستم‌های عامل کامپیوترهای شخصی است. سیستم فوق با توجه به مزایای عمده، بسرعت متداول و با استقبال کاربران کامپیوتر مواجه شده‌است.
در حقیقت حافظه مجازی دارای دو وظیفه اصلی می‌باشد:
به پردازش‌ها اجازه می‌دهد بدون نگرانی از دیگر کدهای در حال اجرا از حافظه استفاده نمایند.
محدود کردن پردازشها از دخالت کردن در استفاده حافظه توسط سیستم‌عامل و دیگر پردازشها. به نوعی تامین امنیت محدوده اشغال شده توسط پردازشهای دیگر
Virtual memory combines active RAM and inactive memory on DASD to form a large range of contiguous addresses.
دیسک سخت به جای حافظه اصلی
اکثر کامپیوترها در حال حاضر از حافظه‌های محدود با ظرفیت ۶۴، ۱۲۸ یا ۲۵۶ مگابایت استفاده می‌نمایند. حافظه موجود در اکثر کامپیوترها به منظور اجرای چندین برنامه به صورت هم‌زمان توسط کاربر، پاسخگو نبوده و با کمبود حافظه مواجه خواهیم شد. مثلا در صورتی‌که کاربری بطور هم‌زمان، سیستم‌عامل، یک واژه پرداز، مرورگر وب و یک برنامه برای ارسال نامه الکترونیکی را فعال نماید، ۳۲ یا ۶۴ مگابایت حافظه، ظرفیت قابل قبولی نبوده و کاربران قادر به استفاده از خدمات ارائه شده توسط هر یک از نرم‌افزارهای فوق نخواهند بود. یکی از راهکارهای غلبه بر مشکل فوق افزایش و ارتقای حافظه موجود به صورت فیزیکی است. با ارتقای حافظه و افزایش آن ممکن است مشکل فوق در محدوده‌ای دیگر مجددا بروز نماید. یکی دیگر از راهکارهای موجود در این زمینه، استفاده از حافظه مجازی است.
در تکنولوژی حافظه مجازی از حافظه‌های جانبی ارزان قیمت نظیر هارد دیسک استفاده می‌گردد. در چنین حالتی اطلاعات موجود در حافظه اصلی که کمتر مورد استفاده قرار گرفته‌اند، از حافظه خارج و در محلی خاص بر روی هارد دیسک ذخیره می‌گردند. بدین ترتیب بخش ی از حافظه اصلی آزاد و زمینه استقرار یک برنامه جدید در حافظه فراهم خواهد شد. عملیات ارسال اطلاعات از حافظه اصلی بر روی هارد دیسک به صورت خودکار انجام می‌گیرد.
ایجاد امنیت دسترسی به حافظه
قبل از آنکه سیستم‌عامل، پردازنده را به یک فرایند یا پردازش تحویل دهد، یک جدول حافظه را تنظیم می‌نماید به صورتی که آن پردازش در سطح دسترسی پایین‌تری به حافظه قرار داده می‌شود و آدرس حافظه‌ای که در کد پردازش مورد نظر قرار می‌گیرد بعدا توسط پردازنده به آدرس اصلی و فیزیکی حافظه RAM که در جدول حافظه تنظیم شده در قبل، دکر شده‌است ترجمه گردد؛ بنابراین آدرسهای حافظه‌ای که در هر یک از کدهای پردازش توسط سیستم‌عامل قرار می‌گیرند آدرسهای مجازی هستند نه آدرسهای حقیقی.
این تطابق آدرسهای مجازی به آدرسهای حقیقی در قطعاتی که به آن‌ها صفحه یا Page گفته می‌شوند انجام می‌شود. در معماری سیستم‌های x86 امروزی معمولا اندازه این صفحه ۴کیلوبایت می‌باشد.
زمانی که یک پردازش از آدرسی در یک صفحه که به آن پردازش تطابق داده نشده‌است استفاده نماید، باعث ایجاد یک خطای استثناء سخت‌افزاری می‌گردد که به آن Pagefault گفته می‌شود.
وقتی که یک صفحه مورد استفاده قرار نگیرد، سیستم‌عامل می‌تواند آن را به دیسک سخت انتقال دهد؛ و وقتی که آن صفحه توسط یک پردازش مورد تقاضا قرار گرفت دوباره به حافظه اصلی RAM بازخواهد گشت.
مسئله سرعت
سرعت خواندن و نوشتن اطلاعات بر روی هارد دیسک بمراتب کندتر از حافظه اصلی کامپیوتر است. در صورتی‌که سیستم مورد نظر دارای عملیاتی حجیم در رابطه با حافظه مجازی باشد، کارایی سیستم بشدت تحت تاثیر قرار خواهد گرفت. در چنین مواردی لازم است که نسبت به افزایش حافظه موجود در سیستم، اقدام گردد. در مواردی که سیستم‌عامل مجبور به جابجائی اطلاعات موجود بین حافظه اصلی و حافظه مجازی باشد (هارد دیسک)، با توجه به تفاوت محسوس سرعت بین آنها، مدت زمان زیادی صرف عملیات جایگزینی می‌گردد. در چنین حالتی سرعت سیستم بشدت افت کرده و عملا در برخی حالات غیرقابل استفاده می‌گردد.
محل نگهداری اطلاعات بر روی هارد دیسک را یک Page file می‌گویند. در فایل فوق، صفحات مربوط به حافظه اصلی ذخیره و سیستم‌عامل در زمان مورد نظر اطلاعات فوق را مجددا به حافظه اصلی منتقل خواهد کرد. در ماشین هائی که از سیستم‌عامل ویندوز استفاده می‌نمایند، فایل فوق دارای انشعاب swp است.
پیکربندی حافظه مجازی
ویندوز ۹۸ دارای یک برنامه هوشمند برای مدیریت حافظه مجازی است. در زمان نصب ویندوز، پیکربندی و تنظیمات پیش‌فرض برای مدیریت حافظه مجازی انجام خواهد شد. تنظیمات انجام شده در اغلب موارد پاسخگو بوده و نیازی به تغییر آن‌ها وجود نخواهد داشت. در برخی موارد لازم است که پیکربندی مدیریت حافظه مجازی به صورت دستی انجام گیرد. برای انجام این کار در ویندوز ۹۸، گزینه System را از طریق Control panel انتخاب و در ادامه گزینه Performance را فعال نمائید. در بخش Advanced setting، گزینه Virtual memory را انتخاب نمائید.
با نمایش پنجره مربوط به Virtual Memory، گزینه «Let me specify my own virtual memory setting» را انتخاب تا زمینه مشخص نمودن مکان و طرفیت حداقل و حداکثر فایل مربوط به حافظه مجازی فراهم گردد.. در فیلد Hard disk محل ذخیره نمودن فایل و در فیلدهای دیگر حداقل و حداکثر ظرفیت فایل را بر حسب مگابایت مشخص نمائید. برای مشخص نمودن حداکثر فضای مورد نیاز حافظه مجازی می‌توان هر اندازه‌ای را مشخص نمود. تعریف اندازه ائی به میزان دو برابر حافظه اصلی کامپیوتر برای حداکثر میزان حافظه مجازی توصیه می‌گردد.
میزان حافظه موجود هارد دیسک که برای حافظه مجازی در نظر گرفته خواهد شد بسیار حائر اهمیت است. در صورتی‌که فضای فوق بسیار ناچیز انتخاب گردد، همواره با پیام خطایی مطابق «Out of Memory»، مواجه خواهیم شد. پیشنهاد می‌گردد نسبت حافظه مجازی به حافظه اصلی دو به یک باشد. یعنی در صورتی‌که حافظه اصلی موجود ۱۶ مگابایت باشد، حداکثر حافظه مجازی را ۳۲ مگابایت در نظر گرفت.
یکی از روش هائی که به منظور بهبود کارایی حافظه مجاری پیشنهاد شده‌است، (مخصوصا در مواردی که حجم بالائی از حافظه مجازی مورد نیاز باشد) در نظر گرفتن ظرفیت یکسان برای حداقل و حداکثر اندازه حافظه مجازی است. در چنین حالتی در زمان راه‌اندازی کامپیوتر، سیستم‌عامل تمام فضای مورد نیاز را اختصاص و در ادامه نیازی با افزایش آن هم‌زمان با اجرای سایر برنامه‌ها نخواهد بود. در چنین حالتی کارایی سیستم بهبود پیدا خواهد کرد.
یکی دیگر از فاکتورهای مهم در کارایی حافظه مجازی، محل فایل مربوط به حافظه مجازی است. در صورتی‌که سیستم کامپیوتری دارای چندین هارد دیسک فیزیکی باشد، (منظور چندین درایو منطقی نیست) می‌توان حجم عملیات مربوط به حافظه مجازی را بین هر یک از درایوهای فیزیکی موجود توزیع کرد. روش فوق در مواردی که از حافظه مجازی در مقیاس بالائی استفاده می‌گردد، کارایی مطلوبی را به‌دنبال خواهد داشت.
حافظه
حافظه فقط خواندنی
حافظه خواندنی-نوشتنی
حافظه فرار
حافظه دسترسی تصادفی (به انگلیسی: Random-Access Memory یا RAM)
حافظه پنهان (به انگلیسی: Cache)
ثبات (به انگلیسی: Register)
حافظه فلش (به انگلیسی: Flash Memory)
صفحه‌بندی (رایانه) (به انگلیسی: Paging)
تقسیم حافظه (به انگلیسی: Memory Segmentation)
حفاظت از حافظه (به انگلیسی: Memory Protection)