作業系統Ch9 Virtual Memory
Intro 不需要把所有東西放進dRAM : 不是整支執行檔都會用到 Partial Loading Programmer不需要再考慮空間問題 降低每隻程式使用的空間 -> 更多程式同時執行 降低Swapping的成本 Virtual address space address從0到空間終點 Physical memory -> page frames MMU自動做位址轉換 VM空間遠大於physical memory 定址空間中允許hole的存在 : 支援動態分配(heap, stack) Demand paging Start 不會載入所有page 把所有page mark unloded Page fault 執行時access到還沒載入的page 這時才把對應的page載入 Page load 前面handle完之後繼續執行, 就像那個page一直存在 Page replacement swap到disk Swap算法 FIFO LRU : 使用過去經驗, Counter / Stack Second chance : FIFO + refernce bit (ref==0 才swap out) Enhanced second chance : 再加上dirty bit, 優先級為 $dirty < reference$ Optimal : 預測接下來最久用不到的, 使用LRU近似 Copy-on-write 每個process的shared memory都是同一份 做寫入時才會做複製 CoW -> fork(), no CoW -> vfork() Shared memory must zero out -> C裡面的global variable初始都是0 (BSS) Page replacement algorithm FIFO ...