3.分区的分配与释放 ·每个分区设置一个后备作业队列 分区空闲时,若它的队列非空,就把该分区分配给队列的第一个作业使用;作业 运行完毕,收回该分区,进行下一次分配。 ·多个分区只设置一个后备作业队列 在任何一个分区释放时,就根据分配方案从该队列里挑选一个作业装入运行。 4.地址重定位与存储保护 0 低界限寄存器 地址重定位 操作系统 a 在固定分区存储管理中,实行静态重定位。 作业1 ▣存储保护 第1分区+ 高界限寄存器 在固定分区存储管理中,要防止用户程序对操 b 作系统的侵扰,也要防止用户程序间的侵扰。因此 第2分区→ 作业2 CPU 设置一对专用寄存器:“低界限寄存器”和“高界 限寄存器”,用于存储保护。 5.固定分区存储管理的特点与缺点 第3分区 作业3 。是最简单的、具有“多道”色彩的存储管理方案。 ·作业程序一次性全部装入分配给它的连续分区。 ,会产生内部碎片,引起内存资源的浪费。 。实行的是静态重定位。 。作业尺寸比任何一个分区的长度都大时,就无法运行
作业尺寸比任何一个分区的长度都大时,就无法运行。 . . 3. 分区的分配与释放 . 分区空闲时,若它的队列非空,就把该分区分配给队列的第一个作业使用;作业 运行完毕,收回该分区,进行下一次分配。 每个分区设置一个后备作业队列 多个分区只设置一个后备作业队列 在任何一个分区释放时,就根据分配方案从该队列里挑选一个作业装入运行。 4. 地址重定位与存储保护 在固定分区存储管理中,实行静态重定位。 . 在固定分区存储管理中,要防止用户程序对操 作系统的侵扰,也要防止用户程序间的侵扰。因此 设置一对专用寄存器:“低界限寄存器”和“高界 限寄存器” ,用于存储保护 。 地址重定位 存储保护 0 a b c d a b 作业1 作业2 作业3 第1分区 第2分区 第3分区 操作系统 低界限寄存器 高界限寄存器 CPU 5. 固定分区存储管理的特点与缺点 . 是最简单的、具有“多道”色彩的存储管理方案。 . 作业程序一次性全部装入分配给它的连续分区。 . . 实行的是静态重定位。 . 会产生内部碎片,引起内存资源的浪费
3.3可变分区存储管理 33.1可变分区存储管理的基本思想 。 1.基本思想 内存 内存 内存 内存 在作业要求装入内存时,若当时内存中有 操作系统 操作系统 操作系统 操作系统 足够的存储空间满足该作业的需求,那就划分 作业A 作业A 作业A 出一个与作业相对地址空间同样大小的分区分 (15KB) (15KB) (15KB) 配给它使用。 作业C 作业B 作业A 作业B 作业B 2.内、外部碎片 (10KB) (20KB) (15KB) 空闲区 (20KB) (20KB) 空闲区 ·内部碎片:存储管理中,把分配给了用户 作业C 而用户未用的存储区称为“内部碎片”。 空闲区 (10KB) 。外部碎片:存储管理中,把那些无法分配 空闲区 出去满足作业存储请求的空闲区称为“外部碎片” 3.实施可变分区存储管理要解决的三个问题 ·采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证, ,记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空 闲区。若是空闲区,就进行合并,形成一个大的空闲区。 ·给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个
外部碎片:存储管理中,把那些无法分配 出去满足作业存储请求的空闲区称为“外部碎片”。 • 3.3.1 可变分区存储管理的基本思想 3.3 可变分区存储管理 1. 基本思想 2. 内、外部碎片 在作业要求装入内存时,若当时内存中有 足够的存储空间满足该作业的需求,那就划分 出一个与作业相对地址空间同样大小的分区分 配给它使用。 操作系统 空闲区 作业A (15KB) 作业B (20KB) 作业C (10KB) 内存 操作系统 空闲区 作业A (15KB) 作业B (20KB) 内存 操作系统 空闲区 作业A (15KB) 内存 操作系统 空闲区 作业A (15KB) 内存 作业B (20KB) 作业C (10KB) . . 内部碎片:存储管理中,把分配给了用户 而用户未用的存储区称为“内部碎片”。 3. 实施可变分区存储管理要解决的三个问题 . 采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证; . 记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空 闲区。若是空闲区,就进行合并,形成一个大的空闲区。 . 给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个
。3.3.2地址的动态重定位 1.基本思想 内存 定位寄存器 用户作业A的 操作系统 把相对地址空间中的用户作 相对地址空间 20KB 22KB 业程序“原封不动”地装入到分 100 XXXXXX 22KB 22528 配给它的绝对地址空间中去。执 22KB+100 XXXXXX 行某条指令时,才根据当前程序 1KB 22628 所在区域,对指令中的地址进行 23KB 重定位。即指令中地址的转换是 2KB 在程序执行时动态完成的,故称 24KB 为地址的“动态重定位” 3000 call 100 2.静态和动态重定位的比较 3KB 22KB+3000 call 100 25KB ·静态重定位是在程序运行之前完成地址转换的;动 态重定位却是将地址转换的时刻推迟到指令执行时进行。 。静态重定位是由软件完成地址转换工作的:动态重定位则由一套硬件提供的地址 转换机构来完成。 ■ 静态重定位是在装入时一次集中地把程序指令中所有要转换的地址全部加以转 换;而动态重定位则是每执行一条指令时,对其地址加以转换。 。实行静态重定位,原来的指令地址部分被修改了;实行动态重定位,只是按照所 形成的地址去执行这条指令,并不对指令本身做任何修改
. 静态重定位是在程序运行之前完成地址转换的;动 态重定位却是将地址转换的时刻推迟到指令执行时进行。 实行静态重定位,原来的指令地址部分被修改了;实行动态重定位,只是按照所 形成的地址去执行这条指令,并不对指令本身做任何修改。 静态重定位是在装入时一次集中地把程序指令中所有要转换的地址全部加以转 换;而动态重定位则是每执行一条指令时,对其地址加以转换。 静态重定位是由软件完成地址转换工作的;动态重定位则由一套硬件提供的地址 转换机构来完成。 1. 基本思想 2. 静态和动态重定位的比较 • 3.3.2 地址的动态重定位 把相对地址空间中的用户作 业程序“原封不动” 地装入到分 配给它的绝对地址空间中去。执 行某条指令时,才根据当前程序 所在区域,对指令中的地址进行 重定位。即指令中地址的转换是 在程序执行时动态完成的,故称 为地址的“动态重定位”。 0 用户作业A的 相对地址空间 100 XXXXXX 1KB 2KB 3000 call 100 3KB 0 22KB+100 XXXXXX 23KB 24KB 22KB+3000 call 100 25KB 20KB 22KB 22KB 定位寄存器 22628 22528 操作系统 内存 . .
3.3.3 空闲区的合并 1.前后相邻接分区的四种关系 释放分区的前、后邻接分区都 是已分配区,没有合并的问题存在。 已分配区 空闲区 已分配区 空闲区 ·释放分区的前邻接分区是空闲 区,后邻接分区是已分配区。释放区 应该和前邻接的空闲区合并成一个新 释放分区 释放分区 释放分区 释放分区 的空闲区。 。释放区的前邻接分区是已分配 已分配区 已分配区 空闲区 空闲区 区,后邻接分区是空闲区。因此,释 放分区应该和后邻接的空闲区合并成 一个新的空闲区。 ·释放区的前、后邻接分区都是空闲区。因此,释放区应该和前、后两个邻接的空 闲区合并成一个新的空闲区。 2.空闲分区合并的时机 ·是调度到某作业时,若系统的每个空闲区尺寸都小于它的需要,但空闲区总存 储量大于它的存储请求,于是进行空闲区合并,得到一个大的空闲区,满足该作业的 需要;一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并
一是调度到某作业时,若系统的每个空闲区尺寸都小于它的需要,但空闲区总存 储量大于它的存储请求,于是进行空闲区合并,得到一个大的空闲区,满足该作业的 需要;一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并。 释放区的前、后邻接分区都是空闲区。因此,释放区应该和前、后两个邻接的空 闲区合并成一个新的空闲区。 释放区的前邻接分区是已分配 区,后邻接分区是空闲区。因此,释 放分区应该和后邻接的空闲区合并成 一个新的空闲区。 释放分区的前邻接分区是空闲 区,后邻接分区是已分配区。释放区 应该和前邻接的空闲区合并成一个新 的空闲区。 释放分区的前、后邻接分区都 是已分配区,没有合并的问题存在。 • 3.3.3 空闲区的合并 1. 前后相邻接分区的四种关系 2. 空闲分区合并的时机 已分配区 空闲区 释放分区 空闲区 已分配区 释放分区 空闲区 空闲区 释放分区 已分配区 已分配区 释放分区 . . .
。3.3.4分区的管理与组织方式 1.表格法 。设置两张表:“已分配表”和“空闲区表”。其中“序号”是表目项的顺序号, “起始地址”、“尺寸”、“状态” 都是森分 序号 起始地址 尺寸 状态 区的相应属性。由于系统中分 操作系统 20KB 空 区的数目是变化的,因此每张 空闲区(8KB) 2 28KB 32KB 作业B 表格中的表目项数要足够的多 3 空 28KB 暂时不用的表目项的状态被设 4 92KB 120KB 业D 作业B32KB) 为“空” 空 60KB 已分配表 。作业提出存储需求时,查 空闲区(32KB) 空闲区表里状态为“空闲”的表KB 序号 起始地址 尺寸 状态 目项。若该项的尺寸能满足所 作业DI20KB 20KB 8KB 空闲 212KB 2 60KB 32KB 作业B 求,就将它一分为二:分配出 空闲区(300KB) 3 212KB 300KB 空 去的那部分在已分配表里找 4 作业D 个状态为“空”的表目项进行登K 空 记,剩下的部分仍在空闲区表里占据一个表目项。 空闲区表 ·若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的“状 态”改为“空”,随之在空闲区表里寻找一个状态为“空”的表目项,把释放分区的 信息填入,并将表目项状态改为“空闲
若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的 “状 态”改为“空”,随之在空闲区表里寻找一个状态为“空”的表目项,把释放分区的 信息填入,并将表目项状态改为“空闲”。 作业提出存储需求时,查 空闲区表里状态为“空闲”的表 目项。若该项的尺寸能满足所 求,就将它一分为二:分配出 去的那部分在已分配表里找一 个状态为“空” 的表目项进行登 记,剩下的部分仍在空闲区表里占据一个表目项。 • 3.3.4 分区的管理与组织方式 1. 表格法 设置两张表:“已分配表”和“空闲区表”。其中“序号”是表目项的顺序号, “起始地址”、“尺寸”、“状态” 都是该分 区的相应属性。由于系统中分 区的数目是变化的,因此每张 表格中的表目项数要足够的多, 暂时不用的表目项的状态被设 为“空”。 内存 操作系统 空闲区(8KB) 作业B(32KB) 空闲区(32KB) 作业D(120KB) 空闲区(300KB) 序号 起始地址 尺寸 状态 1 2 3 4 5 0 20KB 28KB 60KB 92KB 212KB 512KB 28KB 32KB 作业B 空 空 空 92KB 120KB 作业D — — — — — — 序号 起始地址 尺寸 状态 1 2 3 4 5 60KB 32KB 作业B 空闲 空 空 — — 作业D 20KB 8KB 212KB 300KB — — 已分配表 空闲区表 . .