linux中断机制的简短理解

 

 

 

1:段的参数定义:段基地址,段限长,段属性(都保存在段描述符中)

(段限长是虚拟地址中最大的偏移量,段属性指的是是否可读可写,权限值等)

80x86系统中,拥有4g的地址空间(2的32次幂),0x00000000-0xffffffff。

段基地址和段限长决定了虚拟地址的空间位置,并且,空间位置可以重叠。

2:段描述符

    段描述符保存在段描述表(一个简单的数组)中。

3:逻辑地址和线性地址

    逻辑地址(Logical Address) 是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。

       线性地址(Linear Address) 是逻辑地址到物理地址变换之间的中间层。程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。

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

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

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

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

 备注:分页机制实现

Linux2.6分页

        cr3:页目录的基地址

 

 

(参考博文:http://blog.csdn.net/do2jiang/article/details/4512417)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值