在一个请求分页系统中,分别采用 FIFO、LRU和 OPT页面置换算法时,假如一个作业的页面走向为 4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为 3、4时,

页面置换算法

题目:

在一个请求分页系统中,分别采用 FIFO、LRU和 OPT页面置换算法时,假如一个作业的页面走向为 4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为 3、4时,试计算在访问过程中所发生的缺页次数和缺页率,并比较所得结果。


分析思路:

  • 先进先出(FIFO)更新算法:

也称为最早出现的页面更新算法。该算法总是淘汰最先进入内存的页面,即选择在内存中停留时间最长的一页予以淘汰。如果同时有多个页面符合淘汰的条件,则任意选择一个予以淘汰即可。

技巧:谁先连成和题目所给物理块总数,谁先被置换掉

  • 最近最久未使用(LRU)更新算法:

以“最近的过去”作为“不久的将来”的近似,选择最近一段时间内最久没有使用的页面淘汰。
它的实质是:当需要更新一页时,选择在最近一段时间内最久没有被使用的页面予以淘汰

技巧:在内存中没有的页面开始往前看,置换“最前面的“,但不是从一开始的,那样这个算法就没有意义了

  • 最优(OPT)更新算法

该算法所选择的被淘汰页面,将是以后永久不被访问,或者是在未来最长时间内不再被访问的页面。采用最优更新算法通常可以保证获得最低的缺页率。

技巧:往后看,当前未在页面中的页面去置换距离当前需要置换页面"最远"的页面,最后一个不在页面中的置换谁都可以

换句话说,就是当前未在页面中的页,去置换在这个页后面最后才使用到的页

举例,下面例题中M=3时,1不在里面,1要把从1往后面看,最后才能使用到的页2先置换出去

缺页率=缺页次数/总页数

置换率=置换次数/总页数

置换次数=缺页次数-物理块数

注意:这两个率最后一定要写成%的形式,不可以写分数


题解:

当物理块数M=3时,
在这里插入图片描述
FIFO:共发生 9次缺页中断 缺页率=9/12=75%
LRU:共发生 10次缺页中断 缺页率=10/12=83.3%
OPT:共发生 7次缺页中断 缺页率=7/12=58.3%

当物理块数M=4时,
在这里插入图片描述 FIFO:共发生 10次缺页中断 缺页率=10/12=83.3%
LRU:共发生 8次缺页中断 缺页率=8/12=66.7%
OPT:共发生 6次缺页中断 缺页率=6/12=50%
上述结果可以看出,对先进先出算法而言,增加分配给作业的内存块数反而出现缺页次数增加的异常现象。

设计一个虚拟存储区内存工作区,并使用下列算法计算访问命中率. (1) 进先出的算法(FIFO) (2) 最近最少使用的算法(LRU) (3) 最佳淘汰算法(OPT)(4) 最少访问页面算法(LFU) (5) 最近最不经常使用算法(NUR) 命中率=1-页面失效次/页地址流长度 本实验的程序设计基本上按照实验内容进行。即首先用 srand() rand()函定 义产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法 计算出相应的命中率。相关定义如下: 1 据结构 (1)页面类型 typedef struct{ int pn,pfn,counter,time; }pl-type; 其中 pn 为页号,pfn 为面号, counter 为一个周期内访问该页面的次, time 为访问. (2) 页面控制结构 pfc-struct{ int pn,pfn; struct pfc_struct *next;} typedef struct pfc_struct pfc_type; pfc_type pfc_struct[total_vp],*freepf_head,*busypf_head; pfc_type *busypf_tail; 其中 pfc[total_vp]定义用户进程虚页控制结构, *freepf_head 为空页面头的指针, *busypf_head 为忙页面头的指针, *busypf_tail 为忙页面尾的指针. 2.定义 (1)Void initialize( ):初始化函,给每个相关的页面赋值. (2)Void FIFO( ):计算使用 FIFO 算法的命中率. (3)Void LRU( ):计算使用 LRU 算法的命中率. (4)Void OPT( ):计算使用 OPT 算法的命中率. (5)Void LFU( ):计算使用 LFU 算法的命中率. (6)Void NUR( ):计算使用 NUR 算法的命中率. 3.变量定义 (1)int a[total_instruction]: 指令流据组.(2)int page[total_instruction]: 每条指令所属的页号. (3)int offset[total_instruction]: 每页装入 10 条指令后取模运算页号偏移 值. (4)int total_pf: 用户进程的内存页面. (5)int disaffect: 页面失效次.
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值