2009/05/29

[摘錄] UNIX 記憶體管理

摘錄自: Unix 系統管理 Essential System Administration 2/e, by Æleen Frisch. Copyright 1998 O'Reilly Media Inc., 957-98213-4-8. 第七章。


  • 要使系統執行順暢,記憶體不但要足夠應付大工作,還要能讓數量龐大的日常小工作能夠同時進行。

  • swapping: 置換, 是把整個行程寫入磁碟中,再將其記憶體釋出。當要繼續執行被置換完畢(swapped-out)的行程時,必須將其重新載入記憶體。

  • pagging: 切頁, 是將行程記憶體內容的某些節區(單位為 page)搬到磁碟上,以釋放部分記憶體給需要的行程使用。

  • page fault: 切頁錯誤, 是指當行程要使用記憶體某部分的內容時,該部分的內容尚未由磁碟讀出並置於記憶體中。

  • 在虛擬記憶體系統上,除非記憶體嚴重不足,否則很少會進做置換的動作。

  • 虛擬記憶體的原理是「並非所有記憶體都會同時使用」,因此系統內部可以把虛擬位址對應到實體記憶體位址;當行程要用到目前不在記憶體內程式碼和資料時,kernel 會把需要的部分從磁碟上載入記憶體(即進行切頁動作),可能還會把該行程其他不需使用的 page 置換掉。

  • 若系統實體記憶體不足以讓所有執行中的行程使用時,切頁就會有問題。在這種情形下,kernel 會動態分配記憶體:若某行程要讀進一個新 page,但沒有可用或可重複使用的 page 時,作業系統會從其他行程偷來一個 page 以供使用。被偷的 page 叫做被切出(page out),其內容會被寫在磁碟上的切頁區。若某行程再度需要該 page,其內容會被切回來(page in),通常會強迫使用其他的 page 空間。在這種情況下,CPU 會花很多時間在處理切頁錯誤上,因此會讓行程執行的很沒有效率。最嚴重的狀況稱之為「thrashing」,系統所有的時間都在處理虛擬記憶體,而不會進行任何實際的工作。



僅節錄個人覺得重要之處,全文請參見原書。

沒有留言:

張貼留言