《計算機組成與設計》閱讀筆記——虛擬存儲器

  • 虛擬存儲器(VM)
    • 主存也可以成爲磁盤的cache,這項技術叫做虛擬存儲器
    • 每個程序有自己獨立的內存空間
    • 主存只要存放程序中活躍的那一部分即可,這也是局部性原理
    • VM和cache的原理是一樣的,不過VM中塊被叫做頁
    • 採用全相聯的方式組織
      • 降低了缺失率
      • 可以使用複雜的替換機制優化
      • 由於使用了頁表,不需要進行查找
      • 和直接映射組織法很像,主要區別是多了一個額外的頁表,同時可以在任意位置替換,而不是一一對應
  • 構造動機
    • 允許在多個程序之間同時安全地共享存儲器
    • 消除有限的主存容量對程序設計的限制
  • 虛擬地址
    • 虛擬地址可以比物理地址長
    • 虛擬地址由處理器產生,再由頁錶轉換成物理地址(即主存中的地址)
    • 連續的虛擬地址可以被映射到不連續的物理地址
      • 這種重定位允許我們將程序加載到主存的任意位置
    • 多個虛擬地址可以映射到同一個物理地址
      • 這使得不同的程序可以共享一部分代碼
    • 虛擬地址分割爲虛擬頁號和頁內偏移
      • 物理頁和虛擬頁一樣大
      • 虛擬頁號轉換爲物理頁號,偏移不變

在這裏插入圖片描述

  • 頁表

    • 存放在主存中

    • 以虛擬頁號爲索引,存放物理頁號

    • 每個程序都有私有的頁表

      • 每個程序都有一個頁表寄存器指向相對的頁表開頭
      • 只保存寄存器,並不保存整個頁表
    • 更新頁表由操作系統負責

    • 頁表不需要tag,因爲包含了每個可能的虛擬頁的映射

    • 減少頁表大小

      • 使用多級頁表,未被使用的虛擬內存段在第二級即以上不分配頁表項
      • 將未使用的頁表放入磁盤中
        在這裏插入圖片描述
  • 缺頁

    • 操作系統在創建一個進程(程序)的時候會在磁盤上單獨分配一部分空間來儲存物理頁
      • 這個區域被稱作交換區
      • 同時會創建一個數據結構(新頁表)來儲蓄物理頁到磁盤頁的映射,這個結構可能是頁表的一部分,也可能單獨存放在主存上
    • 缺頁後被換出的物理頁被寫入交換區
    • 由於寫的時間很長,因此最好採用回寫法
    • 由於對於磁盤訪問時間傳輸數據的時間要少很多,因此把整個頁通過寫回法放入磁盤中更好
  • 快表(TLB)

    • 由於頁表儲存在主存中,每次訪問虛擬地址需要訪問兩次主存
      • 第一次獲得物理地址
      • 第二次獲得數據
    • 對於頁項的使用也具有局部性
    • 通過一個特殊的cache(TLB)存儲最近使用過的頁表項
      • 全相聯組織
  • 結合主存的cache和頁表的cache(TLB)

    • cache採用物理地址
      • 先要訪問TLB再訪問cache,如下1圖
    • cache採用虛擬地址
      • 直接通過虛擬地址訪問cache,當cache缺失時轉成物理地址,如下2圖
      • 問題是可能不同程序將不同的虛擬地址映射到同一個物理地址,於是同一個物理地址中的數據可能存在於cache中不同的位置,兩個程序不知道相互間的數據變化
    • 如果頁表發生缺頁,那麼cache不可能命中.如下3圖

在這裏插入圖片描述

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

  • 虛擬存儲器中的保護
    • 用戶進程不能更改自己的頁表,操作系統負責修改頁表。
    • 頁表放在保護地址空間
    • 當從進程A切換到進程B時,不僅需要切換頁表寄存器指向,還要清空TLB中屬於A的表項
      • 或者可以通過增加一個進程標識符來避免清空
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章