㈠ 逻辑地址转换物理地址公式
物理地址是明确的、最终用在总线上的编号。那么逻辑地址转物理地址怎么转?我为大家介绍逻辑地址转物理地址的解决 方法 。希望大家喜欢。
逻辑地址转换物理地址公式参考如下
1. 物理地址和逻辑地址
物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege checks)。
逻辑地址:CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。
(具体步骤 共三步)
1.确定虚拟地址(物理地址)的有效位
例如:假设页面大小1KB,共32页。(页面:逻辑地址 页框:物理地址)
由32(KB)=32×1024(B) 即等于32×1024 字节
二进制用多少位能有效表示这么多字节呢——答是:15位 因为32×1024=2^5×2^10=2^15
2.再次确定逻辑地址页面位数 你应该知道:逻辑地址=页号+页面
还是以上假设,那么页面大小为1KB=1024字节 同样的方法计算出表示位数:10位
如果给你逻辑地址:0000 1111 1000 0000
那么由:011+11100000000(相当于 页号+页面(10位))推得出页号011=3
3.根据页号找出对应的页框号
由 物理地址=页框号×页块大小(页块大小是等于页面大小的)+页内位移(即页面逻辑地址)
根据上面 物理地址=页框号×1024B + 1110000000 ( 这里的相加是指位置上而言)
例如:110+110=110110(即高地址+低地址)
提问:在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096B,现有一逻辑地址为2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少?
答:4096B=2^12B
16位寻址一共2^16B
分页存储。共分的页:2^16/2^12=2^4=16 共分16页。
第0页的地址范围 0 - FFFH
第1页的地址范围 1000H - 1FFFH
第2页得地址范围 2000H - 2FFFH
.....
第11页 B000H - BFFFH
第15页 F000H - FFFFH
2F6AH=10 1111 0110 1010 在2页的范围对应物理块11
所以物理地址为:
2F6AH - 2000H + B000H = F6AH + B000H= BF6AH
㈡ 什么是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
㈢ 已知逻辑地址求物理地址
㈣ 逻辑地址与物理地址计算(这道题也不会)
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为块号 而题目中没有 也是溢出
不知道算对没。
㈤ 什么是逻辑地址什么是物理地址
逻辑地址: 是指由程序产生的与段相关的偏移地址部分。又称绝对地址。
物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址,又叫实际地址或绝对地址。
一、关系:逻辑地址和物理地址相对的。物理地址是唯一的,逻辑地址的相对的。
二、表达方式:
1、逻辑地址:其表达形式为“段地址:段内偏移地址”。
2、物理地址:CPU与存储器进行数据交换时在地址总线上 。
(5)物理地址与逻辑地址怎么计算扩展阅读:
一、逻辑地址的产生背景
追根求源,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+偏移地址。
㈥ C语言中 知道逻辑地址 如果计算物理地址
要看具体情况的,这个是根据操作系统的地址映射有关的,操作系统根据可以把逻辑地址映射到不同的·物理地址的,要看具体的映射方法以及不同的操作系统,比如分段和分页方式计算方法是不·一样的。
“物理地址*10H + 偏移地址 和 物理地址*10H + 逻辑地址 是等价的吗?”的说法应该是分段的说法。物理地址*10H + 偏移地址 和 物理地址*10H + 逻辑地址不是等价的:物理地址*10H + 偏移地址=逻辑地址
㈦ 逻辑地址转换成物理地址的计算题
页表可以实现从页号到物理块号的地址映射。通过逻辑地址的页号来寻找页表,从而获得物理块号;在将页内地址直接送入物理地址寄存器的块内地址字段中。将块号和块内地址拼接成实际访问地址,即可得到物理地址。
物理地址的计算公式为:物理地址=块的大小(即页的大小L)* 块号f+页内地址d
代入本题解答:
页号=int(2500/1024)=2;页内位移=2500mod1024=452;假设页号2对应块号1,则物理地址为:
物理地址=1024*1+452=1476
(7)物理地址与逻辑地址怎么计算扩展阅读:
逻辑地址(LogicalAddress)即通过电脑程序产生的与段相关的偏移地址部分,也叫做相对地址;
物理地址,即计算机中每一个字节单元的唯一存储地址,也叫做实际地址或绝对地址。
利用所给的逻辑地址首先找到在页表中的那一页,即页号,再者利用所给的逻辑地址计算出在页表的页偏移量,从而利用页表所对应的物理块计算出块号,再利用块号的基础上计算出所给的偏移量。(一般只针对于动态重定位的变化使用)
㈧ 逻辑地址转换成物理地址的计算题
题目及解答如下:
某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 物理块号
0 3
1 7
2 11
3 8
则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。
解题过程:
首先要知道页式存储管理的逻辑地址分为两部分:页号和页内地址。物理地址分为两部分:
关系为:逻辑地址=页号+页内地址
物理地址=块号+页内地址;
分析题:已知:用户编程空间共32个页面,2ˆ5=32得知页号部分占5位,由“每页为1KB”,1K=210,可知内页地址占10位。
由“内存为16KB”,2^4=16得知块号占4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,
00010为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是11,11转换二进制是1011,即可求出物理地址为10111001011100,化成十六进制为2E5C;
即则逻辑地址0A5C(H)所对应的物理地址是2E5C;
㈨ 已知逻辑地址BA00:A800,求物理地址.
逻辑地址的表示为:段地址:偏移地址,物理地址=段地址*16+偏移地址 (十进制),用十六进制表示就是:段地址后补一个0,再加上偏移地址.题目计算如下:物理地址=BA000+A800=C4800H
㈩ C语言中知道逻辑地址如果计算物理地址
可以这么考虑!先把逻辑地址(H)转换成二进制,前6位为页号p得先转换成10进制为2,取得对应的块号,用块号*1024加上后10位为物理地址。 物理地址转化十进制就是再除以1024等于数A余数B,A为逻辑块号