虛擬記憶體 demand paging 如何判斷是否在記憶體里:valid(legal + in memory)invalid(illegal or legal + not in memory)。 如何處理illegal的情況:page fault 到內核 ; 查看internal table(PCB) ...
- 虛擬記憶體
- 概念:區別邏輯記憶體和物理記憶體,對於進程而言,邏輯記憶體式無限大的連續空間。
- 理論依據:對於一個進程而言,實際執行的存儲空間很小。
- 實現:demand paging 和 demand segmentation。
- demand paging
- 本質:按需載入頁。lazzy swapper。
- 優勢:更少的I/O,更少的記憶體需求,更快的響應,更多進程。
- 實現
- 如何判斷是否在記憶體里:valid(legal + in memory)invalid(illegal or legal + not in memory)。
- 如何處理illegal的情況:page fault 到內核 ; 查看internal table(PCB)得到page fault serivice routine判斷(illegal:終止程式,legal + not in:載入到內核)。
- 如何處理物理記憶體滿的情況:page replacement,使得小的物理記憶體可以實現大的虛擬記憶體。註意swap out之後和swap in之後都修改了PTE 。
- (一種優化:設置臟位,按需swap out)
- 頁面置換演算法
- FIFO 先進先出
- 最優置換:未來最少使用的頁。很難實現。
- LRU:最近最少使用。上述的近似,需要硬體記錄頁的最近使用時間。
- second-chance:硬體提供R(A) 位標記是否最近被使用。0則置換,否則清0給second-chance
- 虛擬記憶體的原理
- 局部性原理:進程從一個局部轉移到另一個局部。緩存的原理。
- 抖動:系統頻繁的置換page。 -》 cpu利用率低 -》長期調度提高併發性 -》更多進程載入 -》更嚴重的page fault。原因sum( sizeof(locality) ) > sizeof(physical memory)
- working set model: 近似地衡量locality。統計working set window期間的應用頁(working set),作為locality。根據working set 決定進程占用的frame數目。