如何发现页面不在内存中?怎样处理这种情况呢?
例如下图,使用中断位来表示对应地址是否被装在内存中,若未被装载,则对应中断位为 1
经过扩充后的页表可能包括页号、驻留标志位、引用位、修改位、保护位、内存块等。除了各个进程的页表外,操作系统还需要维护页面与磁盘物理地址的对应表,称为「外页表」。进程启动运行前系统为其建立外页表,并把进程程序页面装入外存。该表按进程页号的顺序排列,为节省内存,外页表可存放在磁盘中,当发生缺页中断需要查用时才被调入。
在直接映像的页面管理策略中,逻辑地址为
其中 b 为基址寄存器。获得
直接映像的页地址转换
但也存在问题。页表可能会非常大。如:32 位 OS,意味着一个进程的虚拟地址空间可达 4G,如果页大小为4K,则页表有 1M 个页表目,如果一个表目占 4 个字节,则一个进程的页表需要 4M 内存。如果进程数较多,每个进程的页表大小加起来会占用相当一部分主存储器空间。
为了解决此问题,通常采取以下两种措施: