今天看到一个关于分页系统中页表项的计算问题。首先要了解页表项是由【页号】【页框号】组成,因为是分页系统每一个页面大小都是一样的所以可以根据逻辑地址的大小推算出【页号】,也就是说页表项中的【页号】可以省略。 下边给出一个例子: 一个32位系统分页系统,页面大小为4KB,则100MB的进程其页表大小为多少,占多少个页面存储页表? 【页面大小】为4KB,既212B 也就是说占了12个bit , 进而可以计算出【页号】为220B 即占了20个bit,因为逻辑地址是由【页号】【页内偏移量】(页面大小)组成,【页框号】(物理块号)232 /212=220 ,也占了20个bit ,一般情况下在题目中都会给出【页框号】占多大的位置,但是这个没有给出,我们其实可以大概的估算一下,就是就【页号】+【页框号】的占了多少bit,即20+20=40bit (8bit 比特= 1Byte 字节) 40/8=5字节,如果把【页号】省略掉也就是只算【页框号】占的字节数 ,即20/8=2…4 也就是3字节(因为2个字节没有办法存储20位)。 但是这个题计算的时候用的【页表项】大小并不是3字节和5字节,而是4字节。(具体为什么我个人认为是32位系统默认就是按照4字节来计算,没有特别要求的话) 下边我们来计算一下这个题 1、100MB的进程占用页表项数 = 100MB/4KB=100 x 28 项 每一个页表项大小是4B,则所占页表大小=100*28 *4B=100KB 2、一个页面可以存储的大小=(212B /4B )x 4KB =2MB,其中212B /4B算出的是页表项的个数 100MB/2MB = 50页
这个题是次要的主要是上边对页表项大小的计算问题的分析。 萌新博主,还有些不适应这个编辑方式还有语言表达不知道是否清晰,如有问题大家可以提出来,望大家见谅。