操作系统之全局页面置换算法
进程对物理页帧的需求可变,系统为程序的不同运行阶段分配不同物理页帧大小
工作集的概念
在当前这个时间段内
一个进程
正在访问的逻辑页面的集合
用函数来表示
W
(
t
1
,
Δ
)
=
{
1
,
2
,
3
,
4
,
5
}
W(t_1, \Delta) = \{1, 2, 3, 4, 5\}
W(t1?,Δ)={1,2,3,4,5}
在t时间之前
常驻集的概念
在当前这个时刻,进程实际驻留内存当中的集合
希望工作集和常驻集重合,可以减少缺页中断的次数
系统需要调整各个程序被分配的页面个数,
全局页面置换算法之工作集页面置换算法
只要页面不在工作集之中就把它替换掉
即使此刻没有缺页发生(没有发生页空间不够的情况),也要把它换出去
这也是与以前的局部页面置换算法的区别所在
全局页面置换算法之缺页率页面置换算法
工作集的窗口要变化
常驻集也要变化
依靠缺页的频率动态调整常驻集的大小
缺页率 = 缺页次数/内存访问次数
影响原因:页面置换算法/ 分配给进程的物理页面数据/ 页面本身的大小/ 程序是否具有局部性
缺页率高增加工作集delta,缺页率低减少工作集delta
各个系统的缺页率应该保持平衡
算法实现
计算缺页中断时间间隔,设置阈值,阈值是固定的
小于等于阈值,证明分配物理页太少,把缺的页添加到工作集中,因此工作集变大,常驻集变大
大于阈值,证明很少发生缺页,把不在这两次缺页中断时间段内的页面换出去
具体实现
运行多个程序要用全局页面置换算法而不是局部页面置换算法
页面抖动问题
常驻集过小会产生很多缺页,需要频繁缺页中断,使进程运行速度很慢,这种状态就是抖动
所以需要合理选择并发的线程的数量
取一个比较适合的分配内存物理块,不要让系统把大量的时间花在物理内存的换进换出
MTBF缺页平均间隔时间 / PFST缺页服务时间
让其比值在1附近
|