第5章 存储管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
地址转换:作业逻辑地址到物理地址的转换,又称 为重定位。
地址空间 主存的存储空间 0 K 目标 程序
0
目标
程序
n
K+n
图 一个作业的地址空间和存储空间
源程序
目标程序
可执行代码
名地址
逻辑地址 相对地址 虚拟地址
物理地址 绝对地址 实地址
● 5.1程序的装入与链接 ●编译
源代码——目标代码
●链接
A B A B A C A C
操作系统
A(4k)
D E F
பைடு நூலகம்
固定区(4k)
覆盖区(6k) B(6k) C(4k)
覆盖区(10k)
F(8k)
D(6k)
E(10k)
交换 基本思想:将处于等待状态(等I/O结束)或就绪 (等CPU)状态的作业从主存换出到辅存,把将要 执行的进程移入主存。 交换的要求:必须在系统空间设立I/O缓冲 区,否则正I/O作业不能移出。 交换要花费较长的时间。
F1 回收区 F2
(a)
(b)
(c)
●回收分区与前面一个(低地址)空闲分区F1相邻接,图(a) ●回收分区与后面一个(高地址)空闲分区F2相邻接,图(b) ●回收分区与前、后两个空闲分区F1和F2均相邻,图(c) ●回收分区不与其它空闲分区相邻接
练习
1.分区管理要求每一个作业都分配( 单元。 A B C D 地址连续 若干地址不连续 若干连续的块 若干不连续块 )的内存
可重定位分区分配
内存紧凑 :把系统中小的、离散的分区合并成一 个大的分区的过程。
16K 16K 78K
用户程序3
24K 用户程序8
用户程序3
62K
30K 用户程序5
8K 用户程序1 操作系统 (a)初始状态
用户程序3 用户程序8 用户程序5 用户程序1 操作系统 (b)完全紧凑 用户程序8 用户程序5 用户程序1 操作系统 (c)部分紧凑
重定位寄存器 1000 相对地址 1500 0
0
1000 1500 LOAD 1,1500
500
LOAD 1,1500
1500
12345
+
2500 3000
12345
2000 某程序的地址空间
~ ~
内存空间
~ ~
在程序执行期间,随着每条指令和 数据的访问自动地连续地进行地址 映射。
程序的链接
0 模块A 0 模块A
对应关系,结果是一个不能浮动的程序模块,其程 序地址就是物理地址。
静态重定位示意图
静态重定位:
编译时产生相对地址,装入程序确定要装入模块的地址,并 在装入时进行重定位,程序运行中不允许在内存移动。
0 0 1000 500 LOAD 1,1500 1500 LOAD 1,2500
1500 12345
CALL B; L-1 0 return; 模块B L-1 L
jump "L"; return; 模块B jump"L+M" L+M-1 L+M
CALL C; M-1 return; 模块C
return 模块C
0
L+M+N-1
return
N-1
return;
程序的链接方式
●静态链接
– 对相对地址进行修改 – 变换外部调用符号
基地址寄存器 主存
<
+
程序性异常
存储碎片
内部碎片:内存某存储区间大于其存放作 业空间的部分。 外部碎片:内存某存储区间容不下要运行 的作业时。
作业长度:5K、8K、12K OS 3K OS
4k
外部碎片 内部碎片
4k 6k
12k
12k
固定分区
操作系统 8M 分区号 大小 首址 状态 1 2 3 4 5 4M 8M 8M 12M 16M 8M 12M 20M 28M 40M 1 1 0 1 0 进程C 12M 空闲 8M 进程A 4M 进程B 8M
– 连接成循环链,为进程分配存储空间时, – 释放时,因不改变该区在队列中的位置,因 空闲分区链以存储空间大小递增的次序 此速度快。 不是从队首开始找,而是从上次找到的 条件 拉链。 空闲空间的下一个空闲分区开始找。 – 保证高地址有空闲空间,可留给大作业。 – 空闲分区链以存储空间大小递减的次序 优点 拉链。 优点 缺点 最佳适应法 – 若存储空间中存在与申请大小相等的空 – 优点 – 存储空间利用均衡。 常用大空闲区适应小作业,从而留下小空闲 闲区,则必然被选中,否则选一个稍大 的空闲区,而避免毁掉更大的空闲区。 – 区,且这些小空闲区在链表的前面,影响分 分配后,剩下的空闲区还好用。 缺点 配速度。 – 申请时,查找容易,因此速度快。 缺点 没有了较大空闲空间,使大作业无法运 – 行。 小碎片增加——碎片问题严重。 缺点 最坏适应法 – 回收时,将空闲区插入适当的位置费时。 当有大作业时,可能就没有空间可用了。
●连续分配
指为一个用户程序分配一个连续的内存空间。
●单一连续分配 ●固定分区分配
●可变分区分配
单一连续分配
0xFF 0xFF 位于ROM中 操作系统 用户程序 0xFF 位于ROM中 驱动程序 用户程序 位于RAM中 操作系统 (c)
用户程序 位于RAM中 操作系统 (a)
0
0 (b)
0
●应用范围:单用户、单任务操作系统。如:CP/M、DOS2.0
●方法
分区在系统启动后划分 好,以后不能改变。
●应用范围:
多道程序设计系统最简 单的一种方式。如:60 年代的IBM360上的 MFT。
●划分分区方法
– 分区大小相等
(a)分区说明表
~ ~
空闲16M
~ ~
– 分区大小不等
●缺点
(b)内存空间分配情况
– 内存利用率低
分区可变
操作系统8MB 操作系统8MB 进程1 空闲 56MB 空闲 36MB 空闲 (a)初始状态 操作系统8MB 进程1 空闲 进程3 空闲 20MB 14MB 18MB 4MB (b)进程1装入 操作系统8MB 进程1 进程4 空闲 进程3 空闲 20MB 8MB 6MB 18MB 4MB 22MB 20MB 操作系统8MB 进程1 进程2 20MB 14MB 操作系统8MB 进程1 进程2 进程3 空闲 (c)进程2装入 操作系统8MB 空闲 20MB 20MB 14MB 18MB 4MB
●装入时动态链接
– 在装入内存时,边装入边链接 便于软件版本的修改和更新 便于实现目标模块共享
●运行时动态链接
– 运行时,用到哪个模块,再链接哪个模块,用不到的模块可 不装入内存。
练习
1.在作业空间使用的逻辑地址变为内存中物理地 址称为( )。 A B C D 加载 重定位 物理化 逻辑化
特点:任一时刻内存可有多道作业,每道作 业连续存放于内存. 空间划分及保护
操作系统
U1
用 户 空 间
...
Un
地址访问保护有两种方式:
1.上下界寄存器和地址检查机制。当作业被调度运行 时,作业在内存中的上下界地址送上下界寄存器,在 用户态每次执行访存指令时,地址检查机构作越界检 查。作业程序要是绝对地址或静态可浮动的。
界地址寄存器 地址A A> a? true 主存
cpu
0
a+1
false
操作系统
a
报异常,终止程序运行
用户程序 n
覆盖(overlap)
因内存小于作业的程序空间而引入覆盖。 将用户空间划分成一个固定区和多个覆盖区。主程序放 固定区,依次调用的子程序则放在同一个覆盖区。操作 系统提供覆盖系统调用函数,由用户编程序显式调用。
练习
6.给定存储器的划分,依次为 100KB,450KB,250KB,300KB,600KB现有四个进程 分别依次为:212KB,417KB,112KB,426KB。为了 在给定的存储空间安置进程,现有四种算法, 首次适应算法,最佳适应算法,最坏适应算法 下次适应算法。在这四种算法中,哪一种算法 更能充分利用存储空间。
37/19
可重定位分区分配
0 … 重定位寄存器 1000 … 1100 LOAD A 200 200 相对地址 0
100
+
LOAD A 200 …
…
200
3465
3465
…
1200
…
300 逻辑地址空间
1300
物理地址空间
…
动态重定位示意图
38/19
离散分配方式的引入
分区分配方式有很多不足,首先会产生很多 碎片,其次要求一段较大并且连续的空间。 针
练习
2.为了保证一个程序在主存中改变了存放位置之 后仍能正确执行的,则对主存空间应采用( ) 技术。
A B C D
静态重定位 动态重定位 动态分配 静态分配
练习
3.经过( ),目标程序可以不经过任何改动而 装入物理内存单元。 A B C D 静态重定位 动态重定位 编译或汇编 存储扩充
●
5.2连续分配存储管理方式
●动态分区分配数据结构
– 空闲分区表 – 空闲分区链 ●动态分区分配算法 – 首次适应法 – 下次适应法 – 最佳适应法 – 最坏适应法 ●动态分区的分配和回收操作
可变分区分配算法
首次适应法
条件
– 空闲分区链以存储空间地址递增的次序链接。
条件 优点 条件 – 空闲分区链以存储空间地址递增的次序
(d)进程3装入 操作系统8MB 进程5 空闲 14MB 6MB
进程4 8MB 空闲 6MB 进程3 空闲 18MB 4MB
进程4 8MB 空闲 6MB 进程3 空闲 18MB 4MB
(e)进程2退出
(f)进程4装入
(g)进程1退出
(h)进程5装入
●方法
分区的大小和个数随系统的运行而不断改变
可变分区
A B C D
7MB 9MB 10MB 15MB
练习
5.在可变分区存储管理中,某作业完成后要收回 其主存空间,该空间可能要与相邻空闲区合并。 在修改未分配区表时,使空闲区个数不变且空 闲区始址不变的情况是( )空闲区。 A.无上邻也无下邻 B.无上邻但有下邻 C.有上邻也有下邻 D.有上邻但无下邻
第5章 存储管理
●程序的装入和链接
本章要点
●连续分配存储管理方式
●页式存储管理 ●段式存储管理 ●段页式存储管理
地址空间:程序编译时还没有装入主存,还不能
确定它在主存中的实际位置,所以都是从0开始。
相对于0位置开始的地址称为逻辑地址,也称为
相对地址。地址空间是指逻辑地址的集合。
存储空间:一个程序在主存中的实际位置称为物 理地址。物理地址的集合就是存储空间。
目标代码+所需库函数=装入模块
●装入
将装入模块装入内存,该过程也叫做地址重定位,也称地址映射
内存
库
编译程序产 生的目标模 块
…
链接 程序
装入模块
装入 程序
第一步
第二步
第三步
程序的装入方式
●重定位(地址映射):
把用户程序中的相对地址(逻辑地址)转换为主存 中的绝对地址(物理地址)过程。
在程序编写或程序编译时确定虚、实地址之间的
以下。 ●操作系统的任务就是将系统程序和用户程序分开。 ●方法:用基址-限长寄存器。
特点:任一时刻内存只有一道作业,该 作业连续存放于内存中。
空间划分与保护 内存空间安排
界地址寄存器
n 0
a+1
a
操作系统
用户程序
越界检查机制:当用户态时每次执行访存指令, 硬件越界检查机构将访问的地址与界地址寄存器 中的值比较。若越界,则终止其执行。
2500 3000
12345
2000 某程序的地址空间
~ ~
内存空间
~ ~
程序无法在主存中移动,当从辅存 中调入主存时必须放到同一位置。
动态重定位示意图
动态重定位
编译时产生相对地址,装入程序在把装入模块装入内存时,不 立即把装入模块中的相对地址转换为绝对地址,而是推迟到程 序要真正执行时才进行重定位。
下次适应法
例:
0K 15K 38K 48K 54K 60K 75K 80K
空闲区表
始址 15K 长度 23K 标志 未分配
48K
60K 80K
6K
15K 130K
未分配
未分配
作业序列: P1,3K、 P2,20K、 P3,10K、
210K
220K
P4,100K。
29/19
可变分区内存的回收
F1 回收区 回收区 F2
上界寄存器 CPU
下界寄存器
地址A
> F
True
< F
True
主存
程序性异常
2.基址寄存器、长度寄存器和动态地址转换机制。当 作业被调度运行时,将作业所占内存基址及长度送基 址、长度寄存器,在用户态每次执行访存指令时,先 看访问地址是否小于长度,然后+基址进行访存。用户 程序代码是动态浮动的。
长度寄存器 CPU 地址A True F
练习
2.在固定分区分配中,每个分区的大小是( A B C D 相同 随作业长度变化 可以不同但预先固定 可以不同但随作业长度变化 )。
练习
3.分区分配内存管理方式的主要保护措施是 ( ). A B C D 界地址保护 程序代码保护 数据保护 栈保护
练习
4.某基于动态分区存储管理的计算机,其主存容量 为55MB(初始为空),采用最佳适配算法,分配和 释放的顺序为:分配15MB,分配30MB,回收15MB, 分配8MB,分配6MB,此时主存中最大的空闲分区 是( )。