第三章

内存管理基本原理

内存管理功能

  • 内存空间的分配与回收
  • 地址转换
  • 内存空间的扩充
    • 覆盖技术 :分固定区和覆盖区 对用户不透明
    • 交换技术
    • 虚拟存储技术
  • 存储保护
    • 设置上下限寄存器
    • 利用重定位寄存器、界地址寄存器进行判断

进程运行基本原理

  • 编译
  • 链接
    • 静态链接
    • 装入时动态链接
    • 运行时动态链接
  • 装入
    • 绝对装入
    • 可重定位装入
    • 动态运行时装入 需要设置重定位寄存器

覆盖技术

交换技术

  • 具有交换功能的操作系统中,磁盘分为文件区和对换区两部分,对换区的I/O速度更快

  • 交换通常在许多进程运行且内存吃紧时进行

  • PCB会常驻内存,不会被换出内存

覆盖是在同一个程序或进程中的,交换是在不同进程之间的。

连续分配管理方式

连续分配指为用户进程分配的必须是一个连续的内存空间

单一连续分配

内存分为系统区和用户区,系统区存放操作系统相关数据,用户区存放用户进程相关数据。

内存中是由一道用户程序,用户程序独占整个用户空间。

实现简单,无外部片。只能用于单用户、单任务的操作系统中,有内部碎片,存储器利用率低

固定分区分配

将整个用户空间划分为若干个固定大小的分区,在每一个分区中只装入一道作业。

  • 内存大小相等

    • 缺乏灵活性,但很适合用于一台计算机控制多个相同对象的场合
  • 内存大小不等

    • 增加灵活性,可以满足不同大小的进程需求
    • 无外部碎片,有内部碎片

建立分区说明表,来实现各个分区的分配与回收

动态分区分配

不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要

  • 记录内存的使用情况

    • 空闲分区表
    • 空闲分区练
  • 应该选择哪个分区进行分配

    • 四种动态分区分配算法
  • 如何进行分区的分配与回收

内部碎片: 分配给某进程的内存区域中,有些部分没有用上

外部碎片: 指内存中的某些空闲分区由于太小而难以利用

外部碎片可以用“紧凑”技术来解决

动态分区分配算法

在又多个空闲分区都能满足要求时,应该选择哪个分区进行分配

  • 首次适应算法
    • 从头到尾找适合的分区
    • 空闲分区以地址递增次序排列
    • 综合看性能最好,算法开销低
  • 最佳适应
    • 优先使用更小的分区,以保留更大的分区
    • 空闲分区以容量递增次序排列
    • 会有更大的大分区被保留下来
    • 会产生很多小碎片,算法开销大
  • 最坏适应
    • 优先使用更大的分区,以防产生太多太小的碎片
    • 容量递减排列
    • 可减少小碎片
    • 大分区容易被用完,不利于大进程,算法开销大
  • 邻近适应
    • 由首次适应演化而来。每次从上次查找结束外置开始查找
    • 地址递增排列
    • 算法开销小
    • 会使搞地质的大分区也被用完

非连续分配管理方式

基本分页存储管理

把进程分页,各个页面可离散的放在各个内存块中

  • 地址转换

    • 计算逻辑地址对应的页号

    • 找到对应页面在内存中的存放位置

    • 算出逻辑地址对应的页位移分量

    • 物理地址=页面地址+页内偏移量

  • 页表

    • 页表记录进程页面和实际存放的内存块之间的关系
    • 一个进程对应一张页表,进程的每一页对应一个页表项,每个页表项由页号和块号组成
    • 每个页表项的长度是相同的,页号是隐含的

基本地址变换机构

  • 页表寄存器的作用

    • 存放页表起始地址
    • 存放页表长度
  • 地址变换过程

    • 根据逻辑地址算出页号、页内偏移量
    • 页号的合法性检查(与页表长度对比)
    • 若页号合法,再根据页表起始地址、页号找到对应项表项
    • 根据页表项中记录的内存块号、页内偏移量得到最终物理地址
    • 访问物理内存对应的内存单元

快表

  1. 算页号,页内偏移量
  2. 检查页号合法性
  3. 查快表,若命中,即可知道页面存放的内存块号,可直接进行5,否则进行4
  4. 查页表,找到页面存放的内存块号,将页表项复制到快表中
  5. 根据内存块号和页内偏移量得到物理地址
  6. 访问目标内存单元

快表命中,一次访存,否则,两次访存。页表在内存中,快表不在内存中。

两级页表

各级页表的大小不能超过一个页面。

套娃

基本分段存储管理

段页式存储管理

虚拟内存

传统存储管理方式的特征

  • 一次性 作业必须一次性全部装入内存后,才能开始运行
  • 驻留性 作业被装入内存后就一直驻留在内存中,其任何部分都不会被换出

虚拟存储器只是由于系统提供了部分装入、请求调入和置换功能后,给用户的感觉是一个比实际物理内存大得多的存储器

  • 多次性
  • 对换性
  • 虚拟性

虚拟存储实现的硬件支持

  • 一定容量的内存、外存
  • 页表机制
  • 中断机构
  • 地址变换机构

请求分页管理方式

  • 页表机制
    • 页表项包含 页号、物理块号、状态位、访问字段、修改位、外存地址
  • 缺页中断机构
  • 地址变换机构

页面置换算法

  • 最佳置换算法 OPT
    • 缺页中断不一定发生页面置换
  • 先进先出页面置换算法 FIFO
    • 会产生所分配的物理块数增大而页故障数不增反减的异常现象
  • 最近最久未使用置换算法 LRU
  • 时钟置换算法 CLOCK

页面分配策略

驻留集:请求分页存储管理中给进程分配的物理块的集合,一般小于进程的总大小

操作系统分配策略

  • 固定分配局部置换
  • 可变分配全局置换
  • 可变分配局部置换

调入页面的时机

  • 预调入策略
    • 主要用于进程的首次调入,由程序员指出先调入那些页
  • 请求调页策略
    • 每次只调入一页,调入调出过多时会花费过多的I/O开销

从何处调入页面

分页系统的外存分两部分,用于存放文件的文件区和存放对换页面的对换区

  • 系统有足够对换区 全部从对换区调入所需页面
  • 系统缺少足够的对换区 凡不会被修改的文件直接从文件区调入,不必换出。可能修改的在换出时要调到对换区
  • UNIX方式 未运行过的页面都应在文件区调入

抖动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值