文章目錄
- 虛拟記憶體的基本思想
- 程序運作記憶體模型
- 分頁
- 段頁式存儲
- 分頁和分段的差別
虛拟記憶體的基本思想
按照固定大小将程序的位址空間分為多個頁面,每一個頁面内部都有連續的位址.這些頁被映射到實體記憶體,但是并不是所有的頁都在記憶體中時程式才能運作.當程式需要已經在實體記憶體中的位址空間時,由硬體完成映射;當程式引用不在記憶體中的位址空間時,産生缺頁中斷,由作業系統将頁面調入記憶體.
程序運作記憶體模型
分頁
-
位址的轉化
建立頁表,通過MMU(記憶體管理單元)來完成線性位址到實體位址的轉換
-
頁表項的結構(不同程序共享記憶體的 安全性)
保護位标記了 讀,寫,執行三個權限
修改位标記了是否被修改,如果被修改那麼頁框在重新配置設定前,需要先持久化到硬碟
通路位是供頁面置換算法使用
高速緩存位是是否啟用高速緩存,需要實時輸入的裝置需要關閉高速緩存
- 加速分頁:快表(TLB)
- 快表是在MMU中,可以減少記憶體通路次數
- 軟體管理TLB,當通路的頁表不在TLB中時,發出指令讓作業系統來處理(換出一頁)
- 軟失效:在記憶體,不在頁表;硬失效:不在記憶體
- 針對大記憶體的頁表
- 多級頁表
- 倒排頁表
倒排頁表是在每個頁表框記錄下 是哪個程序的哪個頁表項 使用目前頁表框,減少了存儲壓力,但是增大了查詢的複雜度(每次都要周遊倒排頁表)
- 頁面置換算法
最優頁面置換;最近未使用(R位定時清零)根據R,M位來決定換出哪個;先進先出;時鐘置換;最近最少使用;
工作集頁面置換算法:局部性原理
寫時複制,共享庫(相對跳動)
段頁式存儲
分頁和分段的差別
1、分頁機制會使用大小固定的記憶體塊,而分段管理則使用了大小可變的塊來管理記憶體。
2、分頁使用固定大小的塊更為适合管理實體記憶體,分段機制使用大小可變的塊更适合處理複雜系統的邏輯分區。
3、段表存儲線上性位址空間,而頁表則儲存在實體位址空間。