当前位置:首页 > 内存 > 正文

页表存储在内存还是磁盘上

  • 内存
  • 2024-06-08 13:49:35
  • 4891

一、进程切换时,系统把即将运行进程的页表的起始地址存放在(  )。【答】:C
系统提供了一对硬件寄存器:页表起始地址寄存器和页表长度寄存器。
①页表起始地址寄存器用于存储运行进程的页表在内存中的首地址。当调度程序选择并执行一个进程时,系统从进程控制块中取出页表的首地址并将其发送到该寄存器。
②页表长度寄存器用于存储运行进程的页表长度。当一个进程被选择运行时,系统将其从进程控制块中取出并放入该寄存器中。
二、页表放是在内存上还是磁盘上,为什么?页表是什么意思?如果是一般文件,保存前是放在内存中的,保存后是在磁盘上的,因为不保存时是临时文件。
三、页表项和页表的关系

页表项与页表的关系是:页表项是页表中的元素之一。

1.页表、页表项

页表是由多个页表项组成的,即页表中的每一行都是页表项信息中记录的一个页表项。页框号:记录虚拟页对应的具体物理页。有效位:表示页表项对应的虚拟页是否已读入内存,否则存在于磁盘上。访问位:参考位,指示该页是否已被访问。

修改位:该页在内存中是否被修改过?如果它们被修改,它们将来会保留在磁盘上。这个标志就是为了这个目的而设计的。保护位:指定该页的读写权限。页表项一般是由机器设计的,因为大多数地址转换是由机器完成的。

2.页目录、多级目录

引导页目录:对于32位虚拟地址空间,假设页大小为4K,则4字节进程的页表项有4G/4K=2^20行H.因为页需要进入页表来匹配。

所以,该进程的页表项数也是2^20。不难发现,该进程的页表占用了2^20*4/4K=1024页。对于64位虚拟地址空间,页表的大小更大,理论值为32,000TB。

页表页其实就是存放进程页表的页,是进程的一部分。页表也使用页作为其主要存储单元。因此,为了高效利用内存,大页表页一般不会存储在连续的内存中。

这样,我们就为页表页面提供了标题索引表。页面引导提供了引导,成为二维结构。维度页表结构也称为多级页表。

1.通过CR3寄存器我们得到页目录的地址。

2.然后根据虚拟地址的前10位,确定在页目录中的偏移量。偏移量对应的地址存储的是页表的地址。

3.得到页表的地址,然后根据页表的偏移量得到页表项的地址,就可以知道它对应的是哪个物理页了。

4.最后根据物理页号,访问物理页并加上页内的偏移量,找到对应的数据或指令。