第五章存储器管理 存储管理的功能 存储管理的目的 存储管理的机制 存储管理的功能 作系统存储器 >主存的分配和管理 一记住内存每个位置的状态。 分区管理 在系统程序或用户作业提出申请 时,实施分配,并修改分配记录 分页管理 接受系统成用户释放的存储区 分段管理 主动收回不再用的存储区,并 相应地修改分配记录表 内外存数据传输的控 >提高内存利用率 用户程序控制 操作系统控制 扩充”内存容量 一交换( 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 徐虹 ¾分区的保护措施 ¾界地址存储管理 ¾采用上,下界寄存器的方案。 ¾采用基地址,限长寄存器的方法。 ¾保护键 ¾给每个存储块都分配一个单独的保护键, 而在程序状态字中设置保护键字段,对不 同的作业赋予不同的代码
5.4覆盖与交换技术 覆盖技术 >盖是指一个作业的若干程序段 或几个作业的某些部分共享一段存 储空间。 盖的管理(摄盖区的管理,覆盖 作系统存储器普理 20K区0 的调入调出)是由系统实施。但要 覆盖区1 求程序员提供一个明确的覆盖结构 110K 交换技术 换入和换出 交换 消息M中有:分区号,基址 base,长度 size, 交换就是把主存中的信息以文件的形式写入 方向和外存交换区中分区始址。 到辅存,接着将指定的信息从轴存续入主存 并将控制转给 Begin local m >交换空间的管理 m base= base; m ceiling= based size; 文件区:高散分配,提高存储空间的利用率; mdirection="in"2 对换区:连续分配, shorebased 对换空间的分配与回 闲区的拼接 交换区分配算法:首次适应算法、循环适应 send((m, i), device queue SWAPOUT (i) Begin local m 5.5分页存储管理 m base= basel >基本原理 mceiling= base size 实现方法 m direction="out 各进程的地址空间分成大小相等的页 mdestination= base of free area on swap b 把内存的存储空间也分成与页大小相 area 同的片,称为物理块。在分配存储空 间时,以块为单位来分配 backu 一页面大小:21(1K send((m, i), device queue end
6 操 作 系 统 | 存 储 器 管 理 31 CUIT 徐虹 5.4 覆盖与交换技术 ¾覆盖技术 ¾覆盖是指一个作业的若干程序段, 或几个作业的某些部分共享一段存 储空间。 ¾覆盖的管理(覆盖区的管理,覆盖 的调入调出)是由系统实施。但要 求程序员提供一个明确的覆盖结构。 操 作 系 统 | 存 储 器 管 理 32 CUIT 徐虹 A 20K B 50K C 30K D 30K E 20K F 40K 常住部分 20K 覆盖区0 50K 覆盖区1 40K 0 20K 70K 110K 操 作 系 统 | 存 储 器 管 理 33 CUIT 徐虹 ¾交换技术 ¾交换 ¾交换就是把主存中的信息以文件的形式写入 到辅存,接着将指定的信息从辅存续入主存, 并将控制转给它。 ¾交换空间的管理 ¾文件区:离散分配,提高存储空间的利用率; ¾对换区:连续分配,提高交换速度。 ¾对换空间的分配与回收:注意空闲区的拼接 ¾交换区分配算法:首次适应算法、循环适应 算法和最佳适应算法。 操 作 系 统 | 存 储 器 管 理 34 CUIT 徐虹 ¾换入和换出 消息M 中有:分区号i,基址basei,长度sizei, 方向和外存交换区中分区始址。 SWAPIN Begin local m m.base = basei; m.ceiling = basei + sizei; m.direction = “in” ; m.source = backupstorebasei ; send ((m,i),device queue ) ; end 操 作 系 统 | 存 储 器 管 理 35 CUIT 徐虹 SWAPOUT (i) Begin local m m.base = basei; m.ceiling = basei + sizei; m.direction = “out” ; m.destination = base of free area on swap area ; backupstorebasei = m.destination ; send ((m,i),device queue ) ; end 操 作 系 统 | 存 储 器 管 理 36 CUIT 徐虹 5.5 分页存储管理 ¾基本原理 ¾实现方法 ¾各进程的地址空间分成大小相等的页, 把内存的存储空间也分成与页大小相 同的片,称为物理块。在分配存储空 间时,以块为单位来分配。 ¾页面大小:2 i (1K,2K,4K 等)
Example Page Sizes age Size ywell-Multicr 1024 36-bt word IBM 370/A and 37QESA 4 Kbytes &SSNS 512 btes byes to 16 Mbytes Kbytes or 4 Mbytes Assignment of Process Pages to Free Frames penge tab I P63 purge table Data example of tigure 7y at lime Epoch in Assignment of Process Pages to Free Frames 地址变换 页表 采用动态重定位技术,为作业的每页设置一个重 定位寄存器,这些寄存器组成一组,称为页表 其中一个表目为该页在主存中的块号。 在主存中专门分配一些存储单元来存放页表。 (a)Paging only 页表始址和长度存放在控制寄存器中 页表的大小 Typical Memory Management Format
7 操 作 系 统 | 存 储 器 管 理 37 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 38 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 39 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 40 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 41 CUIT 徐虹 ¾地址变换 ¾页表 采用动态重定位技术,为作业的每页设置一个重 定位寄存器,这些寄存器组成一组,称为页表。 其中一个表目为该页在主存中的块号。 在主存中专门分配一些存储单元来存放页表。 页表始址和长度存放在控制寄存器中。 ¾页表的大小 操 作 系 统 | 存 储 器 管 理 42 CUIT 徐虹
页表始址的选择 快表采用联想存储器加快查表速度 为了快速地根据页表始址和页号找到所需相 在地址变换机构中,加入一个高速,小容 应表目,页表的始址应为2的幂 快表存放正运行的作业的当前页号和块号 例:页表始址PA012位,页号:13-17位 快表中找到,直接进行地址转换:未找 春页表为32字 到,则在主存页表继续查找,并把查到的页 PA=25Ps:页表区始址 号和块号放入联想存储器的空闲单元中,如 PA=Ps+i*25(0(I(N-1,N为作业个数) 没有,淘汰最先装入的页号 贝内地址W 地址变换 实际地址) 在开始执行(哦恢复执行)一个作业时,由系统把页表 始址和页表长度放入控制寄存器中 Protran Pacing Mechanium Acrew Trarrlati in a Pigging Sysem 例:一个三页长的进程,每页长1K 风“号〔号 分页存储管理算法 管理袤目 作表(J)—整个系统一张,每个 作业对应一个表目 指令:100LoAD1,2500的地址变换过程为 内容:页衰长度,页始址,状态 据控制寄存器找到页表的始址和长度 存储分块表(MBT)一整个系统一张 器该指令地址=2*1024+100=2148 表示方式:创丧,位示图 执行:2500=2048+452P=2W=452 页表(PT)一每个作业一张 2500单元的物地址=1024*8+452=8644 分页存储分配算法
8 操 作 系 统 | 存 储 器 管 理 43 CUIT 徐虹 ¾页表始址的选择 为了快速地根据页表始址和页号找到所需相 应表目,页表的始址应为2 的幂。 例:页表始址PA 0---12位,页号:13—17位 页表为32 字节。 PA=2 5 P S:页表区始址 PAI =PS + i*25 (0〈I〈N-1,N为作业个数〉 操 作 系 统 | 存 储 器 管 理 44 CUIT 徐虹 ¾快表---采用联想存储器加快查表速度 在地址变换机构中,加入一个高速,小容 量、具有并行查询能力的联想存储器,构成 快表,存放正运行的作业的当前页号和块号。 在快表中找到,直接进行地址转换;未找 到,则在主存页表继续查找,并把查到的页 号和块号放入联想存储器的空闲单元中,如 没有,淘汰最先装入的页号。 操 作 系 统 | 存 储 器 管 理 45 CUIT 徐虹 ¾地址变换 页号P 页内地址W 31 12 11 0 找到 地址变换 (P,W)————(B,W )———— (实际地址) 在开始执行(或恢复执行)一个作业时,由系统把页表 始址和页表长度放入控制寄存器中。 操 作 系 统 | 存 储 器 管 理 46 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 47 CUIT 徐虹 ¾例:一个三页长的进程,每页长1K。 页号 页面号(块号) 0 2 1 3 2 8 指令: 100 LOAD 1,2500 的地址变换过程为: 根据控制寄存器找到页表的始址和长度, 该指令地址=2*1024+100 = 2148 执行: 2500 = 2048+452 P=2 W=452 B= 8 2500单元的物理地址=1024*8+452 = 8644 操 作 系 统 | 存 储 器 管 理 48 CUIT 徐虹 ¾分页存储管理算法 ¾管理表目 ¾作业表( JT) —— 整个系统一张,每个 作业对应一个表目 ¾内容:页表长度,页表始址,状态 ¾存储分块表(MBT)—— 整个系统一张 ¾表示方式:链表,位示图 ¾页表(PT)——每个作业一张 ¾分页存储分配算法
729 多级页亵 级页 两风的饰构 外层页号P1内层页号P2页内地址D 1211 多级页我结构 GIte tr A Two-level Hierarchical Page Table [JACO98 反置页表 分页存储管理方案的评价 优点 原理 有效解决存储器的零头问题,能在更高 在每个物理块内设置一个表项:页号及进 程标识符 的程度上进行多道程序设计,从而相应 提高了存储器和cPU的利用率 每个进程建立一个外部页表,当访问页 不在内存时,才访问外部页表 >缺点 >地址变换 采用动态地址变换为增加计算机成本和 降低cPU的遠度 特点 一表格占内存空间,费时来管理表格 存在页内碎片 一作业动态的地址空间受内存容量限制。 5.6分段存储管理 实现原理 段式虚存空间 分段存储管理:方便编程、分段共享、分段保 进程的虚地址空间为二维的,段长不固定 护、动态链接和动态增长。 每个段定义一组逻辑上完整的程序或据 基本思想 F[段号s段内地址W 把程序按内容或过程(函数)关系分成 311615 段,每段有自己的名字。段式管理程序 例:CALL冈]|(Y) 以段为单位分配内存,然后通过地址映 LOAD 1, [A]16 射机构把段式虚地址转换成实际的内存 物理地址 STORE 1, BI(C)
9 操 作 系 统 | 存 储 器 管 理 49 CUIT 徐虹 ¾ 多级页表 ¾ 两级页表 ¾ 引入 ¾ 两级页表的结构 外层页号P1内层页号P2 页内地址D 31 22 21 12 11 0 ¾ 地址变换 ¾ 多级页表结构 操 作 系 统 | 存 储 器 管 理 50 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 51 CUIT 徐虹 ¾反置页表 ¾原理 ¾在每个物理块内设置一个表项:页号及进 程标识符。 ¾为每个进程建立一个外部页表,当访问页 不在内存时,才访问外部页表。 ¾地址变换 ¾特点 操 作 系 统 | 存 储 器 管 理 52 CUIT 徐虹 ¾分页存储管理方案的评价 ¾优点 ¾有效解决存储器的零头问题,能在更高 的程度上进行多道程序设计,从而相应 提高了存储器和CPU 的利用率。 ¾缺点 ¾采用动态地址变换为增加计算机成本和 降低CPU 的速度。 ¾表格占内存空间,费时来管理表格。 ¾存在页内碎片。 ¾作业动态的地址空间受内存容量限制。 操 作 系 统 | 存 储 器 管 理 53 CUIT 徐虹 5.6 分段存储管理 分段存储管理:方便编程、分段共享、分段保 护、动态链接和动态增长。 ¾基本思想 把程序按内容或过程(函数)关系分成 段,每段有自己的名字。段式管理程序 以段为单位分配内存,然后通过地址映 射机构把段式虚地址转换成实际的内存 物理地址。 操 作 系 统 | 存 储 器 管 理 54 CUIT 徐虹 ¾实现原理 ¾段式虚存空间 ¾进程的虚地址空间为二维的,段长不固定, 每个段定义一组逻辑上完整的程序或数据。 段号S 段内地址W 31 16 15 0 例: CALL [X] | (Y) LOAD 1,[A] | 6 STORE 1,[B] | (C)
内存的分配和回收 内存的分配 Segment Tahle Entry 内存中有足够的空闲区满足该段的要求 作系统存储器 分法:最先适应算法:最佳适应:最 坏适应算法 (b) Segmentation only 不瀹足 所有空闲区之和是否满足,如清足则合并 内存的回收 Typical Memory Management Formats 段式管理的地址变换 段的共享与保护 一段表( Segment Mapping Table) 段号始址 长皮 存取方式 使用相同的段名,量适当的轴写控制 动态地址变换 共享段的保护与淘汰 当进程执行时,管理程序把其段衰始址和段 保护措施 我长度放入段表寄存器中,以段号为引查 存取保护 对内存二次以上访问,可采用高遠联想寄存 环保护机构 >性能评价 优点 便于程序模块化处理和处理变化的数据结构。 便于共享分段 便于动态链接 缺点 地址变换费时,管理夜格,硬件支持,使O 增长和减少碎片,要用拼接 一段长不定,管理困难;段长受内存可用区的
10 操 作 系 统 | 存 储 器 管 理 55 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 56 CUIT 徐虹 ¾内存的分配和回收 ¾内存的分配 ¾内存中有足够的空闲区满足该段的要求 分配算法:最先适应算法;最佳适应;最 坏适应算法。 ¾不满足 所有空闲区之和是否满足,如满足则合并。 ¾内存的回收 操 作 系 统 | 存 储 器 管 理 57 CUIT 徐虹 ¾段式管理的地址变换 ¾段表(Segment Mapping Table) 段号 始址 长度 存取方式 ¾动态地址变换 ¾当进程执行时,管理程序把其段表始址和段 表长度放入段表寄存器中,以段号为索引,查 段表。 ¾对内存二次以上访问,可采用高速联想寄存 器,加快查找速度。 操 作 系 统 | 存 储 器 管 理 58 CUIT 徐虹 ¾段的共享与保护 ¾共享 ¾使用相同的段名,置适当的续写控制 ¾共享段的保护与淘汰 ¾保护措施 ¾越界保护 ¾存取保护 ¾环保护机构 操 作 系 统 | 存 储 器 管 理 59 CUIT 徐虹 操 作 系 统 | 存 储 器 管 理 60 CUIT 徐虹 ¾性能评价 ¾优点 ¾便于程序模块化处理和处理变化的数据结构。 ¾便于共享分段 ¾便于动态链接。 ¾缺点 ¾地址变换费时,管理表格,硬件支持,使OS 复杂。 ¾为满足段的动态增长和减少碎片,要用拼接 技术。 ¾段长不定,管理困难;段长受内存可用区的 限制