项目一 内存调度算法模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目一 Linux环境下几种内存调度算法模拟
1.设计原理
在进程运行过程中,若其访问的页面不在内存而需要将其调入,但内存已无空闲空间时,需要从内存中调出(淘汰)一页程序或数据,送入磁盘的对换区。
用来选择淘汰哪一页的算法叫做置换算法,也称为淘汰算法。淘汰算法是否适合某一序列直接影响系统的性能。一个好的置换算法应具有较低的页面置换频率,置换时应将以后不再会访问,或是在较长时间内不再访问的页面淘汰。
(1)先进先出算法(FIFO算法)基本思想
先进先出算法选择在内存中驻留时间最长的页面予以淘汰,即先进入内存的页面先淘汰。
其优点是算法实现简单,只须把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,使该指针总是指向最先进入内存的页面。
缺点是算法与进程的实际运行规律不相适应,因为进程中的某些页面经常被访问,但先进先出置换算法不能保证这些页面不被淘汰。
(2)最近最久未使用算法(LRU算法)基本思想
最近最久未使用算法选择未被访问的页中时间最长的页予以淘汰。
该算法思想中,如果某个页面被访问,则它可能马上还要被访问,即某页面长时间未被访问,则页面在最近一段时间也不会被访问,所以选择未被访问页中时间最长的予以淘汰能降低页面置换频率。
该算法的优点是性能较好,降低置换频率。缺点是实现复杂,需要硬件辅助,增加系统负担。
(3)最近未使用淘汰算法(NUR算法)基本思想
最近未使用淘汰算法淘汰第1个最近未被访问的页(淘汰页表中第一个访问位为0的页)
(4)最不经常使用页面淘汰算法(LFU算法)基本思想
最不经常使用页面淘汰算法,淘汰那些到当前时间为止访问次数最少的页。页表中增加一个访问记数器。
(5)最佳置换算法(OPT算法)基本思想
当要调入一新页而必须淘汰一旧页时,最佳置换算法是所淘汰的页是以后不再使用的,或者是以后相当长的时间内不会使用的。
该算法的优点是保证获得最低的缺页率。
该算法的缺点是无法预知一个进程在内存的若干个页面,哪个在未来最长时间内不再被访问。
(6)页面淘汰算法优劣的衡量标准
操作系统采用请求分页方式管理内存时,可以使用缺页中断率衡量页面淘汰算法的优劣,缺页中断率f’,f’=f/a (a是总的页面访问次数,f是缺页中断次数)。
对于一个给定内存页面数和给定的进程页面访问序列,如果某算法的缺页中断率最小,则该算法对于该页面访问序列而言是最好的。(7)Belady异常现象
缺页中断率还与系统设定的内存页面数有关系,通常情况下,内存页面数越大,缺页中断也越小。但在采用FIFO算法时,有时会出现当内存页面数越大,缺页次数不减少反而增加的现象,称之为Belady异常现象。
(8)抖动
导致系统效率急剧下降的主存与辅存之间的频繁的页面置换现象称为抖动。产生抖动的原因是系统使用的淘汰算法不合理,导致刚被淘汰的页面马上又要被访问的一种频繁的页面置换状态。抖动将造成系统效率下降,在选择页面置换算法时既要考虑尽可能少的缺页率和算法的简单性,同时还要尽量避免抖动的发生。
2.设计步骤和方法
(1)选择其中两种算法的原理进行分析
① FIFO内存调度算法的原理
②(其他任选一个算法)内存调度算法的原理(2)设计两种算法的流程图
①设计FIFO算法的流程图。
②其他任选一个算法设计流程图。
(3)使用Vi编写实现两种算法的程序
①FIFO内存调度算法的代码。
②(其他任选一个算法)内存调度算法的代码。(4)结果分析
①分析设计结果是否达到预期目标。
②针对同一访问序列比较两种算法的缺页率。