【清华大学】操作系统 陈渝——Part6 局部页面置换算法

  • 6.8 局部页面替换算法的问题,工作集模型
    • 局部页面替换算法的问题
    • 工作集模型
  • 6.9 全局页面置换算法
    • 1. 工作集页置换算法
    • 2. 可变分配策略
      • 缺页率
  • 6.10 抖动问题(thrashing)

6.8 局部页面替换算法的问题,工作集模型

局部页面替换算法的问题

OPT,FIFIO,LRU,Clock,LFU 算法都是针对一个程序进程而言的,但操作系统支持多个程序同时运行,如果每个程序采取固定的局部页面置换算法,会带来一些问题。

如下:
采取FIFO算法时,分配3个物理页帧会产生 9 此缺页中断,分配4个物理页帧,会产生 1 次中断,可以看出,物理页帧的大小会对页面置换算法效果产生很大的影响。
如果对一个程序分配一个固定大小的物理页帧制定一个算法,限制了程序产生缺页的特点。
因为程序是动态运行的,它对物理页帧的需求是动态变化的。OPT,FIFIO,LRU,Clock,LFU 算法的研究都有一个假定,即分配给程序的物理空间是固定的,如果内存中只跑了一个程序,那么可以将所有物理内存空间分配给它。
因此,根据程序运行的不同阶段,动态分配物理页帧,调整物理页帧大小,这是全局页面算法考虑的问题。

工作集模型

OPT,FIFIO,LRU,Clock,LFU 算法都是基于一个前提:即程序的局部性原理。但此原理是否成立?

  • 如果局部性原理不成立,那么各项页面置换算法就没有什么区别,也没有什么意义。例如:假设进程对逻辑页面的访问顺序是1,2,3,4,5,6,7,8,9…即单调递增,那么在物理页面有限的前提下,不愿采用何种置换算法,每次的页面访问都必然导致缺页中断。

  • 如果局部性原理是成立的,那么如何证明它的存在,如何来对它进行定量地分析?这就是工作集模型。

  • 工作集:一个进程当前正在使用的逻辑页面集合,可以用一个二元函数 W(t, Δ \Delta Δ)来表示:
    t :当前执行时刻;
    Δ \Delta Δ:工作集窗口(working-set window),即一个定长页面访问的时间窗口,t + Δ \Delta Δ 形成一个时间段;
    W(t, Δ \Delta Δ):在当前时刻 t 之前的 △ \bigtriangleup △ 时间窗口当中的所有逻辑页面所组成的集合(随着 t 的变化,该集合也在不断地变化);
    | W(t, Δ \Delta Δ) |::工作集的大小,即页面数目。
    实例:

    时刻t1 和 时刻t2 访问特点不一样,表现出了程序在运行的不同阶段对内存访问的特点。t2 的工作集对内存的访问具有很好的局部性,重复的对页面3和页面4访问,t1 的工作集对内存的访问重复性没有那么强烈,但是在某个短暂的时间内,重复的访问了4次页面7,因此具有一定的局部性,整体的局部性不如t2 的工作集效果好。

  • 工作集大小的变化:进程开始执行后,在最初的时间段内,有可能访问的新的页不具有一定的局部性,但随着访问新页面,逐步建立比较稳定的工作集。当访问到局部性比较好的区域,即内存访问的局部性区域的位置大致稳定时,工作集大小也大致稳定;但由于程序本身的特点,局部性区域的位置改变时,工作集快速扩张和收缩过度到下一个稳定值。

    随着程序的执行过程,工作集大小的变化会出现一定的特征,有波峰,有波谷,有平稳的情况,根据这样的特征,来建立基于全局的多个程序的有效页面置换算法。

常驻集:是指在当前时刻,进程实际驻留在内存当中的页面集合。

  • 工作集是进程在运行中对页面访问的固有的性质,而常驻集取决于操作系统分配给进程的物理页面数目,以及所采用的页面置换算法,到底要把那些页放到内存中;
  • 如果一个进程的整个工作集都在内存当中,即常驻集 ⊇ \supseteq ⊇ ( ) 工作集,那么进程将很顺利地运行,而不会造成太多地缺页中断(直到工作集发生剧烈变动,从而过渡到另一个状态);
  • 当进程常驻集的大小达到某个数目之后,再给它分配更多的物理页面,缺页率也不会明显下降,这时候需要一种动态调整,把多余的物理页给其他运行的程序。这样使得整体上,不同的程序总体缺页次数比较少。如果说根据程序的运行特定,给不同的应用程序不同的常驻集,使得整体的缺页中断次数减少,那么整体的性能就将得到提高。采取局部页面算法,不能整体的解决问题,为此需要考虑全局页面算法来解决这个问题。

