第二天学习linux内核

原创
2014/04/24 10:01
阅读数 46

        Linux0.11内核中,在进行地址映射操作时,分清三种地址以及他们之间的变换概念,1)、进程的虚拟和逻辑地址 2)、CPU线性地址 3)、实际物理地址

        虚拟地址是指有程序产生的由段选择符和段内偏移地址两个部分组成的地址,这两个地址并没有直接访问物理内存,而是通过分段地址变换机制处理或映射后才对应到实际的物理内存上,因此这种地址成为虚拟地址,虚拟地址空间由GDT映射的全局地址空间和LDT映射的局部地址空间组成,选择符的索引部分有13个比特位组成,加上区分GDT和LDT的1个比特位,因此intel80X86CPU共可以索引16384个选择符,即2的14次方。若每个段的长度都取最大值4G,那么最大虚拟地址空间范围是16384*4G=64T。

        逻辑地址是由程序产生的与段相关的偏移地址部分,在intl保护模式下即是指执行代码段限长内的偏移地址(假设代码段和数据段完全一样),应用程序猿仅需与逻辑地址打交道,而分段和分页机制对于他们来说是完全透明的,仅由系统编程人员涉及,有些地方并不区分逻辑地址和虚拟地址,统称为逻辑地址。

        线性地址是虚拟地址到物理地址变换的中间层,是处理器可寻址的内存空间的地址,程序代码会产生逻辑地址或者是段中的偏移地址,加上相应段的基地址就产生了线性地址,如果启动了分页机制,那么线性地址需要进行一系列的变换产生屋里地址,如果没有启用分页机制,那么线性地址就是物理地址,intel80386的线性地址空间容量是4G。



展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部