逻辑地址转换成物理地址的计算题
1 回答阅读 10846
假设页长为1KB1024字节,逻辑地址为2500,请利用页表把逻辑地址转换成物理地址。
最佳回答
假设有一个32位的逻辑地址为0x12345678,页大小为4KB,页表项大小为4字节,页表共有1024项,物理地址空间大小为1GB。请计算该逻辑地址对应的物理地址。
首先,将32位的逻辑地址拆分为三部分:页号、页内偏移和未使用的位。
页大小为4KB,即2的12次方字节,所以页内偏移为低12位,即0x678。
页表项大小为4字节,页表共有1024项,所以页号为高20位,即0x12345。
物理地址空间大小为1GB,即2的30次方字节,所以物理地址也需要32位。
接下来,我们需要通过页表来找到对应的物理页框号。
首先需要计算页表的物理地址。每个页表项占用4字节,所以页表的大小为4KB,即2的12次方字节,需要1024个页表项,所以页表的大小为1024*4=4KB。因此,页表的物理地址为:
页表物理地址 = 页号 * 4 + 页表起始地址
其中,页表起始地址为操作系统内核分配给页表的物理地址。
假设页表起始地址为0x80000000,则页表物理地址为:
页表物理地址 = 0x12345 * 4 + 0x80000000 = 0x81234540
接下来,需要找到对应的页表项。因为每个页表项占用4字节,所以需要将页内偏移右移12位得到页表项的索引。即:
页表项索引 = 页内偏移 >> 12
因为每个页表项占用4字节,所以需要将页表项索引左移2位得到页表项的物理地址。即:
页表项物理地址 = 页表物理地址 + 页表项索引 * 4
假设页表项物理地址为0x81234558,则需要从该地址中取出页框号。
因为页表项中存储的是物理页框号,所以需要将页表项的内容左移12位得到物理页框号。即:
物理页框号 = 页表项内容 << 12
假设页表项的内容为0x87654321,则物理页框号为0x87654000。
最后,将物理页框号和页内偏移相加得到物理地址。即:
物理地址 = 物理页框号 + 页内偏移
因此,该逻辑地址对应的物理地址为:
物理地址 = 0x87654000 + 0x678 = 0x87654678
首先,将32位的逻辑地址拆分为三部分:页号、页内偏移和未使用的位。
页大小为4KB,即2的12次方字节,所以页内偏移为低12位,即0x678。
页表项大小为4字节,页表共有1024项,所以页号为高20位,即0x12345。
物理地址空间大小为1GB,即2的30次方字节,所以物理地址也需要32位。
接下来,我们需要通过页表来找到对应的物理页框号。
首先需要计算页表的物理地址。每个页表项占用4字节,所以页表的大小为4KB,即2的12次方字节,需要1024个页表项,所以页表的大小为1024*4=4KB。因此,页表的物理地址为:
页表物理地址 = 页号 * 4 + 页表起始地址
其中,页表起始地址为操作系统内核分配给页表的物理地址。
假设页表起始地址为0x80000000,则页表物理地址为:
页表物理地址 = 0x12345 * 4 + 0x80000000 = 0x81234540
接下来,需要找到对应的页表项。因为每个页表项占用4字节,所以需要将页内偏移右移12位得到页表项的索引。即:
页表项索引 = 页内偏移 >> 12
因为每个页表项占用4字节,所以需要将页表项索引左移2位得到页表项的物理地址。即:
页表项物理地址 = 页表物理地址 + 页表项索引 * 4
假设页表项物理地址为0x81234558,则需要从该地址中取出页框号。
因为页表项中存储的是物理页框号,所以需要将页表项的内容左移12位得到物理页框号。即:
物理页框号 = 页表项内容 << 12
假设页表项的内容为0x87654321,则物理页框号为0x87654000。
最后,将物理页框号和页内偏移相加得到物理地址。即:
物理地址 = 物理页框号 + 页内偏移
因此,该逻辑地址对应的物理地址为:
物理地址 = 0x87654000 + 0x678 = 0x87654678
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:service@bkw.cn 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。