6.9 全局页面置换算法

1. 工作集页置换算法

工作集窗口记录了当前时间在过去的时间段内工作集的大小,在窗口中表示的是当前时间在过去的时间段内所访问过的逻辑页。

基本思路
如果要替换某个页,要替换不在工作集的中的页,随着程序的运行,工作窗口随着时间的改变在平移,平移的过程中,如果哪个页不在窗口内,这个页也会被丢掉,不是等到缺页才开始丢页,只要随着程序的运行,有哪一页不属于这个窗口中,就把该页丢掉。

实例


结论:一共产生5次中断。和局部页面替换算法的区别是,全局页面替换算法当前在物理内存中存放哪些页,取决于是否在工作集窗口之内。如果窗口设置为4,所有老的那些页面(当前时刻-上次访问时刻差值,结果超出4的)都会被换出去,而不是当缺页时才执行换出,这样可以保证物理内存中时刻有足够多的页面供给其他程序使用,从而在系统层面确保缺页层数降低。

2. 可变分配策略

常驻集大小可变。例如:每个进程在刚开始运行的时候,先根据程序大小给它分配一定数目的物理页面,然后在进程运行过程中,再动态地调整常驻集地大小。

  • 可采用全局页面置换的方式,当发生一个缺页中断时,被置换的页面可以是在其它进程当中,各个并发进程竞争地使用物理页面。
  • 优缺点:性能较好,但增加了系统开销。
  • 具体实现:可以使用缺页率算法(PFF ,page fault frequence) 来动态调整常驻集地大小。

缺页率

缺页率表示 “缺页次数 / 内存访问次数” (比率)或 “缺页的平均时间间隔的倒数”。影响缺页率的因素:

  • 页面置换算法
  • 分配给进程的物理页面数目
  • 页面本身的大小
  • 程序的编写方法

和全局页面置换算法的 Δ \Delta Δ 是一个固定值相比,可变分配策略算法需要调整 Δ \Delta Δ ,一个交替的工作集计算明确的试图最小化页缺失

  • 当缺页率过高的时候-增加工作集
  • 当缺页率过低的时候-减少工作集

实例:


全局页面置换 和 可变分配策略算法 比较:
对页面调整的时机不一样:全局页面置换算法是在每一次访问时判断需要把页换入换出,而可变分配策略只是在产生缺页中断的时候才会决定把哪些页换入换出。

这两种算法和之前的局部页面置换算法都不一样,是根据工作集和缺页率的大小动态调整整个内存中需要换入换出的页面,这使得经常访问的页可以驻留在内存中,对操作系统来说,当有多个程序运行,全局页面置换算法它的效果好于局部页面置换算法。

6.10 抖动问题(thrashing)

  • 抖动:如果分配给一个进程的物理页面太少,不能包含整个的工作集,即常驻集 ⊂ \subset ⊂ 工作集,那么进程将会造成很多的缺页中断,需要频繁地在内存与外存之间替换页面,从而使进程地运行速度变得很慢,这种状态称之为"抖动"。
  • 产生抖动的原因随着驻留内存的进程数目增加,分配给每个进程的物理页面不断减小,缺页率不断上升。所以操作系统要选择一个适当的进程数目和进程需要的帧数,以便在并发水平和缺页率之间达到一个平衡
  • 抖动问题可能会被本地的页面置换改善
    更好的规则为加载控制:调整MPL 所以:Better criteria for load control:Adjust MPL so thath:

    • 平均缺失时间 mean time between page faults (MTBF) = 页缺失服务时间 page fault service (PFST)
    • Σ W S i = 内 存 的 大 小 \Sigma WSi = 内存的大小 ΣWSi=内存的大小

通常,随着程序的增多,程序运行速度变慢,因为缺页中断发生了,大量的换入换出操作使得CPU利用率减小。

我们想要让取消维持在最高峰,使得运行的程序数量可以多,系统利用率也高。因此想要找到一个平衡点,两个缺页产生的平均时间和完成一次中断服务的时间尽量相等。MTBF 和 PFST比值降低。

