课上说的256字节虚拟内存空间的交互页面在http://blog.robertelder.org/virtual-memory-with-256-bytes-of-ram/
课上,老师邀请我及另外一个同学(我不记得是谁了,但愿他看到了这个帖子)详细的分析这个页表的性质,并回答以下两个问题(我也不记得具体的问题表述了,我反正做一些分析吧,如果问题不是这些请在下面指出,我在我没分析到的地方再补充):
1、一级页表、二级页表占用了哪些位置?
2、至少需要填哪几页、哪些表项?
我来回答第一个问题:
假设这256字节的虚拟内存按照a位一级页表表项,b位二级页表表项,c位页内偏移分布,有a+b+c=8=log2(256)
那么一级页表表项数为2a ,二级页表表项数为2b ,页表大小为2c 。
假设页表基址(Top level page table pointer)为p1,那么一级页表占用的位置为p1~p1+2a -1,这其中的内容若有效,不妨设其中某一个位置的前(8-c)位为p2 ,则p2 * 2c ~ p2 * 2c + 2b -1的位置被二级页表占用。p3页占用为p3* 2c ~(p3+1)* 2c -1。
二级页表和一级页表都在某些页中,故最终索引到的物理地址都可能是之前索引过程中用到的。二级页表与一级页表也可能重叠,但是并不是所有位置都会发生重叠。当且仅当存在一整数k,k*2c<p1<k* 2c + 2b -1,且p1~p1+2a -1中某一项的前(8-c)位为k,一级页表的作用范围会与二级页表恰好重叠在一页的某些位置。
至于三者重叠在一点的情况的条件应该是第二问的内容,我大概想了一下就不写在这了,希望课上被提问的那个同学能看到这个帖子XD
实话实说,我的确不太记得老师的问题具体怎么描述了,大概分析一下,抛砖引玉吧,如果答的不对或者不符合老师的题意请老师和同学们批评指正。