Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 计算三级页表的大小_Operating System_Paging - Fatal编程技术网

Operating system 计算三级页表的大小

Operating system 计算三级页表的大小,operating-system,paging,Operating System,Paging,在32位机器中,我们将虚拟地址细分为4段,如下所示: 8位8位6位10位 我们使用一个3级页表,这样前8位用于第一级,依此类推。在以下问题中,大小以字节为单位。 对于从地址0开始具有256K内存的进程,页表的大小是多少? 假设每个页表条目为2字节 我的答案是:-一级页面表的1个条目(1*2) +第二级页面表的2^4个条目(2^4*2) +第三级页面表格的2^6个条目(2^4*2^6*2) =2082字节 但实际答案是4608字节。我不知道我错在哪里。请帮帮我 我从来没有上过操作系统课,所以我一直

在32位机器中,我们将虚拟地址细分为4段,如下所示: 8位8位6位10位 我们使用一个3级页表,这样前8位用于第一级,依此类推。在以下问题中,大小以字节为单位。 对于从地址0开始具有256K内存的进程,页表的大小是多少? 假设每个页表条目为2字节

我的答案是:-一级页面表的1个条目(1*2) +第二级页面表的2^4个条目(2^4*2) +第三级页面表格的2^6个条目(2^4*2^6*2) =2082字节


但实际答案是4608字节。我不知道我错在哪里。请帮帮我

我从来没有上过操作系统课,所以我一直想做一个愚蠢的练习。来吧。我将假设它的工作原理大致类似于x86

页面大小为2^10=1024 B

您的任务有256KiB=256页内存

页表条目可以映射2^6=64页。所以我们需要256/64=4个整页表

我们可以在一个页面目录中容纳四个页面表条目(我们可以容纳256个),并且可以在页面目录指针表中容纳一个页面目录条目(我当然希望如此)

所以我们需要4个完整的PTs,一个PD和一个PDPT,即4*128+256+256=1024字节,假设您可以重用未完全使用的部分页面,并且您不希望分页结构将垃圾映射到给定地址之上(这是个坏主意)。哎呀,回答错了。奇怪

让我们看看如果您保持所有页面对齐,并假设无法重用这些页面中浪费的空间,会发生什么。这是4*1024+1024+1024=6144字节。妈的,还是回答错了

让我们看看是否有解决方案,即使它涉及到分页结构的奇怪对齐。毕竟,如果您想处理具有2字节条目的分页结构,那么您的分页结构必须位于前65KiB中,或者它们必须是65KiB对齐的,或者两者的奇怪组合。让我们看看这是否是两者的奇怪组合:

现在,如果我们假设PD和PDPT需要页对齐,PD和PDPT需要2*1024=2048字节

为了达到这个解决方案,页面表在对齐后必须每个占用(4608-2048)/4=640字节,这是一个伪对齐(不是2的幂),所以这是不可能的

如果我们在任何需要的边界上对齐PD,而不对齐PDPT,则PD和PDPT取2*(2*2^8)=2*512=1024字节,我们现在就有了每个需要取(4608-1024)/4=896字节的页表。也不可能

现在,如果我们真的想在给定这些要求的情况下以任何价格获得该解决方案,您可以让您的4个PT占用4*1024字节,让510字节的页面目录与您想要的任何内容对齐,并且在PDPT中只有一个条目位于PD结束后,即4096+512=4608字节,该解决方案。但是访问任何高于16MiB-65KiB=0xFF0000的数据都会产生完全不可预测的结果,包括损坏随机内存(因此可能会阻塞计算机)。但至少为您的任务映射了前256KiB

TL;DR:问题的陈述是错误的,或者您给出的解决方案是错误的。 我还想指出,在32位地址空间中使用1KB页面的分页结构条目2B是非常愚蠢的


我只是在这上面浪费了半个小时:)

我也认为这个问题的答案(4608字节)是错误的。我真的想知道这个问题的正确答案,或者我用了正确的方法来解决这个问题。关于PT条目的大小,我选择了(2个字节),这完全是一个假设,使计算变得更容易。一个类似的问题