哈工大-操作系统L23

段页结合的实际内存管理

两种机制要结合在一起

将虚拟内存给定的地址空间中划分区域给段,建立映射关系就是建立段表,但是段表建立之后还不能使用,虚拟存在中区域打散,给内存再次完成映射,就是建立页表

段面向用户,页面向硬件

段、页同时存在是重定位(地址翻译):根据段号,找到页号,根据页号,找到物理页号

整个过程分为五步

1.将虚拟内存给定的地址空间中划分区域

2.用户段和,虚拟内存建立映射关系,建立段表

3..在物理内存中找到空闲页

4.建立映射关系,建立页表

5.使用内存(重定位)

new_data_base=nr*0x4000000,对应第一步,虚拟内存的分割

set_base(p->lat[1],new_data_base),set_base(p->lat[2],new_data_base);第二步设置段表填写段表,p是TCB,将p->ldt[1]设成new_data_base

分配虚拟内存建立段表

虚拟内存不重叠,所以页号也不重叠,共用一套页表共用一套页,不也分配内存,父进程已经分配了,但需要建立页表,建立页表也只需拷贝就可以

copy_page_tables(old_data_base,new_data_base,data_limit),拷贝页表,old_data_base父进程的虚拟地址的起始位置

from>>22得到目录项编号(章),应该右移22位,但是却右移了20位,(from>>22)*4每项4字节,22*4相当于22位左右2位,所以是20位

to_dir子进程的页目录,没创建子进程的时候,这个章是空的还没映射

get_free_page()分配物理内存页,把页的地址赋给to_dir

将父进程页表复制给子进程

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值