当前位置: 首页 > news >正文

操作系统教材第6版——个人笔记6

3.3.4 页面调度

页面调度

  • 当主存空间已满而又需要装入新页时,页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去 #主存满加新,把已在主存一些页调出
  • 选择淘汰页的工作称为页面调度 选择淘汰页的算法称为页面调度算法
    • 页面调度算法设计不当,会出现(刚被淘汰的页面立即又要调入,并如此反复)#淘汰调入循环=抖动/颠簸
    • 这种现象称为抖动或颠簸

缺页中断率

  • 假定进程P共n页,系统分配页架数m个
  • P运行中成功访问次数为S,不成功访问次数为F,总访问次数A=S+F
  • 缺页中断率定义为:f=F/A
  • 缺页中断率是衡量存储管理性能和用户编程水平的重要依据

影响缺页中断率的因素

  • 配给进程的页架数:可用页架数越多,则缺页中断率就越低
  • 页面的大小:页面尺寸越大,则缺页中断率就越低
  • 用户的程序编制方法:在大数据量情况下,对缺页中断率也有很大影响

用户编程的例子

OPT页面调度算法

  • 理想的调度算法是:当要调入新页面时,首先淘汰以后不再访问的页,然后选择距现在最长时间后再访问的页 #调入新页面-淘汰不再访问页-选最长时间页
  • 该算法由Belady提出,称Belady算法,又称最佳算法(OPT)
  • OPT只可模拟,不可实现

先进先出FIFO页面调度算法

  • 总是淘汰最先调入主存的那一页,或者说主存驻留时间最长的那一页(常驻的除外) 模拟的是程序执行的顺序性,有一定合理性
  • 最近最少用LRU页面调度算法
  • 淘汰最近一段时间较久未被访问的那一页,即那些刚被使用过的页面,可能马上还要被使用到
  • 模拟了程序执行的局部属性,既考虑了循环性又兼顾了顺序性 严格实现的代价大(需要维持特殊队列)

LRU算法的模拟实现

  • 每页建一个引用标志,供硬件使用
  • 设置一个时间间隔中断:中断时页引用标志置0
  • 地址转换时,页引用标志置1
  • 淘汰页面时,从页引用标志为0的页中间随机选择
  • 时间间隔多长是个难点

最不常用LFU页面调度算法

  • 淘汰最近一段时间内访问次数较少的页面,对OPT的模拟性比LRU更好
  • 基于时间间隔中断,并给每一页设置一个计数器
  • 时间间隔中断发生后,所有计数器清0
  • 每访问页1次就给计数器加1
  • 选择计数值最小的页面淘汰

时钟CLOCK页面调度算法

  • 采用循环队列机制构造页面队列,形成了一个类似于钟表面的环形表
  • 队列指针则相当于钟表面上的表针,指向可能要淘汰的页面
  • 使用页引用标志位

CLOCK算法的工作流程

  • 页面调入主存时,其引用标志位置1
  • 访问主存页面时,其引用标志位置1
  • 淘汰页面时,从指针当前指向的页面开始扫描循环队列
  • 把所遇到的引用标志位是1的页面的引用标志位清0,并跳过
  • 把所遇到的引用标志位是0的页面淘汰,指针推进一步

3.3.5 反置页表

反置页表的提出

  • 页表及相关硬件机制在地址转换、存储保护、虚拟地址访问中发挥了关键作用
  • 为页式存储管理设置专门硬件机构
  • 内存管理单元MMU:CPU管理虚拟/物理存储器的控制线路,把虚拟地址映射为物理地址,并提供存储保护,必要时确定淘汰页面
  • 反置页表IPT:MMU用的数据结构

反置页表的基本设计思想

  • 针对内存中的每个页架建立一个页表,按照块号排序
  • 表项包含:正在访问该页框的进程标识、页号及特征位,和哈希链指针等
  • 用来完成内存页架到访问进程页号的对应,即物理地址到逻辑地址的转换

