6.3页面置换1.页面置换的发生时机如果增加多道程序运行,就会过度

合集下载

6.3页面置换1.页面置换的发生时机如果增加多道程序运行,就会过度

6.3页面置换1.页面置换的发生时机如果增加多道程序运行,就会过度

6.3页面置换1. 页面置换的发生时机如果增加多道程序运行,就会过度分配(over-allocating)内存。

例如运行6个进程,且每个进程有10页大小但事实上只使用其中的5页,那么就获得了更高的CPU利用率和吞吐量,且有10帧可作备用。

然而,每个进程有可能会突然试图使用其所有的10页,从而产生共60帧的总需求,而实际物理内存只有40帧可用。

再者,还需要考虑到内存不是仅用于保存程序的页面。

I/O 缓存也需使用大量的内存。

这种使用会增加内存分配算法的压力。

在I/O缓存和程序页面之间平衡内存的分配是个棘手问题。

有的系统为I/O 缓存分配了一定比例的内存,而另一些系统则允许用户进程和I/O 与系统竞争使用所有系统内存。

内存的过度分配会导致以下问题:当一个用户进程执行时,发生一个缺页中断。

此时操作系统会确定所需页在磁盘上的位置,但是却发现空闲帧列表上并没有空闲帧,所有内存都正在使用(见图6.8) 。

图6.8 需要页置换的情况这时操作系统会有若干选择。

它可以终止用户进程。

然而,按需调页是操作系统试图改善计算机系统的使用率和吞吐量的技术。

用户并不关心其进程是否运行在调页系统上:调页对用户而言应是透明的。

因此,这种选项并不是最佳选择。

操作系统也可以交换出一个进程,以释放其所有帧,并降低多道程序的级别。

这种选择在有些环境下是好的,但更为常用的解决方法是页面置换(page replacement)。

在进程运行过程中,如果发生缺页,而此时内存中又无空闲块时,为了保证进程能正常运行,需要从内存中调出一页程序或数据送到磁盘的对换区。

这个操作叫做页面置换。

决定将哪个页面调出必须根据页面置换算法(replacement policy)来确定。

目标一般是将那些以后不再被访问或在较长时间内不会再被访问的页调出。

置换算法通常会在局部性原理指导下依据历史统计数据进行预测。

2. 基本页置换页置换采用如下方法。

如果没有空闲帧,那么就查找当前未使用的帧,并将其释放。

操作系统-页面置换算法

操作系统-页面置换算法

操作系统-页面置换算法操作系统页面置换算法在操作系统中,页面置换算法是一项至关重要的技术,它主要用于管理内存中的页面,当内存空间不足时,决定哪些页面应该被替换出去,为新的页面腾出空间。

这一过程对于系统的性能和效率有着直接的影响。

想象一下,内存就像是一个有限大小的书架,而页面就像是一本本书。

当书架已经满了,但我们还想放入新的书时,就必须要把一些书拿出来,为新书腾出位置。

页面置换算法就是决定拿哪本书出来的规则。

常见的页面置换算法有多种,下面我们来详细了解一下。

首先是先进先出(FIFO)算法。

它的原理就像排队一样,先进入内存的页面先被替换出去。

这种算法实现起来比较简单,但可能会出现一种叫做“Belady 异常”的现象,即增加分配给进程的物理块数量时,反而可能会导致缺页率增加。

这是因为可能先进入的页面是经常被使用的,而后面进来的是不常使用的,这样就容易造成错误的替换。

接下来是最近最久未使用(LRU)算法。

它的思路是把最近一段时间内最久没有被使用的页面替换出去。

这种算法的性能通常比较好,因为它更能反映页面的实际使用情况。

但它的实现相对复杂,需要额外的硬件支持或者通过软件来模拟实现。

然后是最近未使用(NRU)算法。

这个算法会把页面分为四类:未被访问且未被修改、未被访问但已被修改、已被访问但未被修改、已被访问且已被修改。

然后根据这些分类来选择替换的页面。

它的优点是实现相对简单,但可能不如 LRU 算法那么精确。

还有一种叫做时钟(Clock)算法,也称为第二次机会算法。

它把所有的页面组成一个环形链表,通过一个指针来遍历。

当需要替换页面时,如果页面的访问位是 0 ,则直接替换;如果是 1 ,则将其访问位置为 0 ,然后指针继续移动,直到找到访问位为 0 的页面。

