之前页表结构的不足
之前的页表结构看起来挺好的呀,有什么问题呢?
如果每个页的大小是4k,也就是2的12次方。如果是32位的地址话,也就是说,有2的20次方个页。
那么对应到页表,也就说页表应该有2的20次方个项。因为每个项表示的是一个内存地址,也就说一个项的大小是32位,也就是4个字节。
这样算下来,对应于一个32位的内存地址,一个页表应该4M大小。看起来还可以接受啊。
但注意,每个进程都有一个页表。看下,我的电脑现在有280个进程,也就说如果采用之前的结构,光页表结构就得占用280*4M=1120M,大约1个G的大小。如果是64位系统,会更加可怕。
引入多级页表
之前的一级页表,我们对于32位系统,4k为一页的时候,我们如果要去访问2的20次方的页表,去查找空闲空间,或者访问某一个页内数据。
现在,我们采用多级页表,如上图所示的是二级页表。
我们如果想访问某一个地址,我们首先通过一个页目录号