① 什么是逻辑地址,什么是物理地址,它们之间有什么关系
逻辑地址(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,是由于虚拟地址->线性地址->物理地址映射正好差这个值。这个值是由操作系统指定的
从一篇网络文库上赋值下来的,觉得说的挺好挺详细的,参考下
② 物理地址是不是指计算机存放数据在硬盘等存储设备里的地址
不是存放在硬盘的,物理地址是记录在各个硬件固件芯片上的,不可变更,每个硬件的物理地址都是唯一的,如网卡物理地址就是MAC地址例如:e0:fd:b2:d8:ff。硬盘的物理地址是一串字符如:wne72002048ed0001927。通常物理地址用于本地硬件识别,以便确定数据进出硬件是哪一个,在网络中相当于手机识别码或人的身份证。
③ 什么是物理地址物理地址有何作用
网络中的地址分为物理地址和逻辑地址两类,与网络层的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)
④ 物理存储器和存储地址空间的区别
区别
1、存在方式
物理存储器是实际存在的储存地址,而存储地址空间指逻辑上的储存地址。
物理存储器和存储地址空间两者都用B、KB、MB、GB来度量其容量大小。
物理存储器:是指实际存在的具体存储器芯片。如主板上装插的主存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。
存储地址空间:是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是所谓的“寻址”。
(4)为什么存储器要用物理地址扩展阅读
主板上装插的主存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。
存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存,港台称之为记忆体)。
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速率快。内存是电脑中的主要部件,它是相对于外存而言的。
⑤ 什么是逻辑地址和物理地址
有网友问到我:什么是逻辑地址和物理地址?怎么转换?针对此问题,我为大家分享了具体的操作 方法 ,希望对你有帮助!
什么是逻辑地址是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段如果完全相同)。应用程式员仅需和逻辑地址打交道,而分段和分页机制对你来说是完全透明的,仅由系统编程人员涉及。应用程式员虽然自己能直接操作内存,那也只能在 操作系统 给你分配的内存段操作。
什么是物理地址用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。 ——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。也许错误的理解更利于形而上的抽像。 虚拟内存(virtual memory) 这是对整个内存(不要与机器上插那条对上号)的抽像描述。它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。 ——可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。打住了,这个问题再说下去,就收不住了。逻辑地址(logical address) Intel为了兼容,将远古时代的段式内存管理方式保留了下来。逻辑地址指的是机器语言指令中,用来指定一个操作数或者是一条指令的地址。以上例,我们说的连接器为A分配的0x08111111这个地址就是逻辑地址。 ——不过不好意思,这样说,好像又违背了Intel中段式管理中,对逻辑地址要求,“一个逻辑地址,是由一个段标识符加上一个指定段内相对地址的偏移量,表示为 [段标识符:段内偏移量],也就是说,上例中那个0x08111111,应该表示为[A的代码段标识符: 0x08111111],这样,才完整一些” 线性地址(linear address)或也叫虚拟地址(virtual address) 跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。
逻辑地址和物理地址拓展知识存储器中每一个单元的地址可以用两种方法表示:
1.逻辑地址:其表达形式为“段地址:段内偏移地址”。
2.物理地址:CPU与存储器进行数据交换时在地址总线上
提供的20位地址信息称为物理地址。
物理地址=段地址×10H+段内偏移量
CPU一次处理的数据是16位,地址总线实际上代表CPU的寻址能力,地址线为20条那么CPU实际的寻址能力就是2的20次方就是1M。实际的物理地址是这样形成的:
段地址*10H+偏移地址,偏移地址用IP指向,IP是16位的。
例如段地址是1234H,偏移地址是4321H
那么实际的物理地址怎么算呢:1234H*10H+4321H=12340H+4321H=16661H
实际上可以这么来理解,就是段地址左移一位后加上偏移地址就得出实际的物理地址。
这里逻辑地址和物理地址的关系又可以用一个比喻来说明:
比如你的学号是0102,这是你的真实地址亦即物理地址,那么又假如01表示你的班级名称,02表示你相对整个班级的位置,这就是逻辑地址,道理是一样的,只不过在实际由逻辑地址合成物理地址的时候需要将物理地址左移一位,再加上偏移地址。
逻辑地址到物理地址的转换方法以一个例子的形式讲解逻辑地址到物理地址的转换:
某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。
解题过程:
首先要知道页式存储管理的逻辑地址分为两部分:页号和页内地址。物理地址分为两部分:
关系为:逻辑地址=页号+页内地址d
物理地址=块号*块长度( 等于页面长度 L )+页内地址;
页号: p = lnt( 逻辑地址 A / 页面长度 L ); d = 逻辑地址 A % 页面长度 L (取余)
分析题:已知:用户编程空间共32个页面,2ˆ5=32得知页号部分占5位,由“每页为1KB”,1K=2^10,可知内页地址占10位。
由“内存为16KB”,2^4=16得知块号占4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,
00010(本题特例,因为页面长度为1KB)为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是11,11转换二进制是1011,11* 2^10 + d即可求出物理地址为10111001011100,化成十六进制为2 E5C;
即则逻辑地址0A5C(H)所对应的物理地址是2E5C;
猜你喜欢:
1. IP地址和物理地址有什么区别
2. 物理地址和逻辑地址的区别
3. 虚拟地址与物理地址的概念
4. 物理地址什么意思
5. 逻辑地址如何转换成物理地址
6. 物理地址有什么用
7. 物理地址作用是什么
⑥ 什么是逻辑地址什么是物理地址
逻辑地址: 是指由程序产生的与段相关的偏移地址部分。又称绝对地址。
物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址,又叫实际地址或绝对地址。
一、关系:逻辑地址和物理地址相对的。物理地址是唯一的,逻辑地址的相对的。
二、表达方式:
1、逻辑地址:其表达形式为“段地址:段内偏移地址”。
2、物理地址:CPU与存储器进行数据交换时在地址总线上 。
(6)为什么存储器要用物理地址扩展阅读:
一、逻辑地址的产生背景
追根求源,Intel的8位机8080CPU,数据总线(DB)为8位,地址总线(AB)为16位。那么这个16位地址信息也是要通过8位数据总线来传送,也是要在数据通道中的暂存器,以及在CPU中的寄存器和内存中存放的,但由于AB正好是DB的整数倍,故不会产生矛盾!
但当上升到16位机后,Intel8086/8088CPU的设计由于当年IC集成技术和外封装及引脚技术的限制,不能超过40个引脚。但又感觉到8位机原来的地址寻址能力2^16=64KB太少了,但直接增加到16的整数倍即令AB=32位又是达不到的。
故而只能把AB暂时增加4条成为20条。则2^20=1MB的寻址能力已经增加了16倍。但此举却造成了AB的20位和DB的16位之间的矛盾,20位地址信息既无法在DB上传送,又无法在16位的CPU寄存器和内存单元中存放。于是应运而生就产生了CPU段结构的原理。
二、物理地址的计算方法
在实地址方式下,物理地址是通过段地址乘以16加上偏移地址得到的。而16位的段地址乘以16等同于左移4位二进制位,这样变成20位的段基地址,最后段基地址加上段内偏移地址即可得到物理地址。
20位物理地址计算方法如下:
物理地址=段地址*16d+偏移地址。
⑦ 什么是主存物理地址
主存一般指内存储器,简称内存。
物理地址是内存实际编址中的位置,即地址。相对而言,真正在编程中使用的是逻辑地址。
⑧ 什么是逻辑地址什么是物理地址它们之间有什么关系各用在何处
逻辑地址在工具书中的解释
:
1、在有地址变换功能的计算机中,访内指令给出的地址
(操作数)
叫逻辑地址,也叫相对地址。要经过寻址方式的计算或变换才得到内存储器中的物理地址。
2、把用户程序中使用的地址称为相对地址即逻辑地址。
网卡物理地址存储器中存储单元对应实际地址称物理地址,与逻辑地址相对应。
网络中的地址分为物理地址和逻辑地址两类,与网络层的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)。
⑨ 物理地址有什么用
有网友反馈说:我在阅读一些电脑知识的读本时,常常看到“物理地址”这个名词,说实话,我只知道IP地址,从未听说过物理地址。这个物理地址也象IP地址一样重要吗?相信很多用户与这位网友是一样不知道物理地址有什么用的,针对这个情况,我特意分享了物理地址的一些知识,希望可以帮助到大家。
物理地址
在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。
在x86 CPU中,采用了段页式内存管理机制,分段和分页模型。
分页(Paging)机制
逻辑地址由页号和偏移量组成。
分段(Segment)机制
分段允许程序员把存储器看成由多个地址空间或段组成。程序和相关的数据被划分成一组段(segment),不要求所有程序的所有段都有相同长度。
和分页一样,分段情况下的逻辑地址由两部分组成:段号和偏移量。
分段的优点:
简化不断增长的数据结构处理。
允许程序独立地改变或重新编译,而不要求整个程序集合重新链接和重新加载。
有助于进程间的共享。
有助于保护。由于一个段可以被构造成包含一个明确定义的程序或数据集,程序员或系统管理员可以以一种方便的形式指定访问权限。
虚拟内存
内存的基本思想是程序、数据、堆栈的总大小可以超过可用物理内存的大小, 操作系统 把程序当前使用的那些部分保留在内存中,而其他部分保存在磁盘上。
虚拟内存的实现基于分页技术。
虚拟内存的优点:
在内存中可以同时运行多个进程
进程可以比内存全部空间还大,不再局限于物理内存大小
内存更高效地被使用
2 逻辑地址到线性地址的映射过程
X86 CPU逻辑地址到线性地址映射过程如下图:
逻辑地址到线性地址映射过程如下:
(1)根据指令的性质来确定应该使用哪一个段寄存器(Segment Selector),例如转移指令中的地址在代码段,而取数据指令中的地址在数据段;
(2)根据段存器的内容,找到相应的“地址段描述结构“(Segment Descriptor),段描述结构都放在一个表(Descriptor Table)中(GDT或LDT、TR、IDT),而表的起始地址保存在GDTR、LDTR、IDTR、TR寄存器中。这就是4个内存管理寄存器GDTR、LDTR、IDTR和TR的用途;
(3)从地址段描述结构中找到基地址(Base Address);
(4)将指令发出的地址作为位移(Effective Address),与段描述结构中规定的段长度相比,看看是否越界;
(5)根据指令的性质和段描述符中的访问权限来确定是否越权;
(6)将指令中发出的地址作为位移,与基地址相加而得出线性地址(Linear Address)。
问题: 1、逻辑地址就是CPU指令发出的地址,那么段选择码(Segment Selector)的值在哪里? 2、知道段选择码后,需要从描述符表(Descriptor Table)中找到相应的表项,那怎么知道描述符表在内存中哪个位置?
3 线性地址到物理地址的映射过程
X86 CPU线性地址到物理地址映射过程:
线性地址到物理地址映射过程如下:
(1)从CR3寄存器中获取页面目录表(Page Directory)的基地址;
(2)以线性地址的Directory位段为下标,在目录(Page Directory)中取得相应页面表(Page Table)的基地址;
(3)以线性地址中的Table位段为下标,在所得到的页面表中获得相应的页面描述项;
(4)将页面描述项中给出的页面基地址与线性地址中的offset位段相加得到物理地址。