计算机操作系统 第五章

5.1 虚拟存储器概述

  • 常规存储器管理方法的特征
    • 一次性:作业必须一次性地全部装入内存后才能开始运行。
    • 驻留性:作业被装入内存后,将会一直驻留在内存中,直到运行结束。

存储器管理遇到的问题

  • 作业很大,使得内存装不下该作业
  • 作业很多,一次只能装入很少作业,其他作业在外存等待。

局部性原理

  • 时间局部性:如果程序中某条指令或程序被访问了,那么在不久的将来该指令或数据将被再次访问。(循环操作)
  • 空间局部性:一旦程序访问了某个存储单元,则不久以后,其附近的存储单元也将被访问。(顺序执行)

虚拟存储器

  • 具有请求调入功能和置换功能,能从逻辑上对内存让利加以扩充的一种存储器系统。
  • 虚拟存储器的容量由内存容量和外村容量之和决定。
  • 虚拟存储器的访问速度接近内存速度,每位成本接近外存。

虚拟存储器的特征

  • 多次性:一个作业中的程序和数据无需在作业运行时一次性地全部装入内存,允许被分成多次调入内存。(最重要特征)
  • 对换性:允许在作业的运行过程中进行换进,换出。
  • 虚拟性:能够在逻辑上扩充内存容量,并不是在物理上对内存进行扩充。

虚拟存储器的实现方法

  • 请求分页系统:基本分页+请求调页+页面置换
  • 请求分段系统:基本分段+请求调段+分段置换
  • 请求段页式系统:段页式存储+请求调页+页面置换

5.2 请求分页存储管理方式

  • 请求分页存储管理需要解决的问题
    • 怎么知道页面在不再内存?
    • 页面在外村的什么位置?
    • 内存有没有空闲块?
    • 选什么样的页调出去?
    • 页进入内存后有没有被修改过?

缺页处理

  • 缺页处理
  • 地址变换

请求分页中的内容分配

  • 固定分配:为每个进程分配一组固定数目的内存块,在整个进程运行期间不再改变
  • 可变分配:先为进程分配一定数目的内存块,在进程执行期间,根据运行情况适当整理

页面置换策略

  • 全局置换:进程运行过程中,如果发现有缺页,则OS将自己保留的空闲物理块分配给该进程,或者从全部进程的物理块中选一块,将里面的页换出,再把所缺页调入。
  • 局部置换:如果进程缺页,只能从分配给自己的那些物理块中选择一个,将里面的页换出,再将缺的页调入。

固定分配局部置换

  • 固定分配局部置换
    • 平均分配
    • 按比例分配
    • 按优先权分配
  • 可变分配全局置换
  • 可变分配局部置换

页面调入策略

  • 何时调入:预调入,请求调页。
  • 从何处调入
  • 页面调入过程
  • 缺页率:

页面大小

进程分配到的物理块数

页面置换算法

程序固有特性

5.3 页面置换算法

  • 最佳置换算法OPT(理想化算法)
    • 选择以后永不使用的,或者是在最长(未来)时间内不再访问的页面进行置换

  • 先进后出置换算法(FIFO)
    • 选择最先进入内存的(即在内存中驻留时间最久的)页面进行置换

Belady现象

在一个请求分页系统中,假如一个作业的页面走向为1,2,3,4,1,2,5,1,2,3,4,5, 当分给该作业的物理块数M分别为3和4时,请用FIFO计算缺页次数和缺页率,并比较所得的结果。

最近最久未使用算法(LRU)

  • 将”最近的过去“作为”最近的将来“的近似
  • 选择最近最长时间为用到的淘汰页面淘汰

灵魂提问

  • 如何知道每个页面已经有多久没有被访问?

访问字段

  • 如何快速知道哪个页面是最久没有被访问的?

硬件支持

寄存器

  • 第五章ppt P21

  • 用一个特殊的栈保存当前使用的各个页面的页面号,当进程访问某页时:
    • 如果该页在栈内,则将该页从栈内弹出并压入栈顶
    • 如果该页不在栈内,则直接压入栈顶
    • 淘汰时,在栈底的页就是最近很久未使用的页

最少使用置换算法(LFU)

  • 选择最近一段时间内,内存中访问次数最少的页面进行淘汰
  • 用计数器统计每个页面被访问的次数
  • 用移位寄存器记录也买你被访问的次数
  • 算法缺陷

