1 / 31

第八章:虛擬記憶體 (Virtual Memory) 8.1 硬體和控制架構

第八章:虛擬記憶體 (Virtual Memory) 8.1 硬體和控制架構. 分頁和分段的機制,有兩項重要的突破: 在 process 中,記憶體的參照位址都是邏輯位址,執行期間會做位址的轉換。 process 可以分成數頁或區段載入記憶體,所在的空間不一定要連續。並不一定要將 process 整體載入記憶體中,可以將需要執行的部分載入。 常駐集 (Resident Set) :載入到記憶體的頁面的集合。 僅將部分使用的頁面載入記憶體的帶來的後續影響: 將可容納更多 process 在記憶體中執行。 允許 process 的容量大於記憶體的容量。

Download Presentation

第八章:虛擬記憶體 (Virtual Memory) 8.1 硬體和控制架構

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章:虛擬記憶體(Virtual Memory)8.1 硬體和控制架構 • 分頁和分段的機制,有兩項重要的突破: • 在process中,記憶體的參照位址都是邏輯位址,執行期間會做位址的轉換。 • process可以分成數頁或區段載入記憶體,所在的空間不一定要連續。並不一定要將process整體載入記憶體中,可以將需要執行的部分載入。 • 常駐集(Resident Set):載入到記憶體的頁面的集合。 • 僅將部分使用的頁面載入記憶體的帶來的後續影響: • 將可容納更多process在記憶體中執行。 • 允許process的容量大於記憶體的容量。 • 虛擬記憶體使得在多工的環境下更有效率,程式設計者也很方便。

  2. 侷限性/區域性(locality)和虛擬記憶體 • 現今作業系統,大部份使用虛擬記憶體的機制,成為不可或缺的功能。 • 例子:一個容量很大的process,其資料區為陣列的資料結構,某個時間中,此process只是執行部分的程式及資料。 • Thrashing(痛擊, 輾轉):移出的頁面很快又被移入,處理器花在置換小區塊的時間多於執行指令的時間,導致系統效能降低,CPU並沒有充分的執行。 • 侷限性/區域性(locality)原則: process內的程式或資料參照都趨向於叢集式的現象。 • 叢集(cluster)現象:某個時間週期內,部分程式碼和資料區會被頻繁連續的使用。 • 虛擬記憶體的需求 • 需有硬體來支援分頁和分段的機制。 • 需有軟體來管理頁面或區段,在輔助記憶體和記憶體之間移入和移出的動作。

  3. 分頁、分段機制 • P = Present (存在) • M = Modified (修改)

  4. 結合分頁和分段

  5. 分頁機制下的位址轉換 Figure 8.3 Address Translation in a Paging System

  6. 二階層分頁表(例: Pentium) Figure 8.4 A Two-Level Hierarchical Page Table

  7. Figure 8.5 Address Translation in a Two-Level Paging System 7

  8. 反轉分頁表(inverted page table) (例: Power PC) Figure 8.6 Inverted Page Table Structure

  9. Translation Lookaside Buffer (TLB) • 每次的虛擬記憶體參照都會有二次實際記憶體的存取: • (1) 找到分頁表對應的頁框位址; • (2) 讀取參照的記憶體位址內容。 • 虛擬記憶體使用Translation Lookaside Buffer (轉換查考緩衝區)的快取記憶體,保留常常使用的頁面及其對應的頁框號碼。 • TLB的架構 • TLB只包含部分的分頁表,因此不能用頁碼來索引到TLB。 • TLB每個紀錄必須含有頁碼。 • 相關對應(Associative Mapping):同時檢查TLB的每一個紀錄,決定是否有所要的頁碼。

  10. 10 Figure 8.7 Use of a Tranlation Lookaside Buffer

  11. Figure 8.8 Operation of Paging and Translation Lookaside Buffer (TLB) 11

  12. 直接對應和相關對應比較 (a) Direct mapping (b) Associative mapping Figure 8.9 Direct Versus Associative Lookup for Page Table Entries

  13. Figure 8.10 Translation Lookaside Buffer and Cache Operation 13

  14. Figure 8.11 Typical Paging Behavior of a Program 14

  15. 頁面大小 • 設計考量: • 頁面小 => 內部破碎少。 • 頁面小 => 所需頁面增加,分頁表增大。 • 頁面小 => 發生分頁錯誤(page faults)的機率降低。(越符合區域性參照) • 頁面大小的例子 • IBM 370/XA:4 KB • DEC Alpha:8 KB • Pentium:4 KB 至 4 MB • PowerPC: 4KB • 當今的程式語言似乎也降低了區域性參照的特性,舉例: • 物件導向程式語言:使用許多模組化的程式和資料。 • Multithread的應用程式:改變指令串流的型態。

  16. 分段機制 • 使用區段的優點 • 方便程式的擴展 • 允許程式在編譯或修改時,不相互影響其他區段,不須要將所有區段全部編譯或聯結過。 • 允許process間做到共享:程式或資料放入區段,分享出來。 • 提供彈性的保護機制:依不同區段,給予不同保護。

  17. 分段機制下的位址轉換 17 Figure 8.12 Address Translation in a Segmentation System

  18. 分段/分頁機制下的位址轉換 Figure 8.13 Address Translation in a Segmentation/Paging System

  19. Figure 8.14 Protection Relationships Between Segments 19

  20. 8.2 作業系統的軟體 • 作業系統的考量: • 是否需使用虛擬記憶體? • 使用分頁機制或分段機制,或結合二者使用? • 採用何種演算法機制管理記憶體? • 目標:降低分頁錯誤(page faults)的機率。 • 擷取策略(Fetch Policy): • 需求分頁(Demand paging):process需要參考到記憶體內容時,才將頁面配置給process。(process開始執行時,會產生很多分頁錯誤) • 事前分頁(Prepaging):事先載入頁面。(若沒有參考到,則是浪費) • 置放策略(Placement Policy) • 分頁:任何未使用的頁框即可。 • 分段:best-fit, first-fit, next-fit.

  21. 置換策略(Replacement Policy) • 置換策略牽涉: • 每個正在執行的process,分配有多少頁框。 • 置換的頁面只限於產生分頁錯誤的process的頁面,或者是任何頁框。 • 記憶體頁框中,哪些頁面可以選擇用來置換。 • 1及2是常駐集管理(Resident Set Management)要解決的問題。 • 3是置換策略要解決的問題。 • 頁框鎖定(Frame Locking):排除置換的頁面。 • 作業系統核心元件、處理I/O的程式。

  22. 頁面置換基本演算法 • 最佳的(Optimal):選擇下次被參照的時間離現在最久的當作置換頁面。 • 最近罕用(Least Recently Used, LRU):選擇上次被參照的時間離現在最久的頁面,當作是置換頁面。 • 實作方法:將每個頁面給定其上次被擷取的時間。但每次擷取記憶體時,都必須更新一次。 • 先進先出(First-In-First-Out, FIFO):移入記憶體很久的頁面,當作是置換頁面。 • 時鐘(Clock)策略:對每個頁框增加一使用位元(use bit) 。 • 頁面初載入記憶體時,或每次參考時,use bit 設為1; • 指標循環的尋找use bit為0的頁面,當作是置換頁面。 • (在過程中並將use bit為1的頁面,設成use bit 為0)

  23. (F: Page Fault) Figure 8.15 Behavior of Four Page-Replacement Algorithms 23

  24. 時鐘策略(範例) Figure 8.16 Example of Clock Policy Operation

  25. Figure 8.17 Comparison of Fixed-Allocation, Local Page Replacement Algorithms 25

  26. 增加: 修改位元(modify bit) • 在掃描過程不對使用位元(use bit)做任何修改,選擇第一個(u=0 and m=0)的頁框進行置換。 • 若第一輪失敗,重新掃描,並尋找u=0 and m=1的頁框,此次掃描過程設成u=0。 Figure 8.18 The Clock Page-Replacement Algorithm 26

  27. 工作集(Working Set)策略 • W(t, ): 在t時間載入頁面的數量,時間區段: (t - , t) ,即代表前個時間區段中。 代表window size。 • Window size越大,working set所含的頁面越多: (圖8.19) • W(t, +1)  W(t, ) • Working Set所含頁面數,會隨著時間演變而有所不同。(圖8.20) • Working Set策略: • 觀察process的working set,週期性的將不在working set的頁面移除。 • 所有在working set的頁面都必須要載入記憶體,以便process的執行。 • Working Set策略的問題: • 過去的經驗不見得能準確預測未來; • 真實量測Working Set是不實際的; • 最佳化的參數值(如的大小)未知,且隨不同狀況而有改變。

  28. (不變) 28 Figure 8.19 Working Set of Process as Defined by Window Size

  29. 29 Figure 8.20 Typical Graph of True Working Set Size

  30. 分頁錯誤頻率(Page-Fault Frequency, PFF)機制 • 每個頁面有一個關聯的使用位元(use bit) • 利用分頁錯誤頻率來決定分配多少頁面給process。 • 給定分頁錯誤頻率的上下限。 • 分頁錯誤頻率低 => 減少頁面 • 拋棄使用位元為0的頁面 • 分頁錯誤頻率高 => 增加頁面

  31. 負載控制(Load Control) • 負載控制:讓多少process載入記憶體同時執行 • 也稱作Multiprogramming Level。 Good Thrashing

More Related