问题 问答题

分析存储管理中,页表的功能是什么当系统中的地址空间变得非常大时,会给页表的设计带来什么样的新问题给出一种解决方案,分析它的优缺点。

答案

参考答案:在分页系统中,允许将进程的每一页离散地存储在内存的任何物理块中,但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立一张页面映射表,简称页表。在进程中地址空间内的所有页(0~n)依次在页表中有一页表项,即可找到每页在内存中的物理块号。可见,页表的作用是实现从页号到物理块号的地址映射。
现代的大多数计算机系统,都支持大的逻辑地址空间(232~264)。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。例如,对于一个具有32位的逻辑地址空间的分页系统规定页面大小为4KB即212B,则在每个进程页表中的页表项可达1M个之多。又因为每个页表项占用4B(字节),故每个进程的页表就要占用4MB的内存空间,而且还要求是连续的,显然这是不现实的。我们可以使用下述两个方法来解决这一问题:
·对页表所需要的内存空间,采用离散分配方式,来解决难以找到一块连续的大内存空间的问题;
·只将当前需要的部分页表调入内存,其余的页表项仍驻留在磁盘上,需要时再将它们调入内存。
因此就发展出两级页表。在用户逻辑地址原来划分的基础上,将页表部分再分为页表索引项和页表两部分。也就是说对页表进行分页,使每个页面的大小与内存物理块的大小相同。比如32位的逻辑地址可采用如下所示的格式:
[*]
对投入运行的程序,将其页表产生索引调入内存,而对其页表调入少量的页。程序运行时如果找不到相应的页表,则产生中断信号,请求操作系统将该页表调入内存。
两级页表适应了大地址空间的需要,实现了虚拟存储系统,但增加了地址变换的开销和操作系统管理的复杂性。

选择题
单项选择题