حافظه مجازی و صفحهبندی
حافظه مجازی به هر برنامه فضای آدرس بزرگ و پیوسته خود را میدهد که سختافزار و سیستمعامل آن را در صفحات با اندازه ثابت به حافظه فیزیکی نگاشت میکنند و جداسازی، محافظت و توهم حافظه بیشتر از آنچه فیزیکی وجود دارد را فراهم میآورد.
Definition
حافظه مجازی یک تکنیک مدیریت حافظه است که آدرسهای مجازی مورد استفاده توسط یک برنامه را از طریق جداول صفحه به آدرسهای حافظه فیزیکی نگاشت میکند، حافظه را به صفحات با اندازه ثابت تقسیم میکند و اجازه میدهد صفحات در حافظه فیزیکی یا در حافظه پشتیبان در صورت نیاز قرار گیرند.
Scope
این موضوع به ترجمه آدرس از طریق جداول صفحه، بافر نگاه به جلو ترجمه (TLB) که ترجمهها را کش میکند، خطاهای صفحه و صفحهبندی درخواستی، جایگزینی صفحه و اصل مجموعه کاری، و محافظتی که حافظه مجازی فراهم میکند، میپردازد. این موضوع در مرز معماری و سیستمعاملها قرار دارد. این شامل ذخیرهسازی فایل دادههای صفحهبندی شده (سیستمهای فایل) و کشسازی دادههای روی تراشه (سازماندهی و سیاستهای کش) نمیشود، اگرچه با هر دو تعامل دارد.
Core questions
- چگونه آدرسهای مجازی از طریق جداول صفحه به آدرسهای فیزیکی ترجمه میشوند؟
- چگونه TLB ترجمه را تسریع میکند و در صورت عدم موفقیت TLB چه اتفاقی میافتد؟
- در صورت خطای صفحه چه اتفاقی میافتد و صفحهبندی درخواستی چگونه مدیریت میشود؟
- مفهوم مجموعه کاری چگونه جایگزینی صفحه را هدایت میکند و از تراشینگ جلوگیری میکند؟
Key concepts
- فضاهای آدرس مجازی و فیزیکی
- صفحات و فریمهای صفحه
- جداول صفحه
- بافر نگاه به جلو ترجمه (TLB)
- خطاهای صفحه و صفحهبندی درخواستی
- جایگزینی صفحه
- مجموعه کاری و تراشینگ
- حفاظت حافظه
Key theories
- مدل مجموعه کاری
- مجموعه کاری مجموعهای از صفحاتی است که یک فرآیند در یک بازه زمانی اخیر به آنها ارجاع میدهد؛ نگه داشتن مجموعه کاری هر فرآیند فعال در حافظه فیزیکی از تراشینگ جلوگیری میکند، که در آن صفحهبندی بیش از حد عملکرد را مختل میکند، و تصمیمات جایگزینی و پذیرش را اطلاعرسانی میکند.
Mechanisms
آدرس مجازی یک برنامه به یک شماره صفحه و یک آفست تقسیم میشود. شماره صفحه جداول صفحه (اغلب چند سطحی) را برای یافتن فریم فیزیکی فهرست میکند؛ TLB ترجمههای اخیر را کش میکند تا از پیمایش جداول در هر دسترسی جلوگیری شود. اگر یک صفحه ارجاع شده مقیم نباشد، یک خطای صفحه کنترل را به سیستمعامل منتقل میکند، که صفحه را از حافظه پشتیبان واکشی میکند و ممکن است صفحه دیگری را طبق یک سیاست جایگزینی که توسط محلیت و رفتار مجموعه کاری هدایت میشود، حذف کند.
Clinical relevance
حافظه مجازی برای سیستمعاملهای مدرن اساسی است: فرآیندها را برای امنیت و پایداری از یکدیگر جدا میکند، به بسیاری از برنامهها اجازه میدهد حافظه فیزیکی را به اشتراک بگذارند و به برنامههای بزرگتر از RAM فیزیکی اجازه اجرا میدهد. رفتار TLB و خطای صفحه به طور قابل توجهی بر عملکرد تأثیر میگذارد و طرحبندی فضای آدرس زیربنای دفاعیات حفاظت و ایمنی حافظه است.
History
حافظه مجازی با کامپیوتر اطلس در منچستر در اوایل دهه 1960 آغاز شد و صفحهبندی و مکانیسم خطای صفحه را معرفی کرد. مدل مجموعه کاری دنینگ در سال 1968 یک توضیح اصولی از محلیت و تراشینگ ارائه داد. پشتیبانی سختافزاری از طریق TLBها و جداول صفحه چند سطحی، و بعدها ویژگیهایی مانند صفحات بزرگ، حافظه مجازی را در سیستمهای عمومی فراگیر کرد.
Key figures
- Peter J. Denning
- Maurice Wilkes
- John L. Hennessy
- Abraham Silberschatz
Related topics
Seminal works
- denning1968
- hennessy2019
- silberschatz2018
Frequently asked questions
- در صورت خطای صفحه چه اتفاقی میافتد؟
- خطای صفحه زمانی رخ میدهد که یک برنامه به یک صفحه مجازی دسترسی پیدا کند که در حال حاضر در حافظه فیزیکی نیست. سختافزار به سیستمعامل وقفه میدهد، که صفحه را در حافظه پشتیبان پیدا میکند، آن را به یک فریم آزاد یا حذف شده میآورد، جداول صفحه را بهروزرسانی میکند و برنامه را طوری از سر میگیرد که گویی هیچ اتفاقی نیفتاده است.
- تراشینگ چیست؟
- تراشینگ یک فروپاشی در عملکرد است زمانی که مجموع مجموعههای کاری فرآیندهای فعال از حافظه فیزیکی بیشتر شود، بنابراین سیستم بیشتر زمان خود را صرف صفحهبندی دادهها به داخل و خارج میکند تا انجام کار مفید. نگه داشتن مجموعههای کاری مقیم، یا کاهش بار، از آن جلوگیری میکند.