0755lws 发表于 2020-7-6 14:47:43

逻辑地址和线性地址有什么区别?

请问老师:逻辑地址和线性地址有什么区别?

Twilight6 发表于 2020-7-6 14:57:53


参考参考吧:

逻辑地址、线性地址、物理地址和虚拟地址理解

https://blog.csdn.net/yuzaipiaofei/article/details/51219847

FishC--Student 发表于 2020-7-6 15:30:16

逻辑地址(Logical Address) 是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段如果完全相同)。应用程式员仅需和逻辑地址打交道,而分段和分页机制对你来说是完全透明的,仅由系统编程人员涉及。应用程式员虽然自己能直接操作内存,那也只能在操作系统给你分配的内存段操作。

线性地址(Linear Address) 是逻辑地址到物理地址变换之间的中间层。程式代码会产生逻辑地址,或说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了分页机制,那么线性地址能再经变换以产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。Intel 80386的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。

0755lws 发表于 2020-7-7 09:50:08


逻辑地址就是编译器给程序中的变量空间的地址

int a=3; &a就是逻辑地址

这样理解正确么?

0755lws 发表于 2020-7-7 10:30:30

请问老师!逻辑地址是如何产生的,是段基址产生的,还是编译器产生的?

405794672 发表于 2020-7-12 20:50:41

逻辑历来都是想象。在大脑的的虚构,计算,也就是一系列方法。每个人的方法都不同
因此,我认为,逻辑地址就是看起来的地址。也就是你大脑想象的地址。
线性地址乃程序想象的地址。就是一皮条。按顺序排号,这是理想中的。实际上可不一样。
比如,给你编号,你是1号,但实际上你做的座位可不是第一张椅子。线性地址只是一个名称,区别事物的名称。把椅子编号。每个人知道自己是几号就简单了。实际椅子在哪,你不必担忧,给你办事的人自然知道在哪里。
而逻辑,就是计算出你应该拿到几号椅子。到了后,你按号就坐就取名叫线性地址。而椅子实际在几号,由工作人员控制。比如1号椅子,它占的位置可能是48号。它们的编号是打乱了的。当然,一开始并不乱,
是因为中途有某些编号的人走了。这时候,再接着分配号码,就和实际不一样了
页: [1]
查看完整版本: 逻辑地址和线性地址有什么区别?