計算機體系結構——操作系統——虛擬內存管理

現代操作系統中普遍採用虛擬內存管理,該部分即讓軟件運行在“虛地址”上,與真正訪問存儲的“實地址”(物理地址)相隔離。

1. 存儲管理

存儲管理構建虛擬的內存地址,通過MMU(存儲管理單元)將虛擬地址轉換爲物理地址,從而達到隱藏和保護存儲器特定頁內容,爲程序分配連續的存儲空間,擴展地址空間,通過合理映射節約物理內存的作用;且各進程不必擔心自己使用的地址範圍會不會和別的進程衝突,比如兩個進程都使用了虛擬地址0x0800,操作系統可以設置MMU的映射項把它們映射到不同的物理地址,它們通過同樣的虛擬地址訪問不同的物理頁面,就不會衝突了

  1. 頁式存儲管理
    操作系統將內存空間分爲若干個固定大小的頁,並維護虛擬頁地址和物理頁地址的映射關係(即頁表)。虛擬內存地址可表示爲虛擬頁地址和頁內偏移兩部分,通過通過查表,即可得到相應物理內存地址。
    在32位系統中,若採用4KB頁時,單個完整頁表需要1M項,對每個進程維護頁表需要相當可觀的空間代價,因此頁表只能存儲於內存中。
     
  2. PTE和頁表
    PTE由頁表中的頁和一些有效位組成,也就是說一張張PTE的頁組成了頁表。
    頁是一系列地址的集合,頁表是整個虛擬存儲器的地址集合。
     
  3. MMU
    所有數據請求都需經過MMU來決定存放在RAM內還是大容量存儲器內。同時MMU可以控制存儲器存取允許,MMU關閉時,虛地址直接輸出到物理地址總線。內部包含虛實地址轉換單元和從虛實地址的匹配表(即TLB)。
     
  4. TLB
    轉換旁置緩衝區。若每次進行地址轉換時都要先到內存中查詢頁表,會對CPU性能產生影響,此時可採用TLB實現快速的虛實地址轉換。
    TLB也稱爲頁表緩存或快表,藉助局部性原理,存儲當前處理器中最經常訪問的頁表,相當於頁表的Cache。
    存儲的內容包括虛擬地址,物理地址和保護位
     

2. 虛地址轉換方法

可根據地址段屬性不同分爲查錶轉換和直接轉換

  • 查錶轉換
    應用程序使用的主要方式,CPU在訪存指令時,根據操作系統給出的映射表來完成虛地址到物理地址的轉換

轉換過程爲:
處理器用地址空間標識符(ASID)和虛擬頁號(VPN)在TLB中進行查找匹配;
若命中,則讀出其中的物理幀號(PFN)和標誌位(Flag),PFN用於和頁內偏移組成物理地址,標誌位用於判斷該訪問是否合法,即是否可讀,可寫,可執行,若非法則發出非法訪問異常。
若未命中,則產生TLB缺失異常,此時需要將頁表中內容從內存中取出並填入TLB中,即爲TLB充填(硬件或軟件皆可實現)

  • 直接映射
    該方式與直接使用物理地址差別不大,用戶態應用程序無法使用直接映射方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章