`

【转】RAND算法,FIFO算法,LFU算法,LRU算法,OPT算法

    博客分类:
  • java
 
阅读更多

http://hi.baidu.com/ilovehaley/blog/item/c6d850805a0c2fdd9123d981.html

 

在虚拟存储器中,当发生页面失效时,需要从磁盘存储器中调入一页(或一段)到主存储器中。在段式和段页式虚拟存储器中,由于多用户虚页数比主存储器的实页数要多得多。在段式虚拟存储器中,虚存空间中能容纳的程序段数要比主存空间中能存放的相同长度的程序段数多得多。因此,必然会出现当主存中所有页面都已经被占用,或者所有主存空间都已经被占用,而又要从磁盘存储器中调入新页的情况。这时,必须从主存储器中淘汰掉一个不常用的页面,以便腾出主存空间来存放新调入的页面。那么,按照什么样的规则替换主存储器中的页面呢?这就是页面替换算法要解决的问题。
  以下,为了叙述方便,主要介绍页式和段页式虚拟存储器中的页面替换算法及其实现方法,在这两种虚拟存储器中都是以页面为单位进行调度的。而段式虚拟存储器是以程序段为单位进行调度的,但是它所采用的替换算法及算法的实现方法都是相同的。
  评价一个页面替换算法好坏的标准主要有两个,一是命中率要高,二是算法要容易实现。要提高一个页面替换算法的命中率,首先要使这种算法能正确反映程序的局部性,其次是这种算法要能够充分利用主存中页面调度情况的历史信息,或者能够预测主存中将要发生的页面调度情况。
  页面替换算法主要用于如下几个地方:
  (1) 虚拟存储器中,主存页面(或程序段)的替换。
  (2) Cache中的块替换。
  (3) 虚拟存储器的快慢表中,快表的替换。
  (4) 虚拟存储器中,用户基地址寄存器的替换。 
  在虚拟存储器中常用的页面替换算法有如下几种:
  (1) 随机算法,即RAND算法(Random algorithm)。利用软件或硬件的随机数发生器来确定主存储器中被替换的页面。这种算法最简单,而且容易实现。但是,这种算法完全没有利用主存储器中页面调度情况的历史信息,也没有反映程序的局部性,所以命中率比较低。
  (2) 先进先出算法,即FIFO算法(First-In First-Out algorithm)。这种算法选择最先调入主存储器的页面作为被替换的页面。它的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,没有反映程序的局部性。因为最先调入主存的页面,很可能也是经常要使用的页面。
  (3) 近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。这种算法选择近期最少访问的页面作为被替换的页面。显然,这是一种非常合理的算法,因为到目前为止最少使用的页面,很可能也是将来最少访问的页面。该算法既充分利用了主存中页面调度情况的历史信息,又正确反映了程序的局部性。但是,这种算法实现起来非常困难,它要为每个页面设置一个很长的计数器,并且要选择一个固定的时钟为每个计数器定时计数。在选择被替换页面时,要从所有计数器中找出一个计数值最大的计数器。因此,通常采用如下一种相对比较简单的方法。 
  (4) 最久没有使用算法,即LRU算法(Least Recently Used algorithm)。这种算法把近期最久没有被访问过的页面作为被替换的页面。它把LFU算法中要记录数量上的"多"与"少"简化成判断"有"与"无",因此,实现起来比较容易。
  (5) 最优替换算法,即OPT算法(OPTimal replacement algorithm)。上面介绍的几种页面替换算法主要是以主存储器中页面调度情况的历史信息为依据的,它假设将来主存储器中的页面调度情况与过去一段时间内主存储器中的页面调度情况是相同的。显然,这种假设不总是正确的。最好的算法应该是选择将来最久不被访问的页面作为被替换的页面,这种替换算法的命中率一定是最高的,它就是最优替换算法。
  要实现OPT算法,唯一的办法是让程序先执行一遍,记录下实际的页地址流情况。根据这个页地址流才能找出当前要被替换的页面。显然,这样做是不现实的。因此,OPT算法只是一种理想化的算法,然而,它也是一种很有用的算法。实际上,经常把这种算法用来作为评价其它页面替换算法好坏的标准。在其它条件相同的情况下,哪一种页面替换算法的命中率与OPT算法最接近,那么,它就是一种比较好的页面替换算法。

分享到:
评论

相关推荐

    操作系统存储管理页面置换算法(OPT FIFO LRU LFU)完整代码

    共四种:FIFO\LRU\LFU\OPT 。在VC环境下运行完全成功。 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储...

    操作系统课设 分页式存储管理(内含OPT,FIFO,LRU,LFU四种算法,用到了线程)

    在这个课设中,学生将深入理解并实践如何实现分页式内存管理,同时涵盖了四种不同的页面替换算法:最优淘汰法(OPT)、先进先出法(FIFO)、最近最久未使用法(LRU)以及最不常用法(LFU)。这些算法都是为了优化...

    操作系统页面置换算法实现,fifo、lfu、lru、opt,界面由MFC实现

    本项目实现了一个模拟器,用于演示和比较四种不同的页面置换算法:FIFO(先进先出)、LFU(最不常用)、LRU(最近最少使用)以及OPT(最佳页面置换)。界面使用Microsoft Foundation Class (MFC)库来创建,使得用户...

    JAVA实现FIFO、LRU、OPT页面置换算法,有界面

    本项目涉及到了三种经典的页面置换算法:FIFO(先进先出)、LRU(最近最久未使用)以及OPT(最佳页面置换)。这些算法在JAVA环境下实现,并且具备用户界面,便于理解和学习。 1. FIFO(先进先出)页面置换算法: ...

    C#实现页面置换算法FIFO,LRU,LFU,OPT

    (1)输入一个逻辑页面访问序列和随机产生逻辑页面访问序列,由四个线程同时完成每个算法; (2)能够设定驻留内存页面的个数、内存的存取时间、缺页中断的时间、快表的时间,并可以暂停和继续系统的执行; (3)...

    页面置换算法模拟(FIFO+OPT+LFU+LRU+CLOCK)

    在本次讨论课中,我们深入探讨了五种常见的页面置换算法:OPT、CLOCK、FIFO、LRU和LFU。OPT算法理论上能达到最低的缺页率。FIFO算法实现简单,开销小,但可能导致Belady现象。LRU算法基于页面的访问历史,认为最近...

    编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法

    根据给定文件的信息,我们可以详细地探讨一下在虚拟存储管理中如何实现三种主要的页面置换算法:Optimal (OPT), First-In First-Out (FIFO), 和 Least Recently Used (LRU)。此外,我们还会简要提及Clock置换算法,...

    操作系统页面置换LRU,FIFO,OPT算法实现代码(C#)

    本项目提供了LRU(最近最少使用)、FIFO(先进先出)、OPT(最佳页面替换)以及LFU(最不经常使用)四种算法的C#实现,同时考虑了TLB(翻译后缓冲区)的存在,使得模拟更加接近实际操作系统的运行情况。 **LRU...

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

    本课程设计项目专注于两种常见的页面置换算法:FIFO(先进先出)和LRU(最近最少使用)。这两种算法都是为了在主存空间不足时决定哪些页面应该被换出到磁盘,以便腾出空间加载新的页面。 **FIFO页面置换算法**: ...

    页面置换算法OPT+FIFO+LRU+clock

    C语言 页面置换算法 OPT FIFO LRU clock

    操作系统页面置换LRU,FIFO,OPT算法实现代码

    本主题主要围绕LRU(最近最少使用)、FIFO(先进先出)和OPT(最佳页面置换)三种算法进行深入讲解。 1. LRU(最近最少使用)算法: LRU算法基于一个假设:最近被访问的页面在未来最有可能再次被访问。它的核心思想...

    页面置换算法 FIFO NUR LRU LFU.pdf

    接下来的第四章详细设计,分别对每个算法的实现进行了深入探讨,包括main函数作为主程序入口,FIFO、LRU、NUR(可能是LRU的误写,实际可能是指其他算法如NRU或OPT)和LFU的独立函数,以及initialize函数用于初始化...

    页面置换算法 FIFO,LRU,OPT

    在实际操作中,还发展出了一些介于LRU和FIFO之间的算法,如LFU(最不经常使用)和NRU(非最近使用)等,它们试图在性能和复杂度之间找到平衡。 通过编程实现这些算法,例如在给定的"j.cpp"文件中,我们可以模拟请求...

    OPT_FIFO_LFU_LRU_置换页算法java可视化界面

    本项目"OPT_FIFO_LFU_LRU_置换页算法java可视化界面"提供了一个直观的Java应用程序,用于演示和比较几种常见的页面替换算法:Optimal(最优)、FIFO(先进先出)、LFU(最不经常使用)和LRU(最近最少使用)。...

    yuandaima.rar_LFU_LFU NUR _OPT_OPT FIFO LRU LFU

    设计一个虚拟存储区和内存工作区 , 并使用下述算法计算访问命中率。...(1) 先进先出的算法 (FIFO) (2 )最近最少使用算法 (LRU) (3) 最佳淘汰算法 (OPT) (4) 最少访问页面算法 (LFU) (5 )最近最不经常使用算法 (NUR)

    页面置换算法三种(LRU OPT FIFO)

    本篇文章将详细讲解三种常见的页面置换算法:LRU(最近最少使用)、OPT(最佳页面置换)和FIFO(先进先出)。 1. LRU(最近最少使用)算法: LRU算法的基本思想是:如果一个页面最近被访问过,那么它在不久的将来...

    aaa.rar_FIFO LRU OPT_OPT FIFO LRU_OPT_ LRU_ FIFO_java fifo lru_l

    在Java中,虽然不能完全实现OPT,但可以通过近似算法如LFU(Least Frequently Used)来达到类似效果。LFU考虑了元素的访问频率,将访问次数少且较久未访问的元素优先淘汰。 对于Java实现,通常会抽象出一个通用的...

    opt fifo lru.zip_OPT FIFO LRU_opt fifd_opt fifo_操作系统_调页存储管理模拟

    本资料包“opt fifo lru.zip”着重介绍了三种主要的页面替换算法:Optimal(最优)、FIFO(先进先出)和LRU(最近最久未使用)。我们将深入探讨这些算法的工作原理、优缺点以及它们在实际操作中的应用。 1. Optimal...

    suanfa.rar_fifo_页面置换算法 ;LRU ;LFU;OPT

    本文将深入探讨四种页面置换算法:FIFO(先进先出)、LRU(最近最少使用)、LFU(最不经常使用)以及OPT(最佳页面置换)。这些算法都是为了解决内存不足时如何选择将哪个页面移出内存的问题。 首先,我们来理解...

    页面替换算法opt+fifo+lru+clock

    本文将详细探讨四种常见的页面替换算法:OPT(最佳页面替换算法)、FIFO(先进先出页面替换算法)、LRU(最近最少使用页面替换算法)和CLOCK(时钟页面替换算法)。 1. **OPT(最佳页面替换算法)** OPT算法被认为...

Global site tag (gtag.js) - Google Analytics