段、頁結合:程式員希望用段,物理記憶體希望用頁,所以、、、 從虛擬記憶體中割出一個區域來給這個段,段就有了映射,但是這個虛擬記憶體不能正真的使用,需要把虛擬記憶體再映射一次,這個時候虛擬記憶體中的段分割成固定大小的頁,每一頁再去映射到物理記憶體中 1. 段、頁同時存在 段面向用戶,頁面向硬體 2. 段頁同時存在 ...
段、頁結合:程式員希望用段,物理記憶體希望用頁,所以、、、
從虛擬記憶體中割出一個區域來給這個段,段就有了映射,但是這個虛擬記憶體不能正真的使用,需要把虛擬記憶體再映射一次,這個時候虛擬記憶體中的段分割成固定大小的頁,每一頁再去映射到物理記憶體中
1. 段、頁同時存在
段面向用戶,頁面向硬體
2. 段頁同時存在用的重定位
也就是地址翻譯
從用戶的角度來看就是段的訪問,從物理記憶體的角度就是分成一頁一頁
3. 一個實際的段頁結合
1. 段頁式記憶體下程式如何載入記憶體?
- 虛擬記憶體割出一段區域給給用戶,存放數據段、代碼段
- 把用戶的數據段分割成頁,再給到物理記憶體上
2. 從fork()開始
- 分配虛擬記憶體
- 建立段表
進程0、進程1、進程2的虛擬地址
3. 接下來
- 分配記憶體
- 建立頁表
4. 子進程和父進程都指向同一頁
5. 程式+虛擬記憶體+物理記憶體
6. *p=7?
父進程*p=7 ,
子進程*p=8