【OS】五、虚拟存储系统

本文深入探讨了虚拟存储器的基础概念,包括虚拟存储的实现过程、特征、请求分页存储管理(页表机制、内存分配与置换算法)以及请求分段存储。重点讲解了页面置换算法如最优置换、FIFO、LRU和Clock算法。同时涉及了抖动与工作集模型,以及预防和处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、虚拟存储器的基本概念

  • 要求的内存空间超过了内存总容量
  • 解决办法
    • 逻辑上增加内存容量。
  • 常规存储管理的特征
    • 一次性
      • 一个作业全部装入
    • 驻留性
      • 作业完成才出来
  • 内存扩充方法
    • 物理扩充
    • 逻辑扩充
      • 覆盖(解决一次性
      • 对换(解决驻留性
      • 虚拟存储
  • 局部性原理
    • 程序执行仅限于某个部分
    • 时间局限性
    • 空间局限性

虚拟存储器的定义

  • 先将当前要运行的部分程序装入内存,其他部分暂留外存

实现虚拟存储的一般过程

  • 先将一部分页面装入内存,便可开始运行。
  • 若运行需要的页面已经装入内存,则继续进行。
  • 若运行需要的页面未装入内存,则发生缺页中断,进程阻塞等待
  • 系统启动请求调页功能,将所需页面调入内存。
  • 若内存已满,则利用页置换功能,将暂时不用的页面换出。
  • 将阻塞进程唤醒,继续调度执行

虚拟存储器的特征(重要)

  • 具有调入功能置换功能,可实现在逻辑上对内存进行扩充
  • 逻辑容量内存和外存之和决定
  • 多次性
    • 一个作业被调入内存多次。
  • 对换性
    • 作业在运行中换进换出。
  • 虚拟性
    • 逻辑上的

虚拟存储器的实现方法

请求分页存储

  • 置换时以页面为单位
  • 硬件支持
    • 页表机制上增加若干项
    • 产生缺页中断
    • 地址变换机构
  • 软件支持
    • 请求调页
    • 页面置换

请求分段存储

  • 将上一节的“”换成“

段页式虚拟存储

  • 只有调页

2、请求分页存储管理方式

页表机制(重要)

  • 原有页表的基础上增加了
    • 状态位
    • 访问位
    • 修改位
    • 外存地址

缺页中断机构

  • 每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺之页调入内存。
  • 缺页中断属于程序性中断

内存分配策略和分配算法

  • 最小物理块数
    • 保证进程正常运行所需的最少的物理块数。
  • 固定/可变分配策略。
  • 全局/局部置换。

固定分配局部置换

  • 分配物理块之后,运行期间不再改变
  • 难以确定为每个进程分配多少物理块
    • 太少:频繁出现缺页中断。
    • 太多:进程对换费时。

可变分配全局置换(常用)

  • 为每个进程分配一定物理块,操作系统自身保持一个空闲物理块队列

可变分配局部置换

  • 只允许从该进程在内存的页面换出

物理块分配算法

平均分配

  • 所有可供分配的物理块,平均分配给各个进程

按比例分配算法

  • 根据进程的大小按比例分配物理块的算法

考虑优先级的分配算法

  • 一部分按比例分配,一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程

调页策略

页面何时调入

  • 预调页方式(不实际)
    • 预测将要使用的页面调入。
  • 请求调页
    • 所需页面不在页面才装入。

页面何处调入

  • 外存
    • 文件区
    • 对换区
  • 对换区足够
    • 文件区调入对换区。
  • 对换区不够
    • (可能)修改的页面换出到对换区。
    • 未修改的页面直接丢弃(文件区还有)。
  • UNIX方式
    • 未运行过,放在文件区。
    • 运行过,放在对换区。

页面如何调入

调入

页面置换算法(重要)

  • 决定哪个页面被换出

最优置换算法(理想化)

  • 所选择的被淘汰页面,将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面
    u

先进先出页面置换算法

  • 总时淘汰先进入内存的页面。
    f

最近最久未使用置换算法

  • 选择最近最久未使用的页面淘汰
    lru

Clock置换算法(NRU)

  • 每页有个访问位,并且将所有页面连接成一个循环队列
  • 访问位被访问则置1
  • 上次停止位置检查页面的访问位。
    • 访问位为0,换出。
    • 访问位为1,则置0,暂不换出。
      NRU

访问内存的有效时间(重要)

E A T = t + f ∗ ( σ + t ) + ( 1 − f ) ∗ t EAT=t+f*(\sigma+t)+(1-f)*t EAT=t+f(σ+t)+(1f)t

缺页率

f = F S + F f=\frac{F}{S+F} f=S+FF

  • 影响因素
    • 页面越大,缺页率越小。
    • 物理块数越多,缺页率越小。
    • 页面置换算法。
    • 程序的访问局部性。

4、抖动与工作集

抖动

刚调出就需要调入

  • 抖动原因
    • 给进程分配的物理块太少
    • 置换算法不当。(必要原因
    • 全局置换使抖动传播。

工作集模型

  • 确定进程所需的帧数
    工作

帧数=局部的宽度

  • 工作集
    • 最近时间访问的页面集合。

抖动预防

预防

  • 采取局部置换策略
  • 工作集预先调入内存
  • L=S原则
    • L为缺页之间的平均时间
    • S平均缺页服务时间

处理

  • 选择暂停的进程

5、请求分段存储管理方式(了解)

  • 同分页

习题

题目一


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值