逻辑地址、线性地址、物理地址

一、CPU段式内存管理,逻辑地址转换为线性地址:


首先,给定一个完整的逻辑地址[段选择符:段内偏移地址], 

1、看段选择符的T1=0还是1,知道当前要转换是GDT中的段,还是LDT中的段,再根据相应寄存器,得到其地址和大小。我们就有了一个数组了。

2、拿出段选择符中前13位,能在这个数组中,查找到对应的段描述符,这样,他的Base,即基地址就知道了。

3、把Base + offset,就是要转换的线性地址了。还是挺简单的,对于软件来讲,原则上就需要把硬件转换所需的信息准备好,就能让硬件来完成这个转换了。

二、CPU的页式内存管理,线性地址转为物理地址:



1、从cr3中取出进程的页目录地址(操作系统负责在调度进程的时候,把这个地址装入对应寄存器); 

2、根据线性地址前十位,在数组中,找到对应的索引项,因为引入了二级管理模式,页目录中的项,不再是页的地址,而是个页表的地址。(又引入了一个数组),页的地址被放到页表中去了。

3、根据线性地址的中间十位,在页表(也是数组)中找到页的起始地址;

4、将页的起始地址和线性地址中最后12位相加,得到最终我们想要的物理地址;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值