【清华大学】操作系统 陈渝——Part6 全局页面置换算法相关推荐

  1. 操作系统中的全局页面置换算法

    1 全局页面置换算法 以上页面置换算法都是针对单一的应用程序的页面置换算法, 且有一个前提, 就是给单一应用程序分配的物理页帧数量是一定的. 现实中, 给一个应用程序分配的物理页帧数, 该程序产生的缺 ...

  2. 操作系统课设之虚拟内存页面置换算法的模拟与实现

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  3. 操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题

    程序在运行过程中具有阶段性,可能刚开始的时候需要访问的内存很多,之后访问的内存可能会很少.如果操作系统给每个程序分配固定的物理页那么就显得不灵活,有没有办法动态地给程序分配页帧呢,在需要访问很多内存的 ...

  4. 南京邮电大学操作系统实验三:虚拟内存页面置换算法

    实验内容 使用数组存储一组页面请求,页面请求的数量要50个以上,访问的页面号可以用随机数生成(0~20): (1)设置为分配给进程的页框数(假定是5),使用LRU算法,模拟完成全部的页面请求,最后输出 ...

  5. 2020-11-22(操作系统——页面置换算法)

    当内存中的页面满了之后,需要的数据又在磁盘虚拟内存中,可以使用页面置换算法将需要的页置换到物理内存中.下面先介绍几种局部页面置换算法,其针对一个进程而言的页面置换. 一.局部页面置换算法 1.最优页面 ...

  6. 清华向勇《操作系统 》学习笔记6:页面置换算法

    文章目录 6.1 页面置换算法概念 6.2 局部页面置换算法 6.2.1 最优置换算法(OPT) 6.2.2 先进先出算法(FIFO) 6.2.3 最近最久未使用算法(LRU) 6.2.4 时钟算法( ...

  7. 8虚拟内存9页面置换算法

    8.1虚拟存储的需求背景 虚拟内存是非连续内存分配的一个延续,非连续内存分配在存储空间内可以连续也可以不连续.虚拟内存是在非连续内存分配基础上,可以把一部分内容放到外存中去,让应用程序有更大的空间使用 ...

  8. 一文看懂页面置换算法

    页面置换算法分为两类 1.局部页面置换算法 最优页面置换算法(OPT.optimal) 先进先出算法(FIFO) 最近最久未使用算法(LRU,Least Recently Used) 时钟页面置换算法 ...

  9. 【清华大学】操作系统 陈渝 Part3 ——物理内存管理 之 连续内存分配

    [清华大学]操作系统 陈渝 Part3 --物理内存管理 之 连续内存分配 3.1计算机体系结构及内存分层 计算机体系机构 内存体系层次 管理内存方法 3.2地址空间 & 地址生成 地址空间定 ...

最新文章

  1. spring security 自定义认证登录
  2. 通过解决“构造包含所有给定子串的最短字符串”问题思考算法优化
  3. Kernel tasklet
  4. MySQL同时添加多条记录
  5. 微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据
  6. 机器学习 | 早期停止法原理及Python实现
  7. python数字转字符串固定位数_python-将String转换为64位整数映射字符以自定...
  8. 选课系统类图与数据结构图
  9. 马化腾:如果今天我才创业 会做什么切入中国互联网
  10. MED-V实战之镜像测试,MED-V系列之五
  11. matlab2010激活问题
  12. 吉林全国计算机报名系统入口,http://ncre.jleea.com.cn吉林计算机等级考试报名系统入口...
  13. 在Windows Server 2022系统上安装 Brother MFC-7450打印机驱动
  14. 服务器攻击方式与查看服务器攻击日志的方法
  15. JAVA并发编程(一)上下文切换
  16. 设计模式必备知识点----六大设计原则
  17. 设计模式——单例模式(创建型模式)
  18. Java三大特性/四大特性简单理解
  19. 一 HTML概述,网站首页案例及其知识点
  20. 合伙人股权设计的9点常识

热门文章

  1. so easy!从头教你用mkdocs构建个人博客系统~
  2. SAP ABAP 函数组 SCMS_CONV 介绍:字符串转换
  3. 日本热议“代孕”行为
  4. 【2】MediaPipe面部识别
  5. 小程序源码:全网独家小程序版本独立微信社群人脉系统社群空间站-多玩法安装简单
  6. js事件Event对象(自定义事件对象 CustomEvent)
  7. 多普勒效应的基本原理
  8. VUE中的pug使用
  9. 上传文件到服务器经常连接重置,尝试将文件上传到tmp_name时,“正在加载页面时重置了”服务器的连接重置“...
  10. 手机连接Fiddler