操作系统--存储管理4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统--存储管理4 -----页⾯置换算法------
1.概念:当出现缺页异常的时候,并且内存中的空闲页⾯也⽤完,
此时必须把进⾏外存与内存的⼀个页⾯置换。
页⾯置换算法的功能:选择合适的页⾯进⾏置换。
2.置换算法追求的⽬标
* 尽可能减少页⾯置换的次数
* 将未来不⽤/短时间内不使⽤的页⾯换出。
注意:置换算法要考虑的是整个内存中所有进程执⾏的性能-并不只是某个进程
3.页⾯锁定:内存中不能被置换的页⾯
* 描述必须常驻内存的逻辑页⾯
* 操作系统内核页⾯
* 要求响应速度的代码和数据
* 页表中的锁定标志位
4.置换算法的评价⽅法
记录进程访问内存页⾯的轨迹,模拟置换算法,记录缺页次数
5.页⾯置换算法的分类
局部置换算法:每个进程分配的页⾯个数确定,置换只会发⽣在⾃⼰的所属页⾯
全局置换算法:置换页⾯是所有可能被置换的页⾯
6.局部置换算法--进程分配的页⾯数固定
最优算法:预测未来最长时间不会使⽤的页⾯--看的是后⾯的访问情况
OPT特点:缺页最少,但是是理想情况,实际系统⽆法预测未来的访问序列
可以作为其他置换算法的评价标准
先进先出:按照时间顺序置换,但是这个并不能保证是和程序的访问特性⼀致
其实根据的是队列的特性--时间。
置换在内存中驻留时间最长的
FIFO实现:维护⼀个链表:链头放时间最长,刚进来的页⾯放在链尾
先进先出特点:实现简单;性能较差;增加进程页⾯个数,缺页率不⼀定会减少
(Belady现象)很少会单独使⽤该算法
最近最久未⽤算法:统计过去的访问特征,预测未来访问情况--算法过于复杂
OPT的近似。
选择最近最久未访问的页⾯被置换
(LRU):依据最近最久没访问的页⾯在未来⼀段时间也不会访问
记录每个页⾯上次访问的时间,到现在的时间差
最⼤的⼀个页⾯被置换出来。
LRU实现:1.系统维护⼀个按照最近⼀次访问时间顺序的页⾯链表;
链头是刚刚访问的页⾯,链尾巴是最近未访问的;
访问时候将刚访问的页⾯置于链头,缺页置换链尾的页⾯。
2.维护⼀个活动页⾯栈
访问页⾯时候压栈顶并将相同的页⾯删除
缺页时候置换栈底的页⾯
LRU实现过程:开销⽐较⼤
时钟算法Clock:对LRU近似+FIFO综合;仅对页⾯访问情况进⾏⼤致的统计
仅仅记录页⾯是否被访问;没访问的页⾯按照进来的先后
顺序进⾏置换出去。
Clock数据结构:在页表项中增加访问位;把页⾯组织成环形链表
指针指向最先调⼊的页表
算法实现:页⾯装⼊的时候:访问位0;页⾯访问的时候,访问位1;
缺页时候指针从当前位置顺序查找环形链表
访问位位0,就置换该页⾯,新放⼊页⾯为1
访问位为1;则访问位置0;并移动到下⼀个页⾯直到找到
访问位为0可以被置换的页⾯。
特点:是在LRU和FIFO中做折中
改进的Clock: 减⼩修改页⾯的处理开销:对于修改的页⾯不进⾏替换
在页表项⽬:定义⼀个修改位;修改过1;未修改就0
改进的Clock思路:在访问页⾯的时候进⾏相应的修改
缺页,修改页⾯标志位,以跳过有修改的页⾯
对于修改过的页⾯写回操作会被统⼀操作
最不常⽤算法IFU:对LRU近似;缺页时候,置换的是最少次数访问的页⾯实现:为每个页⾯设置计数,缺页时候,置换出计数⼩的
特点:算法开销⼤;开始频繁使⽤的页⾯,但是以后不使⽤就
难以被置换出去,通过定期对这些页⾯的计数减⼩。
、
7.局部置换算法的特征
1.belady现象:分配给进程页⾯数增加,可能就出现缺页次数增加
产⽣的原因:FIFO算法的置换特征与进程访问的动态特征⽭盾
被置换出去的页⾯可能进程下次还会要访问
产⽣belady的算法:FIFO
2.LRU,FIFO,CLOCK⽐较
LRU算法性能好,但是系统开销⼤(动态调整页⾯的顺序)
FIFO系统开销⼩,但是会产⽣Belady现象(不进⾏动态调整)
CLOCK是它们的折中;在访问的过程中通过标准描述动态的关系
8.全局置换算法
局部置换算法并没有考虑到进程的访问差异
思路:为进程分配可变数⽬的物理页⾯
在不同阶段为进程分配不同数⽬的物理页⾯
算法:如何确定给进程分配多少页⾯
进程个数与CPU利⽤率存在⼀个关系:前边是正⽐,但是存在极限限制
引⼊⼯作集:⼀个进程当前正在使⽤的逻辑页⾯的集合。
w(t,V)
w(t,V):指的是当前时间之前的时间很短,访问页⾯的集合;⼯作集⼤⼩可变⼯作集变化规律:不同的阶段⼯作集⼤⼩不同
常驻集:在当前时刻,进程实际驻留内存的页⾯集合。
⼯作集与常驻集的关系:
⼯作集是进程运⾏过程的固有特性
常驻集是取决于系统分配给进程的物理页⾯和页⾯置换算法
常驻集包含于⼯作集:缺页少
⼯作集发在剧烈变化,缺页多
进程的常驻集⼤⼩达到⼀定数⽬;缺页率不会明显下降
⼯作集算法:可以理解为最优算法在全局置换的体现
思路:换出不在⼯作集中的页⾯
实现:访问链表:维护窗⼝内的访存页⾯链表
访存时候换出不在⼯作集中的;更新链表
缺页时候,换⼊,更新链表
缺页率置换算法:缺页率定义:两次缺页时间间隔的倒数
影响缺页率原因:页⾯置换算法
分配给进程的页⾯数⽬
页⾯⼤⼩
程序的编写⽅法
缺页率置换算法:访存的时候设置标志
缺页的时候计算时间间隔;>T置换未被引⽤<=T加⼊⼯作集
抖动和负载控制
抖动:进程拥有的物理页⾯过少,不能包含⼯作集
造成⼤量缺页,频繁置换
进程运⾏速度变慢
产⽣抖动原因:内存中的进程数,每个进程获取的页⾯个数
操作系统需要在并发和缺页率之间做折中
负载控制:通过控制并发进程数来进⾏系统的负载控制。