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

工作集模型:工作程序需要有局部性原理(邻近的代码变量分配在相邻的空间,一条指令的一次执行和下次执行都在很短的时间)。工作集是一个进程当前正在使用的逻辑页面集合。可以用 W(t,Δ) 二元式表示t时刻Δ窗口中的页面组成的集合, ,其中t 表示当前执行时刻,而Δ表示工作集窗口,是一个定长的页面访问的时间窗口 。 |W(t,Δ)| 表示工作集大小,页面数量。

常驻集概念:常驻集是工作集的一种,指在当前某个时刻,进程实际驻留在内存当中的页面集合。工作集是需要访问在内存的页面集合。由于在某个时刻需要访问的内存数量有限,所以整个执行过程中常驻集是有最大值的,当操作系统给程序的常驻集太大也可能造成空间上的浪费。

一、工作集的页置换算法

工作集的页置换算法并不是只有发生缺页中断时才把页换出到外存。随着程序在执行,工作集的窗口会跟着挪动,如果页不在工作集窗口中就会把页换出

这种置换算法虽然增加了缺页中断,但是却可以有效地保留最近访问的页,提前换出内存中的物理页,给其他应用程序提供更多的内存空间,达到动态分配内存空间的目的。与此同时,由于大部分写硬盘操作是提前完成的,所以当发生缺页中断时,大多数情况只需要写内存操作就行。

二、缺页率页面置换算法 (PFF)

上述算法的窗口大小是固定的,而在PFF算法中,窗口大小是可以变化的。在每个进程运行开始时,先根据程序大小分配一定数目的物理页面,在运行过程中再根据缺页率来调整窗口大小。缺页率过低说明需要的物理页面足够,需要减小工作集,过低则表示分配的物理页不够需要增大工作集,来进行动态地调整工作集窗口大小。

缺页率 = 缺页次数 /内存访问次数    , 也是 缺页次数关于程序执行时间的导数。

在下例中,Window size 代表缺页中断的时间间隔。

此方法相比工作集算法更灵活,但是实现起来会复杂些。

三、抖动问题

如果操作系统分配给进程的物理页面太少,则不能包含整个工作集,随着驻留内存的进程数目增加,分配给进程的页面数减少,容易发生频繁的缺页中断,这个现象称之为“抖动”,所以操作系统需要选择一个适当的进程数目和进程需要的帧数,以便在并发水平和缺页率中保持一个平衡。 例如当计算机刚开机时,CPU的利用率很高,随着操作系统运行的时间越来越久,进程的数量越来越多,如果缺页率高CPU可能在频繁地做页的换入换出操作,使CPU的系统利用率低,造成在运行的程序效率低。 如何量化都动问题呢?在性能测试中,需要计算 平均的缺页时间,即大概多久会平均产生一次缺页 ,需要计算出缺页时换入换出时间。 当 平均的缺页时间 接近  缺页时换入换出时间 时,CPU能够高效且高并发的为系统所利用。

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

  1. Linux 操作系统原理 — 内存 — 内存分配算法

    目录 文章目录 目录 前文列表 内存碎片 伙伴(Buddy)分配算法 Slab 算法 虚拟内存的分配 内核态内存分配 vmalloc 函数 kmalloc 用户态内存分配 malloc 申请内存 用户 ...

  2. 常见页面置换算法模拟实验实验报告_广州置换

    广州置换,地龙服务惠万家,自公司成立以来,培养了一大批从事市政管道工作行业的技术人才;特别是在管道非开挖领域,公司董事长陈小波长期置身于作业现场一线,靠着不断创新的精神和坚持不懈的良好的工作作风,已经 ...

  3. 实验三银行家算法linux,操作系统原理与linux_银行家算法实验报告.doc

    . . . PAGE 成 绩 评 阅 人 评阅日期 计算机科学与技术系 实 验 报 告 课程名称: 操作系统原理与linux 实验名称: 银行家算法 2011年 04 月 实验三 银行家算法 一.实验 ...

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

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

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

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

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

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

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

    [清华大学]操作系统 陈渝--Part6 局部页面置换算法 6.8 局部页面替换算法的问题,工作集模型 局部页面替换算法的问题 工作集模型 6.9 全局页面置换算法 1. 工作集页置换算法 2. 可变 ...

  8. 操作系统:基于页面置换算法的缓存原理详解(下)

    概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...

  9. 操作系统:虚拟页式存储管理(缺页中断、页面置换算法)

    1.基本工作原理 1.基本工作原理 在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面:当内存已满,而又需要装入 新的页面时,则根据某种算法淘汰某 ...

最新文章

  1. lab_2 Selenium
  2. 清华人工智能研究院成立,张钹姚期智分别任院长和主任
  3. “国际软件自由日”介绍
  4. js 将时间戳转为日期格式
  5. Flutter开发之《头条 Flutter iOS 混合工程实践》笔记(54)
  6. web login do.php,dologin.php
  7. python自学书籍顺序-【经验分享】自学Python的学习顺序!附学习资料
  8. php编译自己库文件,php编译后追加库模块-gd库
  9. 一个代码托管平台居然公开拒招中国人,谁给了你歧视中国程序员的勇气?
  10. 关于Redis缓存,这三个问题一定要知道!
  11. OpenShift 4 之Istio-Tutorial (11) 控制Egress访问
  12. SpringSecurity简单教程(源码开源免费提供)
  13. zemax中非序列添加相位面_zemax非序列照明技巧汇编
  14. highcharts.js:61 Error: text attribute y: Expected length, NaNNaN.错误的解决
  15. 4484: [Jsoi2015]最小表示 bitset+拓扑序
  16. Sentry 前端日志上报使用
  17. Python 在线免费批量美颜,不比某秀秀方便好用一些吗!
  18. 全波形反演的深度学习方法: 第 4 章 基于正演的 FWI
  19. android gradle 多渠道打包小结
  20. 【halcon机器视觉教程】黑洞是什么洞?我来给你拍个照,黑洞成像系统

热门文章

  1. 溢出键盘程序漏洞 得到管理员权限
  2. CentOS下Apache环境支持GBK编码解决网页乱码问题
  3. Spread for Windows Forms 7新功能使用指南
  4. cmake--gccxml
  5. pomelo 分布式聊天入门客户端demo(c#)
  6. 如何在 Windows XP 中设置、查看、更改或删除文件和文件夹的特殊权限
  7. linux shell只读变量、删除变量
  8. reactjs组件的生命周期函数:getSnapshotBeforeUpdate更新之前获取快照
  9. js基于lodash实现前端防抖与节流
  10. arthas案例:哪个controller处理了请求?每个请求的调用参数和返回值是多少?