【学习笔记】第三章——内存 IV(虚拟内存、请求分页、页面置换、缺页中断、抖动现象)
生活随笔
收集整理的這篇文章主要介紹了
【学习笔记】第三章——内存 IV(虚拟内存、请求分页、页面置换、缺页中断、抖动现象)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一. 虛擬內存
- 1)傳統存儲管理方式的特征、缺點
- 2)虛擬內存的定義和特征
- 3)如何實現虛擬內存 —— 請求分頁存儲管理
- 二. 缺頁中斷
- 1)缺頁中斷機構
- 2)請求分頁的地址變換機構
- 三. 頁面置換
- 四. 頁面分配、置換策略
一. 虛擬內存
1)傳統存儲管理方式的特征、缺點
- 作業必須一次性全部裝入內存才能運行,可能會由于作業太大導致裝不下內存。
- 放入大作業后,只有少量作業能運行,導致多道程序并發度下降
- 駐留性:裝入后,會一直駐留于內存,直到結束。實際上一時間段只需要訪問一小部分數據,這導致了內存資源的浪費。
2)虛擬內存的定義和特征
- 基于局部性原理,有下面三個主要特征
- 多次性:無需一次裝入整個作業,允許分成多次調入內存
- 對換性:作業無須常駐內存,允許換入換出內存
- 虛擬性:邏輯上擴充了內存容量,使得用戶感知的內存容量,遠大于實際容量
3)如何實現虛擬內存 —— 請求分頁存儲管理
- 請求分頁與基本分頁的主要區別:請求分頁會進行內存 - 外存的調換
- 頁表機制:新增四個字段,存儲信息供置換算法參考。(狀態位、訪問字段、修改位、外存地址)
二. 缺頁中斷
1)缺頁中斷機構
- 缺頁中斷:要訪問的頁面不在內存時,產生一個缺頁中斷。
- 內存有空閑塊,則分配。沒有,則由頁面置換算法選擇一個頁面來淘汰。
- 淘汰頁面時,如果頁面在內存時被修改過,則需要寫回內存。沒修改過則不需要。
- 缺頁中斷屬于內中斷。
2)請求分頁的地址變換機構
- 三個新增步驟
- 5 個細節
三. 頁面置換
- 重點
四. 頁面分配、置換策略
- 駐留集:請求分頁存儲管理中,給進程分配的物理塊的集合
- 駐留集太小:缺頁頻繁,進程實際推進時間少
- 駐留集太大:多道并發度下降,資源利用率低
- 固定分配、可變分配、局部置換、全局置換(見圖)
- 選擇可變分配局部置換最好
- 預調頁:主要用于進程的首次掉入(運行前掉入)
- 請求調頁:運行時發現缺頁才掉入所缺頁面。由于一次只能調一頁,所以I/O開銷大
- 對換區:進程運行前,需要把對應數據從文件區復制到對換區
- 文件區:不會被修改的數據直接從文件區掉入,不必寫回磁盤。(可能修改的數據則需要到對換區)
- 簡單來說就是頁面反復橫跳,主要原因:進程頻繁訪問的頁面數目高于可用的物理塊數
- 駐留集大小不能小于工作集大小,否則進程運行過程會頻繁缺頁
總結
以上是生活随笔為你收集整理的【学习笔记】第三章——内存 IV(虚拟内存、请求分页、页面置换、缺页中断、抖动现象)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++初学者快速提升?
- 下一篇: python怎么让输出结果为01_pyt