操作系统C 第4章 存储器管理1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18
4.3 连续分配方式
• 连续分配方式:是指为一个用户程序分 配一个连续的内存空间。 • 连续分配包括:单一连续分配、固定分 区分配、动态分区分配、动态重定位分 区分配。
19
4.3.1 单一连续分配
又叫单用户连续分配,内存分系统区和 用户区,用于单用户单任务操作系统。
20
4.3.2 固定分区分配
5
4.1.3 高速缓存器(Cache)和磁盘缓存
1.高速缓存 • Cache由硬件寄存器构成,CPU可直接存取其中 的信息,存取速度远大于内存,Cache直接做在 CPU中。 2.磁盘缓存 利用主存储器空间暂存从磁盘中读出或写入的 信息,减少访问磁盘的次数。
6
4.2 程序的装入和链接
用户程序的主要处理阶段:
内存的分配(图4-6)与回收(图4-7)
30
4.3.6 可重定位分区分配
1 动态重定位的引入
由于内存零头或碎片存在,会使大的作业不 能装入,因此要拼接或紧凑这些碎片形成一 个大的存储空间(图4-8),在此过程中需 要对已经装入的用户程序进行移动,即对用 户程序的地址重定位。
31
2 动态重定位的实现
9
逻辑地址(相对地址):用户程序经编译之后的 地址,一般情况下,每个目标模块都以0为基地 址顺序编址。 绝对地址(物理地址):内存中各物理存储单元 的地址,是从统一的基地址顺序编址。
10
2.可重定位装入(图4-2)方式
• 程序和数据装入内存时需对装入模块中的地址 进行修改,这种把逻辑地址转变为内存物理地 址的过程叫地址重定位。 • 又因为地址变换通常是在装入时一次完成的, 以后不再修改,所以又叫静态重定位。
第四章 存储器管理
1 2 3 4 5 6 7 8 9 ( ) 存储器的层次结构 程序的装入和链接 连续分配方式 基本分页存储管理方式 基本分段存储管理方式 虚拟存储器的基本概念 请求分页式存储管理方式 页面置换算法 请求分段式存储管理方式
1
4.1 存储器的层次结构
在理想情况下,存储器应该:速度快、容 量大、价格便宜。 4.1.1多级存储结构
• 分区管理是能够满足多道程序运行的最简 单的存储管理方案。
• 分区分配的基本思想是把内存划分成若干 个连续区域,每个分区装入一个运行程序。 • 分区分配可归纳成固定分区和可变分区。
21
4.3.2 固定分区分配
固定分区分配的基本思想:将内存用户 空间划分为若干个固定大小区域,一旦 划分好,在运行期间不再重新划分。每 个分区装入一个作业。 • 划分分区的方法:分区大小相等;分区 大小不等: • 内存分配:分区使用表(图4-4)包括分 区的起始地址,大小,状态
41
练习题 4
• 动态重定位的方式有哪几种? ① 连续分配方式下的重定位 ② 离散分配方式下的重定位
42
练习题 5
• 内存保护是否可以完全由软件来实现? 为什么?
43
练习题 6
• 整体对换是否将整个进程换出?能否说 “整体对换从逻辑上也扩充了内存,整 体对换实现了虚拟存储器功能”?
44
45
46
27
4)最坏适应算法: • 空闲分区按容量由大到小排列成一个空 闲分区链,选一个最大的空闲分区分配 给作业使用。 • 不会形成太多的不可用的小分区,但缺 少大的分区。
28
5)快速适应算法
• 按照空闲分区的大小进行分类,形成多 个空闲分区链,另设一张管理索引表 • 属于分类搜索法
29
3 分区分配操作
36
总结
• 存储器的层次 • 程序的装入和链接 • 连续分配方式
37
练习题 1
• 某系统采用动态分区分配方式管理内存, 内存空间640k,高端40k存放操作系统。在 内存分配时优先使用低端空间,对下列请 求序列,分别绘图表示首次适应算法和最 佳适应算法进行内存分配和回收后内存的 使用情况
38
• • • • •
13
2 装入时动态链接 目标模块边装入边链接。 • 装入时动态链接的优点: ① 便于修改和更新 ② 便于实现目标模块的共享
14
3 运行时动态链接 只链接需要运行的模块,加快程序的装入, 提高内存利用率
思考:三种程序的装入和链接方式的优缺 点比较。
15
答 案
• 绝对装入:不需要地址转换,但只适用于 单道程序处理环境。 • 可重定位装入:地址变换通常在装入时一 次完成,但不允许程序运行时移动位置。 • 动态运行时装入:在装入时不进行地址转 换,在运行时动态的转换,需要硬件的支 持。
作业1申Fra Baidu bibliotek130K 作业2申请60K 作业3申请100K 作业2释放60K 作业4申请200K
• • • • • •
作业3释放100K 作业1释放130K 作业5申请140K 作业6申请60K 作业7申请50K 作业6释放60K
操作
首次适应
已分配分区 (作业 始址 大小) 空闲分区 (作业 始址 大小)
25
2)循环首次适应算法:
• 从上次找到的空闲分区开始向下找,直到找到 一个大小能够满足要求的分区为止。 • 采用循环查找方式 • 该方法使内存中的空闲分区分布更均匀,减少 了查找空闲分区的开销,但会使内存缺乏大的 空闲分区。
26
3)最佳适应算法: • 空闲分区按照由小到大顺序形成一个空 闲分区链,每次为作业分配内存时,总 是把能够满足要求、又是最小的空闲分 区分配给作业,避免大材小用。 • 该算法产生小的空闲区
1) 2) 3) 4) 5) 编辑阶段—创建源文件 编译阶段—生成目标文件(目标模块) 连接阶段—生成可执行文件(装入模块) 装入阶段—地址重定位,装入内存 运行阶段—得到结果
7
用户程序处理的三个步骤(图4-1):
编译—链接—装入
8
4.2.1 程序的装入
1.绝对装入方式
程序逻辑地址与内存中绝对地址相同,即 编译时生成的目标模块使用的地址与装入 内存的地址一致。
最佳适应
39
练习题2
存储器管理的基本任务?
• 为多道程序的并发执行提供良好的存储器环境, 具体包括: 各得其所,独立运行 实现虚拟存储器,为用户提供大的存储空间 为用户对信息的使用提供方便 使存储器有较高的利用率
① ② ③ ④
40
练习题 3
• 在什么情况下需要进行重定位?为什么 引入动态重定位?
47
48
49
50
51
52
53
54
16
• 静态链接:实现简单,但程序模块的修改 和更新难,不易实现共享。 • 装入时动态链接:便于对程序模块进行修 改和更新,并且可以对目标模块共享。 • 运行时动态链接:便于修改和更新,实现 共享,还可以加速装入,提高内存的利用 率。
17
知识回顾
• 什么叫做逻辑地址,什么叫做物理地址? • 程序的装入方式有三种,分别是什么? • 程序的链接方式有三种,分别是什么?
34
2 对换空间的管理 • 将外存分为文件区和交换区 • 文件区存放长期保存的文件,采用离散分 配,目的就是提高文件存储器的利用率。 • 交换区存放频繁换入换出的进程,采用连 续分配,目标是提高换入换出速度。
35
3 进程的换入和换出 • 换出过程:处于阻塞且优先级最低为换出 进程 • 换入过程:处于就绪状态但已换出的进程
23
1 分区分配中的数据结构
已分配分区表: 分区序号、分区始地址、大小、状态标志 空闲分区表: 分区序号、分区始地址、大小、状态标志 空闲分区链(图4-5):双向链接
空闲分 区的两 种形式
24
2 分区分配算法
1)首次适应算法FF:
• 空闲分区以地址递增的顺序排列,从头开始找 到一个大小能够满足要求的分区为止。 • 该算法首先利用内存中低址部分的空闲分区。 • 低址部分不断被划分,留下了难以利用的小的 空闲分区。 • 每次查找都从低址部分开始,增加了查找空闲 分区的时间开销。
11
3.动态运行时装入方式
装入程序把装入模块装入内存后,并不立即将 相对地址转换成绝对地址,而是把地址转换推 迟到程序执行时才进行。
12
4.2.2 程序的链接
1 静态链接方式(图4-3)
程序运行之前链接目标模块和需要的库函数,以 后不再拆开。 • 静态链接必须解决两个问题: ① 相对地址进行修改 ② 变换外部调用符
22
4.3.3 动态分区分配(可变分区分配)
• 为了解决内存浪费问题,系统不预先划分固 定分区,而是在装入程序时为各作业分配其 大小恰好适应作业大小的空间,且分区的个 数是可变的。 • 根据进程的需要,动态的分配内存空间。
• 在实际分配中涉及到:分区分配所用的数据 结构、分区分配算法、分区的分配和回收工 作。
CPU寄存器
主存
辅存
寄存器 高速缓存 主存 磁盘缓存 磁盘 移动存储介质
2
特点:
• 存储层次中越往上,存储介质的访问速度越快、存储容 量越小、价格越昂贵。
• 其中,寄存器、高速缓存、主存、磁盘缓存属于存储器 管理的范畴,掉电后存储信息不存在。磁盘和移动存储 介质属于设备管理范畴,信息长期保存。 • 寄存器和主存储器有叫做可执行存储器,存储的信息可 使用load或store指令进行访问;而对辅存的访问需要 中断、设备驱动程序、设备的运行。
• 在动态运行时装入方式中,作业装入内 存后所有的地址仍然是相对地址,将相 对地址转换成物理地址的工作推迟到程 序执行时进行。为了不影响指令的执行 速度,必须由硬件地址变换机构支持 (图4-9)
32
3 动态重定位分区分配操作
动态重定位分区分配操作与动态分区分 操作法基本相同,差别在于增加了紧凑 功能,(图4-10)
3
4.1.2 主存储器与寄存器
1 主存储器:是指CPU能直接存取指令和数据的 存储器。CPU和I/O系统都要和内存打交道, 对内存的访问是通过一系列对指定地址单元进 行读或写来实现的。
CPU
内存
I/O系统
外 设
4
2. 寄存器
• 寄存器访问速度最快,完全能够与CPU 协作,价格昂贵。 • 长度一般以字为单位 • 用于加速存储器的访问速度。
33
4.3.7 对换
1 对换的引入
• 所谓“对换”是指把内存中暂时不能运行的进 程或暂时不用的程序或数据调出到外存,腾出 空间,再把外存上具备运行条件的进程或数据 调入内存。即内存与外存数据交换。 • 整体对换(进程对换):提高内存利用率,解决 内存紧张问题。 • 部分对换(页面对换,分段对换):支持虚拟 存储器系统