逻辑地址:存储单元的地址可以用段基值和段内偏移量来表示,段基值确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址。8086体系的CPU一开始是20根地址线, 寻址寄存器是16位, 16位的寄存器可以访问64K的地址空间, 如果程序要想访问大于64K的内存, 就要把内存分段, 每段64K, 用段地址+偏移量的方法来访问 。386CPU出来之后, 采用了32条地址线, 地址寄存器也扩为32位, 这样就可以不用分段了, 直接用一个地址寄存器来线性访问4G的内存了. 这就叫平面模式.
线性地址:又叫虚拟地址,是一个32位无符号整数,可以用来表示高达4GB的地址,跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。
物理地址:用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
注意:
1.CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线性地址,再利用其页式内存管理单元,转换为最终物理地址。
逻辑地址----段式内存管理单元----线性地址----页式内存管理单元----物理地址
这样做两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已。
2.在linux平台下,线性地址=虚拟地址=逻辑地址
3.只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换),逻辑地址也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。
本文详细介绍了计算机内存管理中逻辑地址、线性地址与物理地址的区别与转换过程,从20根地址线的8086到32条地址线的386,解释了如何通过段式和页式内存管理实现地址空间的扩展与寻址。重点阐述了实模式与保护模式下逻辑地址与物理地址的关系。
、物理地址(有效地址、总线地址)&spm=1001.2101.3001.5002&articleId=6957146&d=1&t=3&u=d92ce9b0077c42bcbbc3312d255bf8cc)
4408

被折叠的 条评论
为什么被折叠?



