页面置换算法

最佳置换算法OPT

原理:每次选择淘汰的页面将是以后永远不使用最长时间内不再被访问的页面,可以保证最低的缺页率

例一:系统给一个进程分配三个内存块,页面引用串[7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1]

解析:

访问页面7012030423
内存块1777222
内存块200004
内存块31133
是否缺页
访问页面0321201701
内存块1227
内存块2000
内存块3311
是否缺页

如何判断置换哪个页面?比如表一中第四列数据,前面已经占了三个内存块,当页面2需要进入时,向后查询7,0,1最久使用(甚至不再使用)的一个,此时为7,所以7换入2

整个过程缺页中断9次,页面置换6次,缺页率:9/20=45%

因此缺页中断不一定会引起页面置换,只有当内存块满了才需要页面置换
最佳置换算法实际中是无法实现的,因为操作系统无法预判进程访问页面的序列

先进先出算法FIFO

原理:每次淘汰先进入的页面

例二:系统分配四个内存块,页面引用串为[3,2,1,0,3,2,4,3,2,1,0,4]

访问页面321032432104
内存块13333444400
内存块2222233334
内存块311112222
内存块30000111
是否缺页

如何判断置换哪个页面:对已进入的页面建立队列
3 → 2 → 1 → 0 (→ 3 已存在)(→ 2 已存在)→ 4
超过4块内存,所以淘汰队头3。则:
2 → 1 → 0 → 4
以此类推

整个过程缺页10次,页面置换6次,缺页率10/12

算法性能差

  • Belady异常:当为进程分配的物理块数增大时,缺页次数不减反增的异常现象(只有FIFO算法会产生Belady现象)(可以自己实现下只有3个内存块的缺页情况)

最近最久未使用算法LRU

在这里插入图片描述
第五次缺页需要换入页面3,向前查看(8,1,2,7),7是最近最久没使用的所以,7→3

实现需要硬件支持,开销大

时钟置换算法/最近未用算法NRU

在这里插入图片描述

  • 改进算法增加了一个修饰位

在这里插入图片描述

设计一个虚拟存储区和内存工作区,并使用下列算法计算访问命中率. (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: 页面失效次数.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值