亲宝软件园·资讯

展开

操作系统-段页结合的实际内存管理

山丘i 人气:0
段、页结合:程序员希望用段,物理内存希望用页,所以、、、 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214610153-1138228138.png) **从虚拟内存中割出一个区域来给这个段,段就有了映射,但是这个虚拟内存不能正真的使用,需要把虚拟内存再映射一次,这个时候虚拟内存中的段分割成固定大小的页,每一页再去映射到物理内存中** ### 1. 段、页同时存在 段面向用户,页面向硬件 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214638397-2119674374.png) ### 2. 段页同时存在用的重定位 也就是地址翻译 从用户的角度来看就是段的访问,从物理内存的角度就是分成一页一页 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214650939-499318114.png) ### 3. 一个实际的段页结合 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214829509-1788521708.png) #### 1. 段页式内存下程序如何载入内存? 1. 虚拟内存割出一段区域给给用户,存放数据段、代码段 2. 把用户的数据段分割成页,再给到物理内存上 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214909600-157869187.png) #### 2. 从fork()开始 1. 分配虚拟内存 2. 建立段表 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214922198-1561709542.png) 进程0、进程1、进程2的虚拟地址 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214930225-1800412725.png) #### 3. 接下来 1. 分配内存 2. 建立页表 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214947223-1475447521.png) ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214951099-1722086930.png) ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328214957230-1000322318.png) #### 4. 子进程和父进程都指向同一页 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328215012874-728611127.png) #### 5. 程序+虚拟内存+物理内存 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328215030403-486903355.png) #### 6. *p=7? 父进程*p=7 , 子进程*p=8 ![](https://img2020.cnblogs.com/blog/1212924/202003/1212924-20200328215045469-1751887930.png)

加载全部内容

相关教程
猜你喜欢
用户评论