计算机任务执行时,主存空间的利用率可以得到有效提高。这是因为并非整个程序都需即时装入主存,仅需部分装载后便可启动运行,剩余部分则留存于磁盘上,待需要时再行装入。这样的存储器模式称为虚拟存储器,其容量往往大于实际主存容量。
程序在执行过程中呈现出局部性规律。即在特定时间段内,程序的执行和所访问的空间均局限于某一特定区域。这种局限性体现在时间和空间两个方面。
时间局限性指的是某个程序指令一旦执行,不久的将来可能再次被执行;同理,某个存储单元被访问后,该单元的再次访问几率也较高。这主要是由于程序中存在大量的循环处理所致。
空间局限性则主要反映在程序对存储单元的访问模式上。一旦程序访问了某个存储单元,其附近的存储单元也可能会在不久的将来被访问。这通常是因为程序的顺序执行所导致的。
虚拟存储备请求调入和置换功能,能以逻辑方式扩充主存容量。其逻辑容量由主存和外存的总容量以及CPU的可寻址范围共同决定,运行速度近似于主存速度,因此应用十分广泛。
页式虚拟存储系统是在分页系统基础上增加了请求调页和页面置换功能而形成的。这种系统以页面为单位进行置换操作。
而段式虚拟存储系统则是在分段系统的基础上增加了请求调段和分段置换功能,其置换操作以段为单位进行。
请求分页是页式虚拟存储的一种常见形式,它在纯分页系统的基础上增加了请求调页和页面置换功能。这种方式的页表机制需在纯分页的页表机制上增加额外信息,如状态位、访问字段和辅存地址等,以便在数据转进转出时提供参考。
在请求分页系统中,地址变换机构得到了增强,增加了处理缺页中断和从主存中移出一页以实现虚拟存储的功能。
当所要访问的页面不在主存时,系统会产生缺页中断,并请求将缺失的页面调入主存。这一过程由中断机构完成。
关于缺页中断的具体细节:缺页中断是在指令执行期间产生并处理中断信号的;当中断发生时,系统会返回到被中断指令的开始处重新执行该指令;一条指令在执行期间可能会多次触发缺页中断。
在进程运行中若发生缺页且主存无空闲块时,为保证进程继续运行,需将主存中的某页移至磁盘的对换区。系统将依据页面置换算法决定哪一页面应被移除。置换算法的优劣直接影响系统性能,不良算法可能导致系统抖动,使进程运行时间主要用于页面置换工作,从而降低系统性能。
理想化的页面置换算法旨在选择永不使用或最长时间内不再被访问的页面进行置换,其性能最佳但实现难度大。而最先进入主存算法则是淘汰在主存中驻留时间最久的页面,但其性能最差且可能引发Belady现象——即分配更多页面反而导致缺页率上升。
最近最少使用(LRU)算法以及与之相似的算法则选择最近最少使用的页面进行置换。还有基于一段时间未使用过的页面进行置换的算法,这些算法均致力于优化系统性能。