段、页结合:程序员希望用段,物理内存希望用页,所以、、、
从虚拟内存中割出一个区域来给这个段,段就有了映射,但是这个虚拟内存不能正真的使用,需要把虚拟内存再映射一次,这个时候虚拟内存中的段分割成固定大小的页,每一页再去映射到物理内存中
1. 段、页同时存在
段面向用户,页面向硬件
2. 段页同时存在用的重定位
也就是地址翻译
从用户的角度来看就是段的访问,从物理内存的角度就是分成一页一页
3. 一个实际的段页结合
1. 段页式内存下程序如何载入内存?
- 虚拟内存割出一段区域给给用户,存放数据段、代码段
- 把用户的数据段分割成页,再给到物理内存上
2. 从fork()开始
- 分配虚拟内存
- 建立段表
进程0、进程1、进程2的虚拟地址
3. 接下来
- 分配内存
- 建立页表
4. 子进程和父进程都指向同一页
5. 程序+虚拟内存+物理内存
6. *p=7?
父进程*p=7 ,
子进程*p=8