反置页表的页表项

  • 页号:虚拟地址页号
  • 进程标志符:使用该页的进程号(页号和进程标志符结合起来标志一个特定进程的虚拟地址空间的一页)
  • 标志位:有效、引用、修改、保护和锁定等标志信息
  • 链指针:哈希链

基于反置页表的地址转换过程

  • MMU通过哈希表把进程标识和虚页号转换成一个哈希值,指向IPT的一个表目
  • MMU遍历哈希链找到所需进程的虚页号,该项的索引就是页架号,通过拼接位移便可生成物理地址
  • 若遍历整个反置页表中未能找到匹配页表项,说明该页不在内存,产生缺页中断,请求操作系统调入

反置页表下的地址转换示意

  • 未显示选择淘汰页面,同样由MMU完成

3.4 段式存储管理

3.4.1 段式存储管理

段式程序设计

  • 每个程序可由若干段组成,每一段都可以从“0”开始编址,段内的地址是连续的
  • 分段存储器的逻辑地址由两部分组成 段号:单元号

程序的分段结构

段的共享

  • 通过不同进程段表中的项指向同一个段基址来实现
  • 对共享段的信息必须进行保护,如规定只能读出不能写入,不满足保护条件则产生保护中断

3.4.2 段式虚拟存储管理

段式虚拟存储管理的基本思想

  • 把进程的所有分段都存放在辅存中,进程运行时先把当前需要的一段或几段装入主存,在执行过程中访问到不在主存的段时再把它们动态装入
  • 段式虚拟存储管理中段的调进调出是由OS自动实现的,对用户透明
  • 与段覆盖技术不同,它是用户控制的主存扩充技术,OS不感知
  • 段表的扩充
  • 特征位: 00(不在内存)01(在内存)11(共享段)
  • 存取权限: 00(可执行)01(可读)11(可写)
  • 扩充位: 0(固定长)1(可扩充)
  • 标志位: 00(未修改)01(已修改)11(不可移动)

 段式虚拟存储管理的地址转换

3.4.3  段页式存储管理

段页式存储管理的基本思想

段式存储管理可以基于页式存储管理实现每一段不必占据连续的存储空间,可存放在不连续的主存页架中能够扩充为段页式虚拟存储管理 装入部分段,或者装入段中部分页面

段页式存储管理的段表和页表

相关文章:

  • WPF国际化的最佳实践
  • SASS模块化与组织文件
  • 5-Maven-setttings和pom.xml常用配置一览
  • c#vb代码互转工具
  • SpringBoot+Vue校园管理系统(前后端分离)
  • MySQL分页:ROW_NUMBER() vs LIMIT
  • 【JMeter接口测试工具】第一节.JMeter简介和安装【入门篇】
  • vue 文件预览mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml
  • SAP Build引言
  • AI绘画工具
  • 暑期来临,AI智能视频分析方案筑牢防溺水安全屏障
  • Linux `free` 命令:深入解析系统内存使用情况**
  • C语言 | Leetcode C语言题解之第136题只出现一次的数字
  • Nvidia/算能 +FPGA+AI大算力边缘计算盒子:桥梁结构安全监测
  • C++实现图像的模拟运动模糊
  • DOM的那些事
  • JS 面试题总结
  • node学习系列之简单文件上传
  • Object.assign方法不能实现深复制
  • Python - 闭包Closure
  • Python中eval与exec的使用及区别
  • Rancher如何对接Ceph-RBD块存储
  • spark本地环境的搭建到运行第一个spark程序
  • 第2章 网络文档
  • 飞驰在Mesos的涡轮引擎上
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构建二叉树进行数值数组的去重及优化
  • 机器学习学习笔记一
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 与 ConTeXt MkIV 官方文档的接驳
  • 国内开源镜像站点
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​学习一下,什么是预包装食品?​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (003)SlickEdit Unity的补全
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (笔试题)分解质因式
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (排序详解之 堆排序)
  • (实战篇)如何缓存数据
  • (四)opengl函数加载和错误处理
  • (五)关系数据库标准语言SQL
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)jdk与jre的区别
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net Core和.Net Standard直观理解
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布