2013-07-08 87 views
0

我该如何转换十六进制地址到物理地址来回答这个问题?由于语言障碍,我感到十分困惑,我的老师也没有帮助。从逻辑地址转换为物理地址。逻辑地址是十六进制的

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

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

回答

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.偏移量(4位)= 1101和VPN = 000011.因此偏移量是页3的13个字节。由于页表为空。所以它是一个页面错误。使物理页面进入空闲帧2并尝试再次访问该内存并更新页表。现在将虚拟地址转换为物理地址。物理地址是第2页的第13字节(虚拟页面3映射到物理帧2),即0010(帧号)和1101(偏移量),0x2d(十六进制)。第二次尝试访问时,请按照相同的步骤进行操作,并且您可以在0x30时不会发生页面错误。