简单的CLOCK置换算法(最近未使用置换算法NRU)

  • 将内存中所有存储了页的物理块通过指针链接成一个循环队列
  • 根据页表中的访问状态决定选择哪个页面进行淘汰。如果一页被访问过,则访问状态位置1,否则0
  • 系统缺页时,从指针位置开始扫描内存所有页面,将遇到的第一个访问位为0的页面淘汰
  • 不扫描过程中,遇到状态位为1的页面,则将其状态位置0,则不淘汰。

例题

已知操作系统为进程P分配了五个内存块,假设P的页面引用顺序为1,3,4,2,5,6,3,4,7.试描述使用NRU算法淘汰页面的顺序。

改进型CLOCK置换算法

  • 淘汰页面的依据是访问位A+修改位M
  • A=0,M=0
  • A=0,M=Z
  • A=1,M=0
  • A=1.M=1

改进型CLOCK配置算法规则

  • 从指针所在位置开始扫描,寻找(A=0,M=0)的页面,将遇到的第一个符合要求的页面淘汰
  • 若第一轮扫描失败则进行第二轮扫描,寻找(A=0,M=1)的页面,将遇到的第一个符合要求的页面淘汰,同时将扫描过程中遇到的所有访问位为1的页面的访问位置0
  • 若第二轮扫描失败则进行第三轮扫描,寻找(A=0,M=0)的页面进行淘汰
  • 若第三轮扫描失败,则进行第四轮扫描,寻找(A=0,M=1)的页面进行淘汰
  • 第四轮扫描会不会失败?

页面缓冲置换算法(PBA)

  • PBA采用可变分配局部置换的工作方式,并且创捷空闲块链表和修改页面链表来减少页面换进换出的次数
  • 空闲块链表:系统掌握的所有空闲块构成的链表
  • 修改页面链表:由被换出的已经修改的页面组成的链表

例题

  • 假设系统内存有10个空闲块,则相应空闲内存块链表为:

  • 创建P1进程,分配4个块,则分配到0,1,2,3四块,此时空闲页面链表变为:

  • P1装入0、1、2、3四个页面:

  • P1访问0页、1页、2页,其中0页修改,1页、2页不修改:

访问内存的有效时间EAT

  • 页在内存,页表项在快表中:EAT=λ+t
  • 页在内存,页表项不在快表中:EAT=λ+t+λ+t
  • 页不在内存:EAT=λ+t+ε+λ+t
  • 考虑快表命中率a和缺页率f

5.4 ”抖动“与工作集

抖动

  • 在请求分页系统中,若在内存中引入过多的进程,会使进程的大部分时间都用于页面的换入/换出操作,而几乎不能完成任何有效的工作。我们称这时的进程处于”抖动“状态。

抖动的原因

  • 进程太多,由此分配给每一个进程的物理块太少,频繁缺页。

预防抖动

  • 把工作集算法融入到处理机调度中
  • 选择暂停一些进程
  • 利用S=L原则调节缺页率,即平均缺页服务时间S尽可能等于平均缺页时间L
  • 可变分配时采取局部置换策略
  • 工作集:在某段时间间隔里进程实际所要访问的页面的集合

5.5 请求分段存储管理方式

请求分段的基本原理

  • 在基本分段存储的基础上增加请求调段功能和分段置换功能即形成请求分段存储管理方式
  • 请求分段的段表:

缺页中断机构

地址变换机构

分段的共享

  • 为了实现分段的共享,在系统中配置一张共享段表,所有共享段都在共享段表上占有一个表项。

共享段的分配

  • 对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区始址填入进程的段表的相应项中,并在共享段表中增加一项,填写请求使用该共享段的进程名、段号和存储控制等有关数据,把count置为1。
  • 对于不是第一个请求使用该共享段的进程,只需要在进程的段表中增加一个表项,填写该共享段的物理地址。然后在共享段的段表里增加一个表项,填上进程的相关信息,并执行count=count+1.

共享段的回收

  • 进程不再需要共享段时,撤销该共享段在进程段表中的项,并撤销共享段表中该进程的相关记录,执行count=count-1操作。
  • 若count为0,则系统回收该共享段所占用的内存,取消在共享段表中该段所对应的表项。

分段保护

  • 越界检查:保证每个进程在自己的地址空间运行。
  • 存取控制检查:实现访问控制。
  • 环保护机构:低编号的环具有高优先权。程序可以访问驻留在相同环或较低特权环(外环)的数据;可以调用驻留在相同环或者较高特权环(内环)中服务。

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值