1. 程式人生 > >2017-2018-1 20155315 《信息安全系統設計基礎》第11周學習總結

2017-2018-1 20155315 《信息安全系統設計基礎》第11周學習總結

技術分享 深入理解計算機系統 虛擬內存 相關 第六周 ati 存儲 很多 思考

2017-2018-1 20155315 《信息安全系統設計基礎》第11周學習總結

教材學習內容總結

本周我學習的是第9章

物理和虛擬尋址

  • 虛擬存儲器
    • 虛擬存儲器是中心的:它是硬件異常、硬件地址翻譯、主存、磁盤文件和內核軟件的交互中心;
    • 虛擬存儲器是強大的:它可以創建和銷毀存儲器片、可以映射存儲器片映射到磁盤某個部分等等;
    • 虛擬存儲器若操作不當則十分危險。
  • 物理地址
    • 計算機系統的主存被組織成一個由M個連續的字節大小的單元組成的數組,每字節都有一個唯一的物理地址PA。
    • 根據物理地址尋址的是物理尋址。
    • 虛擬存儲器被組織為一個由存放在磁盤上的N個連續的字節大小的單元組成的數組。
    • 使用虛擬尋址時,CPU通過生成一個虛擬地址VA來訪問主存,這個虛擬地址在被送到存儲器之前先轉換成適當的物理地址(這個過程叫做地址翻譯,相關硬件為存儲器管理單元MMU)

地址空間

  • 地址空間是一個非負整數地址的有序集合:{0,1,2,……}
  • 線性地址空間:地址空間中的整數是連續的。
  • 虛擬地址空間:CPU從一個有 N=2^n 個地址的地址空間中生成虛擬地址,這個地址空間成為稱為虛擬地址空間。
  • 地址空間的大小由表示最大地址所需要的位數來描述。N=2^n:n位地址空間
  • 主存中的每個字節都有一個選自虛擬地址空間的虛擬地址和一個選自物理地址空間的物理地址。

虛擬存儲器

虛擬存儲器作為緩存的工具

  • 虛擬存儲器——虛擬頁VP,每個虛擬頁大小為P=2^p字節
  • 物理存儲器——物理頁PP,也叫頁幀,大小也為P字節。
  • 任意時刻,虛擬頁面的集合都被分為三個不相交的子集:
    • 未分配的:VM系統還沒分配/創建的頁,不占用任何磁盤空間。
    • 緩存的:當前緩存在物理存儲器中的已分配頁
    • 未緩存的:沒有緩存在物理存儲器中的已分配頁

頁表

  • 頁表是一個數據結構,存放在物理存儲器中,將虛擬頁映射到物理頁
  • 頁表就是一個頁表條目PTE的數組,組成為有效位+n位地址字段
  • 如果設置了有效位:地址字段表示DRAM中相應的物理頁的起始位置,這個物理頁中緩存了該虛擬頁
  • 如果沒有設置有效位:
    • 空地址:表示該虛擬頁未被分配
    • 不是空地址:這個地址指向該虛擬頁在磁盤上的起始位置。

缺頁

  • 缺頁:就是指DRAM緩存不命中。
  • 缺頁異常:會調用內核中的缺頁異常處理程序,選擇一個犧牲頁。
  • 頁:虛擬存儲器的習慣說法,就是塊
  • 交換=頁面調度:磁盤和存儲器之間傳送頁的活動
  • 按需頁面調度:直到發生不命中時才換入頁面的策略,所有現代系統都使用這個。

虛擬存儲器作為存儲器管理的工具

  • 操作系統為每個進程提供了一個獨立的頁表,也就是一個獨立的虛擬地址空間。
  • 多個虛擬頁面可以映射到同一個共享物理頁面上。
  • 存儲器映射:將一組連續的虛擬頁映射到任意一個文件中的任意位置的表示法。
  • 按需頁面調度和獨立的虛擬地址空間的結合簡化了鏈接和加載、代碼和數據共享,以及應用程序的存儲器分配。
    • 簡化鏈接:獨立的地址空間允許每個進程的存儲器映像使用相同的基本格式,而不管代碼和數據實際存放在物理存儲器的何處。
    • 簡化加載:虛擬存儲器使得容易想存儲器中加載可執行文件和共享文件對象。
    • 簡化共享:獨立地址空間為操作系統提供了一個管理用戶進程和操作系統自身之間共享的一致機制。
    • 簡化存儲器分配:虛擬存儲器為向用戶進程提供一個簡單的分配額外存儲器的機制。

