您的位置:首页 > 其它

段页式内存管理中,逻辑地址,线性地址,物理地址的区别

2008-08-18 20:12 316 查看
逻辑地址(Logical
Address) 是指由程式产生的和段相关的偏移地址部分。例如,您在进行C语言指针编程中,能够读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于您当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel
保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段假如完全相同)。应用程式员仅需和逻辑地址打交道,而分段和分页机制对您来说是完全透明
的,仅由系统编程人员涉及。应用程式员虽然自己能够直接操作内存,那也只能在操作系统给您分配的内存段操作。
线性地址(Linear
Address) 是逻辑地址到物理地址变换之间的中间层。程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。假如启用了分页机制,那么线性地址能够再经变换以产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。Intel
80386的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。
物理地址(Physical
Address) 是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。假如启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。假如没有启用分页机制,那么线性地址就直接成为物理地址了。
虚拟内存(Virtual
Memory)
是指电脑呈现出要比实际拥有的内存大得多的内存量。因此他允许程式员编制并运行比实际系统拥有的内存大得多的程式。这使得许多大型项目也能够在具备有限
内存资源的系统上实现。一个很恰当的比喻是:您无需很长的轨道就能够让一列火车从上海开到北京。您只需要足够长的铁轨(比如说3公里)就能够完成这个任
务。采取的方法是把后面的铁轨立即铺到火车的前面,只要您的操作足够快并能满足需要,列车就能象在一条完整的轨道上运行。这也就是虚拟内存管理需要完成的
任务。在Linux
0.11内核中,给每个程式(进程)都划分了总容量为64MB的虚拟内存空间。因此程式的逻辑地址范围是0x0000000到0x4000000。
有时我们也把逻辑地址称为虚拟地址。因为和虚拟内存空间的概念类似,逻辑地址也是和实际物理内存容量无关的。
逻辑地址和物理地址的“差距”是0xC0000000,是由于虚拟地址->线性地址->物理地址映射正好差这个值。这个值是由操作系统指定的。
机理 逻辑地址(或称为虚拟地址)到线性地址是由CPU的段机制自动转换的。假如没有开启分页管理,则线性地址就是物理地址。假如开启了分页管理,那么系统程式需要参和线性地址到物理地址的转换过程。具体是通过配置页目录表和页表项进行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