حفاظت از حافظه

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

## روش‌ها
### قطعه‌بندی
قطعه‌بندی روشی است که در آن حافظه اصلی به قسمت‌هایی با اندازه‌های مختلف تقسیم می‌شود. معماری اکس۸۶ چندین ویژگی برای قطعه‌بندی حافظه دارد که برای محفاظت کردن از حافظه بر روی این معماری مفید هستند. در این معماری، از دو جدول به نام‌های جدول توصیف‌گر سراسری و جدول توصیف‌گر محلی برای آدرس‌دهی و ارجاع به قسمت‌های مختلف حافظه استفاده می‌شود. همچنین در این معماری، اشاره‌گرهایی به قسمت‌های مختلف حافظه می‌توانند در ثبات‌های قطعه پردازنده ذخیره شوند. پردازنده‌های x86 اولیه چهار ثبات سگمنت داشتند. سگمنت کد (CS)، سگمنت پشته (SS)، سگمنت داده (DS) و سگمنت یدکی (ES). بعدها دو سگمنت دیگر به نام‌های FS و GS اضافه شد.

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

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

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

## بیشتر بدانیم
* حافظه
* حافظه فقط خواندنی
* حافظه خواندنی-نوشتنی
* حافظه فَرّار
* حافظه دسترسی تصادفی (به انگلیسی: Random-Access Memory یا RAM)
* حافظه پنهان (به انگلیسی: Cache)
* ثبات (به انگلیسی: Register)
* حافظه مجازی (به انگلیسی: Virtual Memory)
* حافظه فلش (به انگلیسی: Flash Memory)
* صفحه‌بندی (رایانه) (به انگلیسی: Paging)
* تقسیم حافظه (به انگلیسی: Memory Segmentation)

## منابع

رده:مدیریت حافظه