2021年10月物理地址是如何计算的?
逻辑地址中的前10位是页号,后12位是页内偏移量。将逻辑地址0x00402269转换成二进制,得到:0000000100000001001001101。
前10位是页码,即:
0000 0000 01
页内偏移量是最后12位,即:
0000 0010 0010 0110 1001
因为系统采用两级页表进行分页存储,所以需要通过两个页表将逻辑地址转换成物理地址。
一级页表中每个条目的大小为4字节(32位),其中高20位存储二级页表的起始地址,低12位存储标志位。
假设一级页表的基址为0x00001000,则一级页表第八项的内容为0x00001200,也就是说二级页表的起始地址为0x 0001200。因此,逻辑地址中的前10位是页号,需要在一级页表中找到相应的条目,并从中读取二级页表的起始地址。
二级页表中每个条目的大小为4字节(32位),其中高20位存储物理页帧号,低12位存储标志位。
假设二级页表的基址为0x00001200,则二级页表第六项的内容为0x00003456,即逻辑页号为0x 0000106的页映射到物理页帧号为0x00003456的物理页帧。因此,需要从二级页表中读取相应的物理页框号,并将物理页框号与页内偏移量相结合,以形成物理地址。
页面中的偏移量为:0000 0010 0010 010 10 1001。
转换成十进制:553。
因此,对应于该逻辑地址的物理地址是:
0x00003456 * 4 + 553 = 0x0000D58D
因为主存是按字节寻址的,所以物理地址需要乘以4。