逻辑地址和物理地址的区别是什么?

2024-12-03 15:24:04
推荐回答(4个)
回答1:

逻辑地址(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,是由于虚拟地址->线性地址->物理地址映射正好差这个值。这个值是由操作系统指定的。

回答2:

网络中的地址分为物理地址和逻辑地址两类,与网络层的IP地址
传输层的端口号以及应用层的用户名相比较,局域望网的MAC层地址是由硬件来处理的,叫做物理地址或硬件地址.IP地址
传输层的端口号以及应用层的用户名是逻辑地址一由软件处理.我认为你说的MAC地址应该就是物理地址.
大多数局域网通过为网卡分配一个硬件地址来标识一个联网的计算机或其他设备.所谓物理地址是指固化在网卡EPROM中的地址,这个地址应该保证在全网是唯一的.IEEE注册委员会为每一个生产厂商分配物理地址的前三字节,即公司标识.后面三字节由厂商自行分配.即一个厂商获得一个前三字节的地址可以生产的网卡数量是16777216块.即一块网卡对应一个物理地址.也就是说对应物理地址的前三字节可以知道他的生产厂商.
如果固化在网卡中的地址为002514895423,那么这块网卡插到主机A中,主机A的地址就是002514895423,不管主机A是连接在局域网1上还是在局域网2上,也不管这台计算机移到什么位置,主机A的物理地址就是002514895423
.它是不变的,而且不会和世界上任何一台计算机相同.当主机A发送一帧时,网卡执行发送程序时,直接将这个地址作为源地址写入该帧.当主机A接收一帧时,直接将这个地址与接收帧目的地址比较,以决定是否...网络中的地址分为物理地址和逻辑地址两类,与网络层的IP地址
传输层的端口号以及应用层的用户名相比较,局域望网的MAC层地址是由硬件来处理的,叫做物理地址或硬件地址.IP地址
传输层的端口号以及应用层的用户名是逻辑地址一由软件处理.我认为你说的MAC地址应该就是物理地址.
大多数局域网通过为网卡分配一个硬件地址来标识一个联网的计算机或其他设备.所谓物理地址是指固化在网卡EPROM中的地址,这个地址应该保证在全网是唯一的.IEEE注册委员会为每一个生产厂商分配物理地址的前三字节,即公司标识.后面三字节由厂商自行分配.即一个厂商获得一个前三字节的地址可以生产的网卡数量是16777216块.即一块网卡对应一个物理地址.也就是说对应物理地址的前三字节可以知道他的生产厂商.
如果固化在网卡中的地址为002514895423,那么这块网卡插到主机A中,主机A的地址就是002514895423,不管主机A是连接在局域网1上还是在局域网2上,也不管这台计算机移到什么位置,主机A的物理地址就是002514895423
.它是不变的,而且不会和世界上任何一台计算机相同.当主机A发送一帧时,网卡执行发送程序时,直接将这个地址作为源地址写入该帧.当主机A接收一帧时,直接将这个地址与接收帧目的地址比较,以决定是否接收.
物理地址一般记作00-25-14-89-54-23(主机A的地址是002514895423)

回答3:

你问的是CPU里的物理地址和逻辑地址吧?
物理地址:在存储器里以字节为单位存储信息,为了正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址.地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的.它是用二进制数来表示的,是无符号整数,书写格式为十六进制数.
它是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果.用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应.
逻辑地址:在有地址变换功能的计算机中,访内指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址.要经过寻址方式的计算或变换才得到内存储器中的物理地址.

回答4:

逻辑地址:其表达形式为“段地址:段内偏移地址”
物理地址:CPU与存储器进行数据交换时在地址总线上
提供的20位地址信息称为物理地址
物理地址=段地址×10H+段内偏移量
逻辑地址和物理地址的关系又可以用一个比喻来说明:
比如你的学号是0102,这是你的真实地址亦即物理地址,那么又假如01表示你的班级名称,02表示你相对整个班级的位置,这就是逻辑地址,道理是一样的,只不过在实际由逻辑地址合成物理地址的时候需要将物理地址左移一位,再加上偏移地址。