逻辑地址转换物理地址公式

2017-03-22

物理地址是明确的、最终用在总线上的编号。那么逻辑地址转物理地址怎么转?小编为大家介绍逻辑地址转物理地址的解决方法。希望大家喜欢。

逻辑地址转换物理地址公式参考如下

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

更多相关阅读

最新发布的文章