在请求分页系统中,当访问的页不在内存,便产生一个缺页中断。
缺页中断与一般中断的区别:
例:一个采用请求分页存储管理的计算机系统,其内存(实存)容量为 256M 字节,虚拟内存容量(给用户的最大地址空间)为 4G 字节,页面大小为 4K 字节,试问:
实存物理地址应设为多少位?
256M = 2^28,所以为28位
实存中有多少物理块?
256M/4K = 64K
实存中最大块号是多少?
64K-1
虚存地址应设多少位?
4G = 2^32,所以为32位
虚拟地址空间最多可以有多少页?
4G/4K = 1M
页内最大偏移量是多少?
4k-1 = 4*1024-1 = 4095
最小物理块数指能保证进程正常运行所需的最小的物理块数,最小物理块数与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。
采用直接寻址方式,所需的最少物理块数为 2。一块是用于存放指令,另一块用于存放数据。
间接寻址时,至少要求有三个物理块。 (间接寻址中一些物理块放的是其它物理块的块号)
为每个进程分配固定数目 n 的物理块,在整个运行中都不改变。如出现缺页则从该进程的页面中置换一页。
每个进程分配多少个物理块难以确定.
若太少,会频繁地出现缺页中断,降低了系统的吞吐量。
若太多,内存中驻留的进程数目减少,可能造成 CPU空闲或其它资源空闲的情况。
为每个进程分配一定数目的物理块,但 OS 自留一空闲块队列,若发现缺页,则从空闲块队列中分配一空闲块与该进程,并调入缺页于其中。当空闲块队列用完时,OS 才从内存中任选择一页置换。
为每个进程分配一定数目的物理块,若发现缺页,则从该进程的页面中置换一页,不会影响其它进程的运行。根据进程缺页率高低,则可增加或减少分配给该进程的物理块。
在采用固定分配策略时,可采用以下几种算法:
平均分配算法:平均分配给各个进程。未考虑进程大小,小进程浪费物理块,大进程严重缺页。
按比例分配算法:根据进程的大小按比例分配给各个进程。如果共有 n 个进程,每进程页面数 S i ,系统可用物理块总数为 m,则每进程分到的物理块数 b i :
考虑优先权的分配算法:将系统提供的物理块一部分根据进程大小先按比例分配给各个进程,另一部分再根据各进程的优先权分配物理块数。
预调页:将预计在不久之后便会被访问的页面预先调入内存。
进程的页一般存放在外存的一个连续区域中。一次调入若干个相邻的页会比一次调入一页更高效。
但如果调入的一批页面中的大多数都未被访问,则浪费了内存。
当进程在运行中发生缺页时,就立即提出请求,由系统将缺页调入内存。但这种策略每次仅调入一页,须花费较大的系统开销,增加了启动磁盘 I/O 的频率。
在请求分页系统中,外存分成了按离散分配方式存放文件的文件区和按连续分配方式存放对换页的对换区。进程发出缺页请求时,从何处将缺页调入内存呢?
对换区:如果系统有足够的对换区空间,运行前可将与进程相关的文件从文件区复制至对换区,以后缺页时全部从对换区调页。
文件区:如果系统没有足够的对换区空间,凡是不会被修改的文件,直接从文件区调页,不必回写(换出) 。对可能会修改的文件第一次直接从文件区调页,换出时换至对换区,以后从对换区调页。
UNIX 方式:凡未运行过的页面均从文件区调页,运行过的页面和换出的页面均从对换区调页。
如果一个进程的逻辑空间为 n 页,分配到的物理块为 m(m
页面置换时还需要考虑置换代价。
没有被修改过的页面可以直接放弃,而修改过的页面必须进行保存。
如果被置换页面被修改过的概率是 β,其缺页中断处理时间为 T a ,被置换页面没有被修改过的缺页中断处理时间为 T b ,显然 T a > T b 。则缺页中断处理时间 T: