1. 逻辑地址如何转换成物理地址的
首先我们知道,逻辑地址=段地址:偏移地址
然后进行运算:段地址×16+偏移地址=物理地址(可以理解为段地址末尾补一个零)
举例:逻辑地址是1000H:1000H
那么物理地址为1000H×16+1000H=11000H
拓展知识:
逻辑地址和物理地址的区别是:
逻辑地址(LogicalAddress)是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透明的,仅由系统编程人员涉及。应用程序员虽然自己可以直接操作内存,那也只能在操作系统给你分配的内存段操作。
物理地址(PhysicalAddress)是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。
2. C语言中知道逻辑地址如果计算物理地址
可以这么考虑!先把逻辑地址(H)转换成二进制,前6位为页号p得先转换成10进制为2,取得对应的块号,用块号*1024加上后10位为物理地址。 物理地址转化十进制就是再除以1024等于数A余数B,A为逻辑块号
3. 什么是逻辑地址什么是物理地址
逻辑地址: 是指由程序产生的与段相关的偏移地址部分。又称绝对地址。
物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址,又叫实际地址或绝对地址。
一、关系:逻辑地址和物理地址相对的。物理地址是唯一的,逻辑地址的相对的。
二、表达方式:
1、逻辑地址:其表达形式为“段地址:段内偏移地址”。
2、物理地址:CPU与存储器进行数据交换时在地址总线上 。
(3)逻辑地址和物理地址怎么算扩展阅读:
一、逻辑地址的产生背景
追根求源,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+偏移地址。
4. 2.6 什么是逻辑地址什么是物理地址如何由逻辑地址计算物理地址
【解】:物理地址:完成存储器单元或I/O端口寻址的实际地址成为物理地址,CPU型号不同其物理地址也不同。物理地址是指CPU和存储器进行数据交换时实际所使用的地址,而逻辑地址是程序使用的地址。物理地址由两部分组成:段基址(段起始地址高16位)和偏移地址。前者由段寄存器给出,后者是指存储单元所在的位置离段起始地址的偏移距离。当CPU寻址某个存储单元时,先将段寄存器的内容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。在取指令时,CPU自动选择代码段寄存器CS,左移4位后,加上指令提供的16位偏移地址,计算出要取指令的物理地址。堆栈操作时,CPU自动选择堆栈段寄存器SS,将其内容左移4位后,加上指令提供的16位偏移地址,计算出栈顶单元的物理地址。每当存取操作数时,CPU会自动选择数据段寄存器(或附加段寄存器ES),将段基值左移4位后加上16位偏移地址,得到操作数在内存的物理地址。
5. 什么是8086的基址、偏移地址、逻辑地址、物理地址 如何计算物理地址
逻辑地址是应用程序所应用的地址,物理地址是内存中的地址是给硬件识别的,基址是由分段部件中的段选择符找到段描述符再得到基址,逻辑地址通过分段部件得到基址再加上偏移地址就得到了物理地址
6. 逻辑地址转换成物理地址的计算题
页表可以实现从页号到物理块号的地址映射。通过逻辑地址的页号来寻找页表,从而获得物理块号;在将页内地址直接送入物理地址寄存器的块内地址字段中。将块号和块内地址拼接成实际访问地址,即可得到物理地址。
物理地址的计算公式为:物理地址=块的大小(即页的大小L)* 块号f+页内地址d
代入本题解答:
页号=int(2500/1024)=2;页内位移=2500mod1024=452;假设页号2对应块号1,则物理地址为:
物理地址=1024*1+452=1476
(6)逻辑地址和物理地址怎么算扩展阅读:
逻辑地址(LogicalAddress)即通过电脑程序产生的与段相关的偏移地址部分,也叫做相对地址;
物理地址,即计算机中每一个字节单元的唯一存储地址,也叫做实际地址或绝对地址。
利用所给的逻辑地址首先找到在页表中的那一页,即页号,再者利用所给的逻辑地址计算出在页表的页偏移量,从而利用页表所对应的物理块计算出块号,再利用块号的基础上计算出所给的偏移量。(一般只针对于动态重定位的变化使用)
7. 逻辑地址与物理地址计算(这道题也不会)
1)092b(H)转换成二进制就是0000 1001 0010 1011 前6位为页号p得先转换成10进制为2 ,对应的块号为5,用5*1024加上后10位(0100101011转换成10进制为1+2+8+32+256=299)为5419即为物理地址
2)2A12转换成二进制为0010 1010 0001 0010 页号为001010就是10 而页号中缺页了 溢出
3)2A5C十进制就是10844再除以1024等于 10余604 10为块号 而题目中没有 也是溢出
不知道算对没。
8. 在8086里 什么是物理地址,逻辑地址
存储器中每一个单元的地址可以用两种方法表示:
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表示你相对整个班级的位置,这就是逻辑地址,道理是一样的,只不过在实际由逻辑地址合成物理地址的时候需要将物理地址左移一位,再加上偏移地址。
9. 根据逻辑地址算出物理地址
逻辑内存为4页,即2的2次方,所以逻辑地址表示页号的高位有2位。页大小为4字节,即2的2次方,故页内地址有2位。逻辑地址共4位。逻辑地址0,转换为二进制为00,00。故页号为0,页内地址为0。
而对于逻辑地址5,转换为二进制为01,01。故页号为1,页内地址为1。
10. 什么是8086中的逻辑地址和物理地址
8086中含有存储器.
存储器中每一个单元的地址可以用两种方法表示:逻辑地址物理地址
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
实际上可以这么来理解,就是段地址左移一位后加上偏移地址就得出实际的物理地址.
再比如:逻辑地址:1500H先化为2进制 0001 0101 0000 0000
左移四位就是0001 0401 0000 0000 0000,即15000H
若偏移地址为1000H 则物理地址就是16000H