虛擬存儲器作為存儲器保護的工具

  • 通過在PTE上添加一些額外的許可來控制對一個虛擬頁面的內容訪問。
  • PTE的三個許可位:
許可位 作用
SUP 表示進程是否必須運行在內核模式下才能訪問該頁
READ 讀權限
WRITE 寫權限

地址翻譯

技術分享圖片

  • 地址翻譯:一個N元素的虛擬地址空間(VAS)中的元素和一個M元素的物理地址空間(PAS)之間的映射。
MAP 意義
MAP VAS → PAS ∪ ?
A‘ 如果虛擬地址A處的數據在PAS的物理地址A‘處
? 如果虛擬地址A處的數據不在物理存儲器中

當頁面命中時

  1. 處理器生成虛擬地址,傳給MMU
  2. MMU生成PTE地址,並從高速緩存/主存請求得到他
  3. 高速緩存/主存向MMU返回PTE
  4. MMU構造物理地址,並把它傳給高速緩存/主存
  5. 高速緩存/主存返回所請求的數據給處理器。

處理缺頁時,CPU硬件執行步驟:

  1. 處理器生成虛擬地址,傳給MMU
  2. MMU生成PTE地址,並從高速緩存/主存請求得到他
  3. 高速緩存/主存向MMU返回PTE
  4. PTE中有效位為0,觸發缺頁異常
  5. 確定犧牲頁
  6. 調入新頁面,更新PTE
  7. 返回原來的進程,再次執行導致缺頁的指令,會命中

利用TLB加速地址翻譯

TLB:翻譯後備緩沖器,是一個小的、虛擬存儲的緩存,其中每一行都保存著一個由單個PTE組成的塊

  • 步驟
  1. CPU產生一個虛擬地址
  2. MMU從TLB中取出相應的PTE
  3. MMU將這個虛擬地址翻譯成一個物理地址,並且將它發送到高速緩存/主存
  4. 高速緩存/主存將所請求的數據字返回給CPU
  • 多級頁表:采用層次結構,用來壓縮頁表
    • 如果一級頁表中的一個PTE是空的,那麽相應的二級頁表就根本不會存在;
    • 只有一級頁表才需要總是在主存中,虛擬存儲器系統可以在需要時創建、頁面調入或調出二級頁表,只有最經常使用的二級頁表才緩存在主存中。

教材學習中的問題和解決過程

問題1:
虛擬內存和物理內存有什麽對應關系嗎?虛擬地址和物理地址指的都是數據的首地址嗎?
解決1:
虛擬內存是物理物理內存的補充,在內存被塞滿的時候,會將那些暫時不用的數據放到硬盤中,而這些數據所占的空間就是虛擬內存。

代碼托管

(statistics.sh腳本的運行結果截圖)
技術分享圖片

結對及互評

暫無

其他(感悟、思考等,可選)

這一章的內容很多,吸收得不夠,還要繼續學習。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 5/5 1/1 25/25
第二周 236/241 3/4 30/55
第三周 169/410 2/6 30/85
第四周 169/410 2/8 50/135
第五周 1177/1587 2/10 30/165
第六周 1826/3413 2/12 30/195
第七周 977/4390 3/15 30/225
第八周 0/4390 2/17 30/255
第九周 0/4390 2/19 30/285
第十周 0/4390 0/19 30/315
第十一周 45/4435 2/21 25/335
  • 計劃學習時間:30小時
  • 實際學習時間:25小時

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)

參考資料

  • 《深入理解計算機系統V3》學習指導

2017-2018-1 20155315 《信息安全系統設計基礎》第11周學習總結