天天看點

作業系統-段頁結合的實際記憶體管理

段、頁結合:程式員希望用段,實體記憶體希望用頁,是以、、、

作業系統-段頁結合的實際記憶體管理

從虛拟記憶體中割出一個區域來給這個段,段就有了映射,但是這個虛拟記憶體不能正真的使用,需要把虛拟記憶體再映射一次,這個時候虛拟記憶體中的段分割成固定大小的頁,每一頁再去映射到實體記憶體中

1. 段、頁同時存在

段面向使用者,頁面向硬體

作業系統-段頁結合的實際記憶體管理

2. 段頁同時存在用的重定位

也就是位址翻譯

從使用者的角度來看就是段的通路,從實體記憶體的角度就是分成一頁一頁

3. 一個實際的段頁結合

作業系統-段頁結合的實際記憶體管理

1. 段頁式記憶體下程式如何載入記憶體?

  1. 虛拟記憶體割出一段區域給給使用者,存放資料段、代碼段
  2. 把使用者的資料段分割成頁,再給到實體記憶體上
作業系統-段頁結合的實際記憶體管理

2. 從fork()開始

  1. 配置設定虛拟記憶體
  2. 建立段表
作業系統-段頁結合的實際記憶體管理

程序0、程序1、程序2的虛拟位址

作業系統-段頁結合的實際記憶體管理

3. 接下來

  1. 配置設定記憶體
  2. 建立頁表
作業系統-段頁結合的實際記憶體管理
作業系統-段頁結合的實際記憶體管理
作業系統-段頁結合的實際記憶體管理

4. 子程序和父程序都指向同一頁

作業系統-段頁結合的實際記憶體管理

5. 程式+虛拟記憶體+實體記憶體

作業系統-段頁結合的實際記憶體管理

6. *p=7?

父程序*p=7 ,

子程序*p=8

作業系統-段頁結合的實際記憶體管理