其實尋址這個問題,站在虛擬空間角度來看,就是經過線性地址尋找頁表。站在物理空間角度來看,是經過地址總線尋找物理頁框。中間的MMU起到承上啓下的做用。linux
說的通俗一點,我舉個例子。spa
虛擬空間比如陰間,物理空間比如陽間,陰間與陽間各有各自的法則,在保護着各自世界。使其正確平穩的運做。陰間的東西不能隨便來到陽間,而陽間的東西也不能隨便去到陰間,好比:陽間的人們一直在探索存不存在靈魂究竟有沒有陰間,而陰間的東西其實也一直在努力衝破陰間的束縛來到陽間,所以就有這樣一個奇怪的地方把這兩個地方關聯了起來,打通了束縛,就是半步多。這是鏈接陰陽兩界的大門。進程
對於linux中的虛實空間問題也是同樣的,所以話說回來,cpu
虛擬地址不能訪問物理空間,而物理空間返回的地址也不能直接拿給進程使用(進程運行在虛擬空間,須要虛擬地址),但這2個空間還必須關聯起來,造成一個總體,所以須要一個樞紐,就像半步多同樣。所以MMU就充當了半步多這個角色,它溝通了虛實空間 。MMU經過虛擬空間的頁表,解析出物理地址給cpu,所以cpu能夠經過地址總線尋址到物理空間。至於頁表的創建,也就是幾種映射問題,請看前一篇博文。