除了以上这些,还有最优(OPT)算法。

这是一种理想的算法,它会选择未来最长时间内不会被使用的页面进行替换。

但由于它需要预先知道未来的页面访问情况,所以在实际中是无法实现的,通常只是用来作为评估其他算法性能的标准。

(完整版)操作系统课后题答案

(完整版)操作系统课后题答案

2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口;(2)OS作为计算机系统资源的管理者;(3)OS实现了对计算机资源的抽象。

5.何谓脱机I/O和联机I/O?答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。

该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。

而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。

11.OS有哪几大特征?其最基本的特征是什么?答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。

20.试描述什么是微内核OS。

答:(1)足够小的内核;(2)基于客户/服务器模式;(3)应用机制与策略分离原理;(4)采用面向对象技术。

25.何谓微内核技术?在微内核中通常提供了哪些功能?答:把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。

在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。

第二章进程管理2. 画出下面四条语句的前趋图:S1=a:=x+y; S2=b:=z+1; S3=c:=a – b;S4=w:=c+1;答:其前趋图为:7.试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志?答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。

作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。

OS是根据PCB对并发执行的进程进行控制和管理的。

11.试说明进程在三个基本状态之间转换的典型原因。

答:(1)就绪状态→执行状态:进程分配到CPU资源;(2)执行状态→就绪状态:时间片用完;(3)执行状态→阻塞状态:I/O请求;(4)阻塞状态→就绪状态:I/O完成.19.为什么要在OS 中引入线程?答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。

页置换算法

页置换算法

页置换算法页面置换算法是操作系统中的一种重要算法,它负责管理计算机的内存使用情况。

在计算机的内存中,有限的空间需要动态的分配给不同的程序,因此我们需要一种好的策略来管理内存的使用情况。

页面置换算法是指当计算机中的内存空间不足时,操作系统通过选定一部分内存页并将其从内存中替换出去。

在这个过程中,系统需要确定哪些页面应该被保留在内存中,哪些应该被置换出去,以最大限度地利用计算机的内存资源。

最常见的页面置换算法包括FIFO(先进先出)算法、LRU(最近未使用)算法、OPT(最佳置换)算法等。

FIFO算法的思想非常简单,就是按照页面调入到内存的先后顺序,将最先调入的页面置换出去。

这种算法的优点是简单易实现,但是由于没有考虑页面使用的频率,因此可能会出现置换出来的页面又马上要被调入内存的情况,造成系统不断的置换,效率较低。

LRU算法则是根据页面最近一次被访问的时间来置换页面,即选择最久未被使用的页面进行置换。

由于考虑了页面的使用情况,LRU算法比FIFO算法更为优秀,但是实现上比FIFO要复杂一些。

OPT算法是一种理论上最优的页面置换算法,它可以在所有置换算法中取得最佳的性能,但是由于它需要提前知道程序页面访问顺序,因此在实际应用中难以实现。

除了上述几种页面置换算法外,还有一些改进算法如LFU(最近最少使用)算法和Clock算法等。

这些算法从不同角度出发,考虑不同的因素进行页面置换,因此在具体应用场景中,根据不同的需求和系统特性,可以选择最合适的置换算法。

总之,页面置换算法是操作系统中非常重要的一部分,它决定了计算机内存的使用效率和系统的性能表现。

因此,在选择页面置换算法时不仅要考虑算法的实现难度和性能,还需要结合具体系统特性和应用场景来综合考虑,以达到最优的效果。

操作系统第二版课后习题答案

操作系统第二版课后习题答案

操作系统第二版课后习题答案操作系统第二版课后习题答案操作系统是计算机科学中的重要领域,它负责管理计算机硬件和软件资源,为用户提供良好的使用体验。

在学习操作系统的过程中,课后习题是巩固和深化知识的重要方式。

本文将为大家提供操作系统第二版课后习题的答案,帮助读者更好地理解和掌握操作系统的知识。

第一章:引论1. 操作系统的主要功能包括进程管理、内存管理、文件系统管理和设备管理。

2. 进程是指正在执行的程序的实例。

进程控制块(PCB)是操作系统用来管理进程的数据结构,包含进程的状态、程序计数器、寄存器等信息。

3. 多道程序设计是指在内存中同时存放多个程序,通过时间片轮转等调度算法,使得多个程序交替执行。

4. 异步输入输出是指程序执行期间,可以进行输入输出操作,而不需要等待输入输出完成。

