linux中段机制的简短理解
来源:互联网 发布:angularjs.js 1.3下载 编辑:程序博客网 时间:2024/04/28 04:28
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,就是要转换的线性地址了。 还是挺简单的,对于软件来讲,原则上就需要把硬件转换所需的信息准备好,就可以让硬件来完成这个转换了。
备注:分页机制实现
cr3:页目录的基地址
(参考博文:http://blog.csdn.net/do2jiang/article/details/4512417)
- linux中段机制的简短理解
- linux中段错误的处理
- linux中段错误的处理
- linux中段错误的原因分析
- Linux系统中段错误的原因
- 简短的理解设计模式
- Linux中段错误
- Linux C中段错误
- linux中段错误产生的原因和调试方…
- 关于 SQL连接 的简短理解
- 内存的中段
- DSP中段的概念
- SAP中段的含义
- 非常简短的linux脚本汇总
- GKD的开发进入中段
- 最简短最容易理解的js的Array操作
- 【指针】关于指针理解的一些简短的代码
- js Array操作的最简短最容易理解方法
- 字典树
- 基于OSGi的Virgo Server最简单Spring web实例
- Custom Transitions per Slide
- LabVIEW面向对象之如何使用父类的属性值
- window.history/navigator和消息框的使用
- linux中段机制的简短理解
- 悬镜安全实验室丨DirtyCow Linux权限提升漏洞分析(CVE-2016-5195)
- Java 基本数据类型和包装类的区别
- OSG-Geode类中获取Geom的简约代码
- QWT的配置和使用
- Spring-3.2.4 + Quartz-2.2.0集成实例
- JavaScript函数调用返回问题
- C语言函数的递归调用
- 找工作笔试中的常见考点