何时调入页面
- 预调页策略
如果进程的许多页是存放在外存的一个连续区域中,一次调入若干的相邻的页会比依次调入一页更高效。但如果调入的一批页中的大多数都未被访问,则又是低效的。
将那些预计在不久之后便会被访问的页面预先调入内存 - 请求调页策略
当进程在运行中需要访问某部分程序和数据时,发现其所在的页面不在内存,便立即提出请求,由OS将所需的页面调入内存,这种策略每次仅调入一页
从何处调入页面
请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。
对换区采用连续分配,文件区采用离散分配
所以对换区的数据存取比文件区的速度快
所以每当发生缺页请求,系统从何处缺页调入内存有三种情况:
- 系统拥有足够的对换区空间,这时可以全部从对换区调入所需的页面,以提高调页速率。为此,在进程运行前,要把与该进程有关的文件从文件区拷贝到对换区
- 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入,而当换出这些页面时,因为它们未被修改,不用再将它们重新写回崔攀。对于可能被修改的部分,在将它们换出时,必须调入对换区。
- UNIX方式
页面调入过程
每当程序所要访问的页面未在内存(存在位为:“0”),便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序。该程序通过查找页表得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O,将该页调入内存,然后修改页表。如果内存满了,按照某种置换算法,从内存中选出一页换出,若该页未被修改过(修改位为“0”),可不必再写回磁盘,否则必须把它写回磁盘,再把所需的页面调入内存,并修改页表中对应的页表项,置存在位为“1”,并将此页表项写入快表。
缺页率
假设一个进程的逻辑空间为n页,系统为其分配的内存物理块数为m(m<=n),
如果在进程的运行过程中,访问页面成功的次数为S,访问页面失败的次数为F,则该进程总的页面访问次数为A=S+F,缺页率f = F/A
影响缺页率的因素:
- 页面大小。页面划分较大,则缺页率较低
- 进程所分配的物理块数。所分配的物理块数越多,缺页率越低
- 页面置换算法。算法的优劣决定了进程执行过程中缺页中断的次数
- 程序固有特性。程序编制的局部化程度越高,缺页率越低