第二章:进程管理1. 进程调度的目标包括提高系统吞吐量、减少响应时间、提高公平性等。

2. 进程调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、时间片轮转等。

3. 饥饿是指某个进程长时间得不到执行的情况,可以通过调整优先级或引入抢占机制来解决。

4. 死锁是指多个进程因为争夺资源而陷入无限等待的状态,可以通过资源预分配、避免环路等方式来避免死锁。

第三章:内存管理1. 内存管理的主要任务包括内存分配、内存保护、地址转换等。

2. 连续内存分配包括固定分区分配、可变分区分配和动态分区分配。

3. 分页和分段是常见的非连续内存分配方式,分页将进程的地址空间划分为固定大小的页,分段将进程的地址空间划分为逻辑段。

4. 页面置换算法包括最佳置换算法、先进先出(FIFO)算法、最近最久未使用(LRU)算法等。

第四章:文件系统管理1. 文件是操作系统中用来存储和组织数据的逻辑单位,可以是文本文件、图像文件、音频文件等。

2. 文件系统的主要功能包括文件的创建、删除、读取、写入等操作。

3. 文件系统的组织方式包括层次目录结构、索引结构、位图结构等。

页面置换常用的算法总结

页面置换常用的算法总结

页⾯置换常⽤的算法总结本⽂转载⾃:进程运⾏时,若其访问的页⾯不在内存⽽需将其调⼊,但内存已⽆空闲空间时,就需要从内存中调出⼀页程序或数据,送⼊磁盘的对换区。

选择调出页⾯的算法就称为页⾯置换算法。

好的页⾯置换算法应有较低的页⾯更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页⾯先调出。

常见的置换算法有以下四种。

1. 最佳置换算法(OPT)最佳(Optimal, OPT)置换算法所选择的被淘汰页⾯将是以后永不使⽤的,或者是在最长时间内不再被访问的页⾯,这样可以保证获得最低的缺页率。

但由于⼈们⽬前⽆法预知进程在内存下的若千页⾯中哪个是未来最长时间内不再被访问的,因⽽该算法⽆法实现。

最佳置换算法可以⽤来评价其他算法。

假定系统为某进程分配了三个物理块,并考虑有以下页⾯号引⽤串:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1进程运⾏时,先将7, 0, 1三个页⾯依次装⼊内存。

进程要访问页⾯2时,产⽣缺页中断,根据最佳置换算法,选择第18次访问才需调⼊的页⾯7予以淘汰。

然后,访问页⾯0时,因为已在内存中所以不必产⽣缺页中断。

访问页⾯3时⼜会根据最佳置换算法将页⾯1淘汰……依此类推,如图3-26所⽰。

从图中可以看出⾤⽤最佳置换算法时的情况。

可以看到,发⽣缺页中断的次数为9,页⾯置换的次数为6。

访问页⾯70120304230321201701物理块1777222227物理块200004000物理块31133311缺页否√√ √√√√√√√图3-26 利⽤最佳置换算法时的置换图2. 先进先出(FIFO)页⾯置换算法优先淘汰最早进⼊内存的页⾯,亦即在内存中驻留时间最久的页⾯。

该算法实现简单,只需把调⼊内存的页⾯根据先后次序链接成队列,设置⼀个指针总指向最早的页⾯。

但该算法与进程实际运⾏时的规律不适应,因为在进程中,有的页⾯经常被访问。

操作系统页面置换算法课程设计

操作系统页面置换算法课程设计

操作系统课程设计报告书一、设计目的学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。

本设计木的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二、设计任务1、通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在地址部分。

2、将指令序列换成为页地址流。

3、计算并输出下述各种算法在不同内存容量下的命中率。

(1)先进先出的算法(FIFO);(2)最近最少使用算法(LRU);(3)最近最不经常使用算法(NUR);三、设计内容与步骤分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。

