當一個Program被執行起來成為Prcoess的時候,會將instruction和資料都存放在記憶體裡面,交由作業系統去管理每一個Process所使用到的記憶體。把記憶體想像成一個線性的空間,像是一條街道一樣,街道旁的門牌指的就是不同的記憶體位置,這些空間全部都是交由作業系統去使用,依照需求去放入Process。
不論是固態硬碟(SSD)、還是傳統使用磁頭的硬碟(HDD),在相同容量的造價上皆比記憶體便宜不少,因此在作業系統的記憶體管理之中有一個動作叫做swap,把一些Priority比較低、或者在做I/O的Process所使用的記憶體先放到硬碟存著,當該Process要被執行的時候才從硬碟重新被load回記憶體。
並不是整個硬碟可以無限制的拿來當記憶體使用,在安裝作業系統時可以指定一個空間切出來當作swap base,這個空間內的容量才能被拿來存放從記憶體搬過來的資料,與檔案系統分開,所以在電腦上是找不到這一塊空間。
決定把Process放在哪一個記憶體位置之上,這個動作就叫做address binding,其中有三個時間會發生address binding,分別是:
logic address(virtual address)
,當CPU在讀寫這個記憶體位置之前,會先經過一個Memory Manage Unit(MMU)的轉換,把logic address轉換成實際的位置。MMU做的事情也不難,每個Process會有一個Process Control Block儲存一些資訊,在Context switch會去存取裡面的memeory basic address,並且透過這個值來將記憶體位置做一個位移,就能找到實際的記憶體位置。binding address直接去影響到了swap的成效,