操作系統內存管理_虛擬內存

虛擬內存的基本思想

按照固定大小將進程的地址空間分爲多個頁面,每一個頁面內部都有連續的地址.這些頁被映射到物理內存,但是並不是所有的頁都在內存中時程序才能運行.當程序需要已經在物理內存中的地址空間時,由硬件完成映射;當程序引用不在內存中的地址空間時,產生缺頁中斷,由操作系統將頁面調入內存.

進程運行內存模型

在這裏插入圖片描述

分頁

  1. 地址的轉化
    建立頁表,通過MMU(內存管理單元)來完成線性地址到物理地址的轉換
    在這裏插入圖片描述

  2. 頁表項的結構(不同進程共享內存的 安全性)

    保護位標記了 讀,寫,執行三個權限
    修改位標記了是否被修改,如果被修改那麼頁框在重新分配前,需要先持久化到硬盤
    訪問位是供頁面置換算法使用
    高速緩存位是是否啓用高速緩存,需要實時輸入的設備需要關閉高速緩存

  3. 加速分頁:快表(TLB)

  • 快表是在MMU中,可以減少內存訪問次數
  • 軟件管理TLB,當訪問的頁表不在TLB中時,發出指令讓操作系統來處理(換出一頁)
  • 軟失效:在內存,不在頁表;硬失效:不在內存
  1. 針對大內存的頁表
  • 多級頁表
    在這裏插入圖片描述
  • 倒排頁表

倒排頁表是在每個頁表框記錄下 是哪個進程的哪個頁表項 使用當前頁表框,減少了存儲壓力,但是增大了查詢的複雜度(每次都要遍歷倒排頁表)

  1. 頁面置換算法

最優頁面置換;最近未使用(R位定時清零)根據R,M位來決定換出哪個;先進先出;時鐘置換;最近最少使用;
工作集頁面置換算法:局部性原理

寫時複製,共享庫(相對跳動)

段頁式存儲

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

分頁和分段的區別

1、分頁機制會使用大小固定的內存塊,而分段管理則使用了大小可變的塊來管理內存。

2、分頁使用固定大小的塊更爲適合管理物理內存,分段機制使用大小可變的塊更適合處理複雜系統的邏輯分區。

3、段表存儲在線性地址空間,而頁表則保存在物理地址空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章