Memory 从逻辑地址到物理地址的转换。逻辑地址是十六进制的

Memory 从逻辑地址到物理地址的转换。逻辑地址是十六进制的,memory,memory-management,operating-system,tlb,Memory,Memory Management,Operating System,Tlb,如何将十六进制地址转换为物理地址来回答这个问题?由于语言障碍,我完全糊涂了,老师也帮不了我 假设逻辑地址空间为1KB,页面大小为16字节。假设此进程最初的主内存中没有页面,并且使用纯请求分页。当前自由帧列表是{2,5,8,1,…}。自由帧列表中的第一帧将在需要时使用。假设TLB有两个条目。TLB和page表最初都为空。采用FIFO作为TLB替换算法。假设按顺序访问以下逻辑地址:0x3d,0x30,0xe5,0x7d,0x33,0xef。对于以下每个地址访问: 指定映射到它的物理地址 假设访问TL

如何将十六进制地址转换为物理地址来回答这个问题?由于语言障碍,我完全糊涂了,老师也帮不了我

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

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

  • 当进程启动时,cpu需要访问地址。所以cpu在TLB条目中查找地址,如果找不到该条目,则表示TLB未命中,否则表示TLB命中。如果是TLB未命中,则在主内存中查找地址,并使用该地址的TLB条目更新TLB。为了记录操作系统的每个虚拟页在物理内存中的位置,操作系统保留一个称为页表的每个进程的数据结构

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

    最初,主内存中没有页面。以访问0x3d。它向上看TLB。因为缓存最初是空的。这是TLB未命中,请转到主内存。0x3d的二进制形式为000011101。偏移量(4位)=1101,VPN=000011。所以偏移量是第3页的13字节。因为页面表是空的。所以这是一个页面错误。将物理页放入空闲帧2中,然后再次尝试访问此内存并更新页表。现在将虚拟地址转换为物理地址。物理地址是第2页的第13字节(因为虚拟页面3映射到物理帧2),即0010(帧号)和1101(偏移量),0x2d(十六进制)。第二次尝试访问时,按照相同的过程进行操作,0x30将不会出现页面错误