Virtual Memory
- 重點一 : Virtual Memory
- 重點二 : Demand Paging & Copy on Write
- 重點三 : Effective Access Time & Page fault ratio
- 重點四 : Page Replacement
- 重點五 : Page Replacement algo.
- 重點六 : Page Buffering 機制
- 重點七 : Free Frame 分配多寡對 page fault ratio 之影響
- 重點八 : Thrashing
- 重點九 : Working Set Model
- 重點十 : Page Size 對 Page Fault Ratio 之影響 (TLB reach)
- 重點十一 : Page Structure 對 Page Fault Ratio 之影響
- 重點十二 : 記憶體映射檔案 Memory-Mapped Files
重點一
Virtual Memory
- 主要目的 : 允許 process size > physical memory free space 情況下,程式仍然能執行。
- 早期 : e.g. 使用 " overlay " 技術 ,是 Programmer 負擔 ( Dynamic loading )
現代 : O.S. 支援 Virtual Memory ( O.S 負擔 ) → Programmer 無須煩惱 - 優點
- [1] : 記憶體的各個小空間皆有機會被利用到,記憶體使用度上升。
- [2] : 盡可能提高 multiprogramming degree,提升 CPU utiliztion ( Note : Thrashing 除外 )。
- [3] : 每一次的 I/O transfer time 下降,因為不用將整個程式的所有 page 載入。
- [註] 然而載入整個程式很耗費 I/O transfer time,因為總傳輸次數變多 ( I/O 次數,I/O time ↑)。
重點二
實現 Virtual Memoory 的技術之一 : Demand Paging 技術
- Def : Demand Paging 是架構在 Page Memory Management (Paging) 基礎上,採用 lazy swapper 技巧。即程式執行之初不將全部的 pages 載入 memory,僅載 入執行所須的 pages ( i.e. Prepaging ),甚至不載入 pages ( i.e. pure demand paging ),process 即可執行。
- 若 Process 執行所需之 Page 皆在 Memory ⇒ 正確執行
- 若 Process 執行,企圖存取 " 不在 Memory 中之 Page " ⇒ 產生 " Page fault " interrupt ⇒ O.S 必須處理,載入 miss page 以利執行
- 在 Page Table 中多加一個 Valid/Invalid Bit 欄位,用以指示 page 是否在 memory 中。
- V : 在 Memory
- I : 不在 Memory
- O.S : set & change
- MMU : reference only ( MMU 發出 interrupt )
Copy on Write
[型一] 傳統的 fork() (in Ch4. fork() without copy-on-write)
- Def : parent 生出 child process 後,child process 佔用與 parent 不同的 memory space 且 child 的 Code section 與 Data section 內容均來自 parent 之 Copy initially
- 缺點
- [1] child process 需要被配置 New frames ( memory space )
- 若 child process 生成數目眾多 ⇒ 很耗 Memory space
- [2] Copy parent process 之 Code/Data section 內容給 child process 很耗時,而且有時候是不必要的 ( if. child 立刻執行 execlp())
[型二] fork() with Copy on write 技術
copy-on-write (
- [1] child process 需要被配置 New frames ( memory space )