【读书笔记】现代操作系统(第三版)勘误一

最近停下了教程,安安心心的准备先把操作系统的一些基础概念啃完,今天在读《现代操作系统》(第三版)的第三章<存储管理>时,看到P112页,分析二级页表时,感觉有些问题,不知道是不是作者笔误,还是我理解有误,现在先剔出来,供自己以后检索:

原文如下:(3.3.4节 针对大内存的页表 P112)
下面看一个示例,考虑32位虚拟地址0x00403004(十进制4 206 596)位于数据部分12 292字节处。它的虚拟地址对应PT1=1,PT2=2,Offset=4。MMU首先用PT1作为索引访问顶级页表得到表项1,它对应的地址范围是4M~8M。然后,它用PT2作为索引访问刚刚找到的二级页表并得到表项3,它对应的虚拟地址范围是在它的4M块内的12 288~16 383(即绝对地址4 206 592~4 210 687)。这个表项含有虚拟地址0x00403004所在页面的页框号。如果该页面不在内存中,页表项中的“在/不在”位将是0,引发一次缺页中断。如果该页面在内存中,从二级页表中得到的页框号将与偏移量(4)结合形成物理地址。该地址被放到总线上并送到内存中。

上面这段话中,PT1=1,PT2=2,Offset=4

我自己分析:
虚拟地址0x00403004(十进制4206596),位于数据部分的12292字节处。
0x4206596 =:4*1024*1024 + 12292 = 4194304 + 12292 ,
所以,数据部分位于12292字节处。
地址0x4206596在PT1中是应该属于4M ~ 8M,因此在顶级页面中是1,所以PT1 = 1。
12292=1024*12+4 ,在PT2中是从4M开始的,所以在PT2的前三个是0K ~ 4K, 4K~8K,8K~12K,12K-16K,所以这个地址在二级页面中映射到第4表项,所以PT2 = 3,再加偏移量4,所以Offset = 4 。

由此分析可以得出:这里应该是PT2=3 ,他是在第4表项中有4个偏移量,书上写的是PT=2,是第3表项。
个人分析,此处应该是PT2 = 3,照第二版和第三版的英文版,全是写的PT2=2,实在理解不通,也许真的是大神Andrew S.Tanenbaum的笔误吧

你可能感兴趣的:(【读书笔记】现代操作系统(第三版)勘误一)