操作系統為了讓用戶使用,進行分段,但是效率不行,所以引出了分頁,後來應該分段也應該分頁,所以使用了虛擬記憶體,分段分頁的核心就是虛擬記憶體,而要實現虛擬記憶體,就需要進行記憶體的換入和換出 1. 段頁同時存在 2. 用戶眼中的記憶體 3. 用換入、換出實現‘大記憶體’ 在用戶眼中0 4G就是特別大的記憶體,相當於 ...
操作系統為了讓用戶使用,進行分段,但是效率不行,所以引出了分頁,後來應該分段也應該分頁,所以使用了虛擬記憶體,分段分頁的核心就是虛擬記憶體,而要實現虛擬記憶體,就需要進行記憶體的換入和換出
1. 段頁同時存在
2. 用戶眼中的記憶體
3. 用換入、換出實現‘大記憶體’
在用戶眼中0-4G就是特別大的記憶體,相當於一個倉庫,在倉庫里有各種貨,而物理記憶體相當於店面,店面小隻能擺一些貨,當有人需要貨A,就從倉庫里取(虛擬記憶體)放到櫃臺上(物理記憶體),有人需要貨B,貨A放回倉庫,在從倉庫里取貨B放到櫃臺上,只要速度足夠的快,櫃臺上就一直都有你想要的貨
4. 請求調頁
- 當程式訪問地址,看頁表發現缺頁,說明一段代碼沒有在頁表中,不能取指執行,所以一缺頁程式就不能執行下去,需要調頁,此時進行中斷,先執行其他的進程
- 產生了中斷,就要執行中斷處理程式,也就是頁錯誤處理程式
- 頁錯誤處理程式需要到磁碟中找到這一頁程式,使用某個演算法
- 找到之後需要在物理記憶體中找一個空閑頁,需要把這一頁從磁碟上讀進來,這就是請求調頁,換入,已經從磁碟上換入了
- 接下來把這個映射做好,對應的頁表中,此時中斷處理結束,
- 繼續執行中斷那個時候發生的指令,從用戶的角度來看,好像什麼事都沒有發生過
例題
5. 一個實際系統的請求調頁