进程页表两级结构:页目录和页表页
进程页表的基本结构仅适合于小进程地址空间,在大地址空间下,该结构发生了变化。大虚址空间下的内存进程页表结构采用页表页和页目录。
32位意味着虚址空间可达4GB
虚址空间计算方法:32位的编址为232,232=210*210*210*22=4GB
1k=1024b
1m=1024K
1g=1024M
若虚址空间为2GB,在页长4KB时共有
2G=1024K*1024K*2
(2*1024*1024KB/4KB)= 219页
若每页的物理页号用4B表示,则该进程页表本身占
219*4B = 210*29*22B = 210*210*2B = 2MB
该进程页表占用的空间为
(219*4B)/4KB =(219*4B)/(4*210B)= 512页
2)由于进程页表大但是空,故对进程页表采取动态分配、动态伸缩的策略
即:进程建立时并不马上分配完整的进程页表空间,当用到某页时(缺页中断或分配页时)才将该页的物理页号放入页表。显然页表中的逻辑页号不连续,页表中每行同时要存放物理页号和逻辑页号。
页表页:页表本身的空间分配也是以页为单位。一个进程页表的不同页表页之间不一定连续。
3)由于页表所占的巨大内存空间和其大部分内容在大部分时间内未使用,故进程页表也被列入页淘汰的范围。
即:进程页表的某些页可能被淘汰到盘交换区中。
4)页目录:由于进程页表的多个页之间不再连续,因此页表页本身也需要地址索引,这种地址索引称为页目录。
页目录中存放着进程页表的所有页表页的地址。
采用由页表页和页目录共同构成的二级页表机制来实现进程页表,Intel CPU对二级页表提供了硬件支持。
5)二级页表结构及其地址映射
每个虚址分为三个部分
页目录号+虚页号+页内位移
6)多级页表结构
对于更大的虚址空间,采用二级进程页表结构可能不够,需要三级甚至更多级页表结构,图3.27给出了三级页表结构及地址映射过程。
7)多级表页结构本质
由于页表的不连续存放,导致对物理页进行地址索引,这就是进程页表,而进程页表又是不连续导致对进程页表页进行地址索引,这就是页目录。
页目录是页表页的索引,页表页是进程物理空间本身的索引