1、调页策略1)何时调入页面2)请求调页策略2、从何处调入页面(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。

为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。

(2) 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。

(3) UNIX方式。

由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入。

而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次时,应从对换区调入。

由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。

3、页面调入过程四、页面置换算法在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。

但应将哪个页面调出,须根据一定的算法来确定。

计算机操作系统(第四版)1-8章-课后答案(全)

计算机操作系统(第四版)1-8章-课后答案(全)

计算机操作系统(第四版)1-8章-课后答案(全)第四版计算机操作系统课后答案第一章1. 操作系统的定义操作系统是一种软件,它管理着计算机系统的硬件和软件资源,并为用户和应用程序提供接口,以方便他们的使用。

2. 操作系统的功能操作系统具有以下功能:- 进程管理:负责创建、执行和终止进程,并管理它们的资源分配。

- 存储管理:管理计算机系统的内存资源,包括内存分配、虚拟内存和页面置换等。

- 文件系统管理:管理计算机系统中的文件和文件夹,包括文件的存储、读写和保护等。

- 设备管理:负责管理计算机系统中的各种设备,如打印机、键盘和鼠标等。

- 用户接口:提供用户与计算机系统进行交互的接口,如命令行界面和图形用户界面。

3. 操作系统的类型操作系统可以分为以下类型:- 批处理操作系统:按照一系列预先定义的指令集来运行任务。

- 分时操作系统:多个用户可以同时使用计算机系统。

- 实时操作系统:对任务的响应时间要求非常高,用于控制系统和嵌入式系统。

- 网络操作系统:支持多台计算机之间的通信和资源共享。

- 分布式操作系统:在多台计算机上分布式地管理和调度任务。

第二章1. 进程与线程的区别进程是计算机系统中正在运行的程序实例,而线程是进程内的一个执行单元。

进程拥有独立的地址空间和资源,而线程共享进程的地址空间和资源。

多个线程可以在同一进程内并发执行,从而提高系统的效率和资源利用率。

2. 进程的状态转换进程可以处于以下状态:- 创建状态:进程正在被创建。

- 就绪状态:进程准备好执行,等待分配CPU资源。

- 运行状态:进程占用CPU资源执行。

- 阻塞状态:进程等待某种事件发生。

- 终止状态:进程完成执行或被终止。

3. 进程调度算法操作系统使用进程调度算法来决定哪个进程应该被执行。

常见的调度算法有:- 先来先服务(FCFS)调度算法:按照进程到达的顺序进行调度。

- 最短作业优先(SJF)调度算法:选择运行时间最短的进程进行调度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.3页面置换1. 页面置换的发生时机如果增加多道程序运行,就会过度分配(over-allocating)内存。

例如运行6个进程,且每个进程有10页大小但事实上只使用其中的5页,那么就获得了更高的CPU利用率和吞吐量,且有10帧可作备用。

然而,每个进程有可能会突然试图使用其所有的10页,从而产生共60帧的总需求,而实际物理内存只有40帧可用。

再者,还需要考虑到内存不是仅用于保存程序的页面。

I/O 缓存也需使用大量的内存。

这种使用会增加内存分配算法的压力。

在I/O缓存和程序页面之间平衡内存的分配是个棘手问题。

有的系统为I/O 缓存分配了一定比例的内存,而另一些系统则允许用户进程和I/O 与系统竞争使用所有系统内存。

内存的过度分配会导致以下问题:当一个用户进程执行时,发生一个缺页中断。

此时操作系统会确定所需页在磁盘上的位置,但是却发现空闲帧列表上并没有空闲帧,所有内存都正在使用(见图6.8) 。

图6.8 需要页置换的情况这时操作系统会有若干选择。

它可以终止用户进程。

然而,按需调页是操作系统试图改善计算机系统的使用率和吞吐量的技术。

用户并不关心其进程是否运行在调页系统上:调页对用户而言应是透明的。

因此,这种选项并不是最佳选择。

操作系统也可以交换出一个进程,以释放其所有帧,并降低多道程序的级别。

这种选择在有些环境下是好的,但更为常用的解决方法是页面置换(page replacement)。

在进程运行过程中,如果发生缺页,而此时内存中又无空闲块时,为了保证进程能正常运行,需要从内存中调出一页程序或数据送到磁盘的对换区。

这个操作叫做页面置换。

决定将哪个页面调出必须根据页面置换算法(replacement policy)来确定。

目标一般是将那些以后不再被访问或在较长时间内不会再被访问的页调出。

置换算法通常会在局部性原理指导下依据历史统计数据进行预测。

2. 基本页置换页置换采用如下方法。

如果没有空闲帧,那么就查找当前未使用的帧,并将其释放。

可采用这样的方式来释放一个帧:将其内容写到交换空间,并改变页表(和所有其他表)以表示该页不在内存中(见图 6.9) 。

接着可使用该空闲帧来保存进程的缺页。

同时还需在缺页处理程序中添加页置换操作:(1) 查找所需页在磁盘上的位置。

(2) 查找一个空闲帧:a. 如果有空闲帧,那么就使用它。

b. 如果没有空闲帧,那么就使用页置换算法以选择一个"牺牲"帧(victim frame) 。

c. 将"牺牲"帧的内容写到磁盘上,改变页表和帧表。

(3) 将所需页读入(新)空闲帧,改变页表和帧表。

(4) 重启用户进程。

图6.9页置换注意,如果没有帧空闲,那么需要进行两次页传输(一个换出,一个换入)。

这种情况实际上把缺页处理时间加倍了,且也相应增加了有效访问时间。

上述过程可以通过使用修改位(modify bit)或脏位(dirty bit)以降低部分页置换的开销。

每页或帧可以有一个修改位,通过硬件与之相关联。

每当页内的任何字或字节被写入时,硬件就会设置该页的修改位以表示该页己修改。

如果修改位己设置,那么就可以知道自从磁盘读入后该页已发生了修改。

在这种情况下,如果该页被选择为替换页,就必须要把该页写到磁盘上去。

然而,如果修改位没有设置,那么也就知道自从磁盘读入后该页并没有发生修改。

因此,磁盘上页的副本的内容没有必要(例如用其他页)重写,因此就避免了将内存页写回磁盘上:它已经在那里了。

这种技术也适用于只读页(例如,二进制代码的页)。

这种页不能被修改。

因此,如需要,可以放弃这些页。

这种方案可显著地降低用于处理缺页所需要的时间,因为如果页没有修改它,可以降低一半的I/O时间。

页置换是按需调页的基础。

它分开了逻辑内存与物理内存。

采用这种机制,小的物理内存能为程序员提供巨大的虚拟内存。

对于非按需调页,用户地址被映射到物理地址,所以这两地址可以不同。

然而,所有进程的页必须在物理内存中。

对于按需调页,逻辑地址空间的大小不再受物理内存所限制。

例如一个具有 20 页的用户进程,可通过按需调页先用 10 个帧来执行它,如果有必要可以用置换算法来查找空闲帧。

如果已修改的页需要被置换,那么其内容会复制到磁盘上。

后来对该页的引用会产生缺页。

这时,该页可以再调回内存,这时有可能会置换进程的其他页。

按需调页需要实现两个重要的算法,即帧分配算法(frame-allocation algorithm) 和页置换算法(page-replacement algorithm) 。

如果在内存中有多个进程,那么必须决定为每个进程各分配多少帧。

而且,当需要页置换时,必须选择要置换的帧。

因为磁盘 I/O 非常费时,所以设计合适的算法对系统性能起到至关重要的作用。

即使请求页面调度方面的很小改进也会对系统性能产生显著的改善。

现有的系统有许多不同的页置换算法。

每个操作系统可能都有其自己的置换算法。

如何选择一个置换算法呢?通常需要一个最小的缺页率的算法。

可以这样来评估一个算法:针对特定内存引用序列,运行某个置换算法,井计算出缺页的数量。

内存的引用序列称为引用串(reference string) 。

可以人工地生成引用串(例如,通过随机数生成器),或可跟踪一个给定系统并记录每个内存引用的地址。

后一方法会产生大量数据(以每秒数百万个地址的速度)。

为了降低数据量,可利用以下两个事实。

第一,对给定页大小(页大小通常由硬件或系统来决定),只需要考虑其页码,而不需要完整地址。

第二,如果有一个对页 p 的引用,那么任何紧跟着的对页p的引用决不会产生缺页。

页p在第一次引用时己在内存中,任何紧跟着的引用不会出错。

例如,如果跟踪一个特定进程,那么可记录如下地址顺序:0100, 0432, 0101, 0612, 0102, 0103, 0104, 0611, 0120如果页大小为100B,那么就得到如下引用串:1, 4, 1, 6, 1, 6, 1针对某一特定引用串和页置换算法,为了确定缺页的数量,还需要知道可用帧的数量。

显然,随着可用帧数量的增加,缺页的数量会相应地减少。

例如,对于上面的引用串,如果有3个或更多的帧,那么只有3个缺页,对每个页的首次引用会产生一个缺页。

另一方面,如果只有一个可用帧,那么每个引用都要产生置换,共产生11个缺页。

通常,随着帧数量的增加,缺页数量会降低至最小值,如图6.10。

当然,增加物理内存就会增加帧的数量。

图6.10 缺页和帧数量关系图3. FIFO算法为了讨论页置换算法,将采用如下引用串:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1而可用帧的数量为3。

最简单的页置换算法是FIFO算法。

FIFO页置换算法为每个页记录着该页调入内存的时间。

当必须置换一页时,将选择最旧的页。

注意并不需要记录调入一页的确切时间。

可以创建一个FIFO 队列来管理内存中的所有页。

队列中的首页将被置换。

当需要调入页时,将它加到队列的尾部。

对于前面的样例引用串,3个帧开始为空。

开始的3个引用(7, 0, 1)会引起缺页,将调入这些空帧中。

下一个引用(2)置换7,这是因为页7最先调入。

由于0是下一个引用,但已在内存中,所以对该引用不会出现缺页。

由于页O是现在位于内存中的最先被调入的页,对3的首次引用导致页0被替代。

由于这一替代,下一个对0的引用会产生缺页,页l被页0所替代。

该进程按图6.11所示的方式继续进行,每次有缺页时,都显示哪些页在3个帧中。

总共有15次缺页。

图6.10 FIFO页置换算法FIFO页置换算法容易理解和实现。

但是,其性能并不总是很好。

所替代的页可能是很久以前使用的、现已不再使用的初始化模块。

另一方面,所替代的页可能包含一个以前初始化的并且不断使用的常用变量。

注意,即使选择替代一个活动页,仍然会正常工作。

当换出一个活动页以调入一个新页时,一个缺页几乎马上会要求换回活动页。

这样某个页会被替代以将活动页调入内存。

因此,一个不好的替代选择增加了缺页率,且减慢了进程执行,但是并不会造成不正确执行。

为了说明与FIFO页置换算法相关可能问题,考虑如下引用串:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5对于可用帧的数量为3和4的情况,分别统计缺页次数,如图6.11。

图6.11 帧的数量为3和4时的缺页率统计注意到4帧的缺页数比3帧的还要大。

这种最为令人难以置信的结果称为Belady异常(Belady's anomaly):对有的页置换算法,缺页率可能会随着所分配的帧数的增加而增加,而原期望为进程增加内存会改善其性能(如图6.12)。

在早期研究中,研究人员注意到这种推测并不总是正确的。

因此,发现了Belady异常。

图6.12 一个引用串的FIFO置换的缺页数曲线4. 最优页置换算法Belady异常发现的结果之一是对最优页置换算法(optimal page-replacement algorithm)的搜索。

最优页置换算法是所有算法中产生的缺页率最低的,且绝没有Belady 异常的问题。

这种算法确实存在,它被称为OPT或MIN。

最优页置换算法选择“未来不再使用的”或“在离当前最远位置上出现的”页被置换。

使用这种页置换算法确保对于给定数量的帧会产生最低可能的缺页率。

例如,针对前面的引用串样例,最优置换算法会产生9个缺页,如图6.13所示。

头3个引用会产生缺页以填满空闲帧。

对页2的引用会置换页7,这是因为页7直到第18次引用时才使用,而页0在第5次引用时使用,页l在第14次引用时使用o。

对页3的引用,会置换页1,因为页l是位于内存中的3个页中最迟引用的页。

有9个缺页的最优页置换算法要好于有15个缺页的FIFO算法(如果忽视头3个所有算法均会有的缺页,那么最优置换要比FIFO置换好一倍)。

事实上,没有置换算法能只用3个帧且少于9个缺页就能处理该引用串。

图6.13 最优置换算法然而,最优置换算法难以实现,因为需要引用串的未来知识,但这是不可能预测的。

因此,最优算法主要用于比较研究。

例如,如果知道一个算法不是最优,但是与最优相比最坏不差于12.3%,平均不差于4.7%,那么也是很有用的。

5. LRU算法如果最优算法不可行,那么最优算法的近似算法或许成为可能。

FIFO和OPT算法(而不是向后看或向前看)的关键区别在于,FIFO算法使用的是页调入内存的时间,OPT算法使用的是页将来使用的时间。

如果使用离过去最近作为不远将来的近似,那么可置换最长时间没有使用的页(见图6.14),这种方法称为最近最少使用算法(least-recently-used algorithm,LRU)。

图6.14 LRU 页置换算法对引用串样例,采用LRU置换的结果如图6.14所示。

相关文档
最新文档