从逻辑地址转换为物理地址。逻辑地址是十六进制

时间:2013-07-08 01:21:28

标签: memory memory-management operating-system tlb

如何将十六进制地址转换为物理地址来回答这个问题?我很困惑,由于语言障碍,我的老师没有帮助。

假设逻辑地址空间为1KB,页面大小为16字节。假设最初没有页面在主存储器中用于该过程,并且使用纯需求分页。当前的空闲帧列表为{2,5,8,1,...}。无论何时需要,都将使用空闲帧列表中的第一帧。假设TLB有两个条目。 TLB和页表最初都是空的。 FIFO用作TLB替换算法。假设按顺序访问以下逻辑地址:0x3d0x300xe50x7d0x330xef。对于以下每个地址访问:

  1. 指定映射到它的物理地址。
  2. 假设访问TLB需要10 ns,访问内存需要100ns,处理页面错误需要8ms。访问此地址需要多长时间?

1 个答案:

答案 0 :(得分:1)

当进程启动时,cpu需要访问地址。所以cpu在TLB条目中查找地址,如果找不到该条目,那么它就是TLB未命中,否则就是TLB命中。如果它是TLB未命中,则它在主存储器中寻找地址并用该地址的TLB条目更新TLB。要记录操作系统的每个虚拟页面放置在物理内存中的位置,操作系统会将每个进程的数据结构保留为页表。

主内存分为16个字节的页面。内存总大小= 1KB。因此页数为1KB / 16 = 2 ^ 10/2 ^ 4 = 2 ^ 6 = 64页。要将逻辑地址转换为物理地址,必须将其拆分为两个组件VPN(虚拟页码)和偏移量。由于地址空间为1KB,因此虚拟地址总共需要10位。由于页面大小为16字节,因此可以进一步划分虚拟地址,VPN高6位,偏移低4位。

最初,主内存中没有页面。为了访问0x3d。它查找了TLB。因为缓存最初是空的。这是一个TLB未命中,转到主存。 0x3d的二进制形式是0000111101.offset(4bits)= 1101和VPN = 000011.因此offset是第3页的13字节。因为页表是空的。这是一个页面错误。将物理页面置于空闲帧2并尝试再次访问此内存并更新页面表。现在将虚拟地址转换为物理地址。物理地址是第2页的第13个字节(因为虚拟页面3映射到物理帧2),即0010(帧号)和1101(偏移量),0x2d(十六进制)。第二次尝试访问时,请按照相同的步骤进行操作,否则0x30将不会出现页面错误。