主記憶體:配置、連結與分段

置換(swapping)

想像一間只有一張工作檯卻有放不下的多個專案的小工坊。當你需要做專案 B、但工作檯上滿是專案 A 時,你小心地把專案 A 全部裝箱、放到架上,改把專案 B 攤開來做。稍後你把 B 裝箱、把 A 原封不動地搬回來。置換對整個行程做這件事:當記憶體吃緊時,作業系統把一整個行程移出 RAM、放到磁碟上的後備儲存,釋放它的空間,稍後再把它搬回來。

具體來說,置換暫時把一個行程(它的記憶體影像)從主記憶體移到後備儲存——一塊為此保留的快速磁碟區——再移回來。被換出的行程沒有在執行;它完整的狀態躺在磁碟上。當作業系統想再執行它時,就把它換入:把影像複製回記憶體(在動態重定位下,它可以放到與之前不同的實體位置)並讓它繼續。這讓所有行程的記憶體總需求得以超過實體 RAM,因為它們不必同時全部常駐。

為什麼重要:經典的置換移動整個行程,簡單但慢——把一個大行程複製到磁碟再複製回來是一項重大操作,由磁碟傳輸時間所主導,所以唯有該行程之後能執行相當一段時間,置換才划算。現代系統很少這樣置換整個行程;它們改用分頁(依需求把個別的頁換入換出),粒度細得多。儘管如此,那個基本想法——把磁碟當作 RAM 的溢位區——正是虛擬記憶體的觀念祖先。

三個大行程都需要 RAM,但只塞得下兩個。作業系統把閒置最久的那個換出,將它整個影像寫到後備儲存,並把釋放出的 RAM 用於第三個行程。當那個閒置的行程再次被需要時,作業系統把它換回來。

藉由整個行程的搬進搬出,把磁碟當作 RAM 的溢位。

整個行程的置換由磁碟傳輸時間所主導,對現代互動式系統而言粒度太粗;今日的機器改用分頁。不要把經典置換與需求分頁混為一談,後者移動的是單一的頁,不是整個行程。

又称
process swappingroll-out roll-in對換