第五章存储器管理 存储管理的功能 存储管理的目的 存储管理的机制 存储管理的功能 作系统存储器 >主存的分配和管理 一记住内存每个位置的状态。 分区管理 在系统程序或用户作业提出申请 时,实施分配,并修改分配记录 分页管理 接受系统成用户释放的存储区 分段管理 主动收回不再用的存储区,并 相应地修改分配记录表 内外存数据传输的控 >提高内存利用率 用户程序控制 操作系统控制 扩充”内存容量 一交换( Swapping):由oS把那在内 存中处于等待状态的进程换出内存,就 绪进程换入内存 信息保护 请求调入( On demand)和预调入 (On prefetch) >内存的分配与回收 内存管理的内容 存储分配的方式 分配结构 直接分配: 放策略: 静态分配 动态分配 交换策略 系统方面:能了新分配主存,程序在需要时 调入策略: 调入内存 回收策略:
1 操 作 系 统 | 存 储 器 管 理 1 CUIT 徐虹 第五章 存储器管理 ¾存储管理的机制 ¾存储管理的功能 ¾分区管理 ¾分页管理 ¾分段管理 操 作 系 统 | 存 储 器 管 理 2 CUIT 徐虹 5.1 存储管理的功能 ¾存储管理的目的 ¾ 主存的分配和管理 ¾记住内存每个位置的状态。 ¾在系统程序或用户作业提出申请 时,实施分配,并修改分配记录。 ¾接受系统或用户释放的存储区, 或主动收回不再用的存储区,并 相应地修改分配记录表 操 作 系 统 | 存 储 器 管 理 3 CUIT 徐虹 ¾ 提高内存利用率 ¾ “扩充”内存容量 ¾ 信息保护 操 作 系 统 | 存 储 器 管 理 4 CUIT 徐虹 ¾内外存数据传输的控 ¾ 用户程序控制 ¾ 操作系统控制 ¾交换(Swapping) :由OS把那在内 存中处于等待状态的进程换出内存,就 绪进程换入内存。 ¾请求调入(On demand) 和预调入 (On prefetch) 操 作 系 统 | 存 储 器 管 理 5 CUIT 徐虹 ¾内存的分配与回收 ¾ 存储分配的方式: ¾ 直接分配: ¾ 静态分配: ¾ 动态分配: ¾程序设计方面:程序独立性,程序模块化, 表格处理。 ¾系统方面:能重新分配主存,程序在需要时 调入内存 操 作 系 统 | 存 储 器 管 理 6 CUIT 徐虹 ¾ 内存管理的内容 ¾分配结构: ¾放置策略: ¾交换策略: ¾调入策略: ¾回收策略:
内存信息的共享与保护 上下界保护法 5.2程序的装入和链接 >保护键法 被保护存储块分配一个单独的保 程序状态字中设置相应的开关 系>程序的装入 >绝对装入方式( Absolute Loading Mode) 界限寄存器与cPU的用户态和核心 编译程序产生绝对地址目标代码 态工作方式相结合 装入程序根据装入模块中的地址 用户态进程只能访问在界限寄存器所规 程序和数据装入内存 内的内存部分,而核心态进程则 2.可重定位装入方式( Relocatable 3.动态运行时装入方式( Dynamic Loading Mode) Run-Time Loading) 重定位:在装入时对目标程序中的指令和 程序执行过程中 问指令取数据时 数据地址的修改过程 称为动态重 静态地址重定位:是指作业在装入时随即 件地址变换机构实现的 序完成 基地址寄存器(定位寄存器)BR 无需增加硬件地址变换机构;实现 程序虚地址寄存器vR 地址MA=(BR)+(vR) 糖序在庸经淘中能定乔能x雨 实现虚存 程序的链接 >静态链接 装入时动态链接 标由 运行时动态链接
2 操 作 系 统 | 存 储 器 管 理 7 CUIT 徐虹 ¾内存信息的共享与保护 ¾上下界保护法 ¾保护键法 ¾为每个被保护存储块分配一个单独的保 护键,在程序状态字中设置相应的开关 字段,不同的进程值不一样,匹配时, 方可进行访问。 ¾界限寄存器与CPU 的用户态和核心 态工作方式相结合 ¾用户态进程只能访问在界限寄存器所规 定范围内的内存部分,而核心态进程则 可访问整个内存地址空间。 操 作 系 统 | 存 储 器 管 理 8 CUIT 徐虹 5.2 程序的装入和链接 ¾程序的装入 ¾绝对装入方式(Absolute Loading Mode) ¾编译程序产生绝对地址目标代码,由 装入程序根据装入模块中的地址,将 程序和数据装入内存。 操 作 系 统 | 存 储 器 管 理 9 CUIT 徐虹 ¾2.可重定位装入方式(Relocatable Loading Mode) ¾重定位:在装入时对目标程序中的指令和 数据地址的修改过程。 ¾静态地址重定位:是指作业在装入时随即 进行的地址变换方式,这一工作由装配程 序完成。 ¾优点:无需增加硬件地址变换机构;实现 简单。 ¾缺点:程序经地址定位后就不能再移动了; 程序在存储空间中只能连续分配;多个用 户难以共享存于内存中的同一程序。 操 作 系 统 | 存 储 器 管 理 10 CUIT 徐虹 ¾3.动态运行时装入方式(Dynamic Run-Time Loading) ¾程序执行过程中,当访问指令或数据时, 才进行的地址变换方法,称为动态重定 位。 ¾靠硬件地址变换机构实现的。 ¾基地址寄存器(重定位寄存器) BR ¾程序虚地址寄存器VR ¾地址 MA=(BR)+(VR) ¾优点:可对内存进行非连续分配;提供 了实现虚存的基础;有利于程序段的共 享。 操 作 系 统 | 存 储 器 管 理 11 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 12 CUIT 徐虹 ¾程序的链接 ¾ 静态链接 ¾ 装入时动态链接 ¾ 运行时动态链接
5.3连续分配存储管理方式 缺点 单一连续分配 存储器利用率低 存储区的分配 缺乏灵活性,小于内存,否则提供凝 内存分配和回收策略 优点 作系统存储器 某些系统中安全性差。 信息不共享 管理简单,不要求专用的硬件支 持;为防止破坏OS,设置界限寄 cPU利用率低,周转时间长 存器;易于实现。 >固定分区 工作原理 在系统生成时,将内存划分为 始地址及状态 可使多个作业共享内存,但管理简 明确的作业比较合 动态分区 >工作原理 存储空间的划分是在装入作业时进行 的,且使分区大小正好适应作业的需要 数据结构 空闲分区丧:序号,大小,赵址,状态 一空闲分区链:在每个分区中附上一个衷表 信息,状态(0,1),大小,指针 (空白分区才有)
3 操 作 系 统 | 存 储 器 管 理 13 CUIT 徐虹 5.3 连续分配存储管理方式 ¾单一连续分配 ¾存储区的分配 ¾内存分配和回收策略 ¾优点 ¾管理简单,不要求专用的硬件支 持;为防止破坏OS ,设置界限寄 存器;易于实现。 操 作 系 统 | 存 储 器 管 理 14 CUIT 徐虹 ¾缺点 ¾存储器利用率低 ¾缺乏灵活性,小于内存,否则提供覆 盖。 ¾某些系统中安全性差。 ¾信息不共享 ¾CPU 利用率低,周转时间长。 操 作 系 统 | 存 储 器 管 理 15 CUIT 徐虹 ¾ 固定分区 ¾工作原理 ¾在系统生成时,将内存划分为若干 各分区,每个分区的大小可以不等, 一经划分,不能更改。 ¾系统对内存的管理和控制通过分区 说明表说明各区的区号,大小,起 始地址及状态。 ¾特点 ¾可使多个作业共享内存,但管理简 单,内存利用率太低,对工作负荷 明确的作业比较合适。 操 作 系 统 | 存 储 器 管 理 16 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 17 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 18 CUIT 徐虹 ¾动态分区 ¾工作原理 存储空间的划分是在装入作业时进行 的,且使分区大小正好适应作业的需要。 ¾数据结构 ¾空闲分区表:序号,大小,起址,状态 ¾空闲分区链:在每个分区中附上一个表 格信息,状态(0,1),大小,指针 (空白分区才有)
最佳适应算法 分区管理算法 空白区按大小遵增的顺序链在一赵。变量 首次适应算法( First fit) EE中的始端指针总指向最小的空白区。 每个空白区按地址递增的顺序髓接在 特点:平均而言,查找时间较少选择最适 起 特点:尽量使用低端地址,以保持高址 白区时较慢;回收时费时;先拼接 部分的大空间区;低址部分有很多小空白 区插入适当位 区,回收时花销较大,费时。 最差适应算法 循环首次适应算法 空白区按容量递减次序排列。 从上次查找的位量开始查找。 特点:分配时间快;剩下的空白分区仍可用 各空白区比较均匀地减少,工作一段时间后 就不能清足大空白区的妥求;回收麻烦 算法分析 特点:有助于多觉程序设 用效率;分区的大小,受 科算法比较:搜宝邃度,释放道度,空 闲区的利用
4 操 作 系 统 | 存 储 器 管 理 19 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 20 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 21 CUIT 徐虹 ¾分区管理算法 ¾首次适应算法(First Fit) ¾每个空白区按地址递增的顺序链接在一 起。 ¾特点:尽量使用低端地址,以保持高址 部分的大空间区;低址部分有很多小空白 区,回收时花销较大,费时。 ¾循环首次适应算法 ¾从上次查找的位置开始查找。 操 作 系 统 | 存 储 器 管 理 22 CUIT 徐虹 ¾最佳适应算法 ¾空白区按大小递增的顺序链在一起。变量 FREE 中的始端指针总指向最小的空白区。 ¾特点:平均而言,查找时间较少;选择最适 合的空白区。形成很多小碎片;找一个大空 白区时较慢;回收时费时;先拼接,再把该 区插入适当位置。 ¾ 最差适应算法 ¾空白区按容量递减次序排列。 ¾特点:分配时间快;剩下的空白分区仍可用; 各空白区比较均匀地减少,工作一段时间后, 就不能满足大空白区的要求;回收麻烦。 操 作 系 统 | 存 储 器 管 理 23 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 24 CUIT 徐虹 ¾算法分析 ¾特点:有助于多道程序设计;只需要界地 址寄存器,用于存储保护;算法简单,易 于实现。但会产生碎片,降低存储器的利 用效率;分区的大小,受内存容量限制。 ¾几种算法比较:搜索速度,释放速度,空 闲区的利用
分区的分配 伙伴系统 在未分配变中找出一个足够大的空白分 M K■Kk 一如比进程要求的大,则分为两部分; K[A-IEIKIINK0-EK 一修改两个说明表的有关信息,并回送 64K A..26K 个所分配分区的序号或该分区的始址 k ISK340K8-2568:25K 分区的回收 A=LN地k D=256k 检查回收的分区是否与空白区邻接 RekeA 256k Da256K 则加以合并,上邻接,下邻接,上下 .LxK INk #ek D.30K16k 修改两张说明表 >可重定位分区分配 原理:内存紧凑 地址映射 集合,这些单元编号称为 罩列的存储傅】 物理地址取绝对地址 定位:把作业地址空 的逻辑 上变换成主存中的物 氮中伴 实现 分区的保护措施 动态重定位技术:访问指令或数据时,通 过重定位寄存器来自动修改访闻存情器的 界地址存储管理 采用上,下界寄存器的方案 地址。 内存拼接 采用基地址,限长寄存器的方法。 在某个分区被回收时,如不与空白区邻接 保护键 则立即进行拼接 给每个存储块部分配一个单独的保护健 而在程序状态字中设量保护健字段,对不 一在为作业分配而找不到足够大的空白区时 同的作业赋予不同的代码 行拼接
5 操 作 系 统 | 存 储 器 管 理 25 CUIT 徐虹 ¾分区的分配 ¾在未分配表中找出一个足够大的空白分 区; ¾如比进程要求的大,则分为两部分; ¾修改两个说明表的有关信息,并回送一 个所分配分区的序号或该分区的始址。 ¾分区的回收 ¾检查回收的分区是否与空白区邻接,如 有则加以合并,上邻接,下邻接,上下 邻接。 ¾修改两张说明表。 操 作 系 统 | 存 储 器 管 理 26 CUIT 徐虹 ¾伙伴系统 操 作 系 统 | 存 储 器 管 理 27 CUIT 徐虹 ¾可重定位分区分配 ¾原理:内存紧凑 ¾地址映射 ¾地址空间:在编译后,一个目标程序所 限定的地址,即地址空间仅仅是指程序 用来访问信息所用的一系列地址单元的 集合,这些单元编号称为逻辑地址(相 对地址)。 ¾存储空间:指主存中一系列存储信息的 物理单元的集合,这些单元的编号称为 物理地址或绝对地址。 ¾重定位:把作业地址空间中使用的逻辑 地址变换成主存中的物理地址的过程。 操 作 系 统 | 存 储 器 管 理 28 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 29 CUIT 徐虹 ¾实现 ¾动态重定位技术:访问指令或数据时,通 过重定位寄存器来自动修改访问存储器的 地址。 ¾内存拼接 ¾在某个分区被回收时,如不与空白区邻接, 则立即进行拼接。 ¾在为作业分配而找不到足够大的空白区时 再进行拼接。 操 作 系 统 | 存 储 器 管 理 30 CUIT 徐虹 ¾分区的保护措施 ¾界地址存储管理 ¾采用上,下界寄存器的方案。 ¾采用基地址,限长寄存器的方法。 ¾保护键 ¾给每个存储块都分配一个单独的保护键, 而在程序状态字中设置保护键字段,对不 同的作业赋予不同的代码