计算机操作系统第四章 存储器管理(1-2)要点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1.2
程序的链接
1. 静态链接方式 (Static Linking)
名空间
链接前, 0 每个模 块都有 L- 1 各自的 相对起 0 始地址 0
M- 1 0 N- 1
模块 A CALL B ; Return ; 模块 B CALL C ; Return ; 模块 C Return ; (a ) 目标模块
链接 装入 连续或不连续分 配 静态重定位 或动态重定位 连续 均可 一般不连续 静态链接 装入时动态链接 运行时动态链接
均可
均可
动态重定位
第四章 存 储 器 管 理
4.2
4.2.1 单一连续分配
连续分配方式
OS
特征:最简单的一种存储管理方 式,但只能用于单用户、单任务 的操作系统中;常把内存分为系 统区和用户区两部分,系统区仅 提供给 OS 使用,通常是放在内
第四章 存 储 器 管 理
3. 运行时动态链接(Run-time Dynamic Linking) 动态链接方式:将对某些模块的链接推迟到执行时才实施, 亦即,在执行过程中,当发现一个被调用模块尚未装 入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。特点如下: 特点:凡在执行过程中未被用到的目标模块,都不会被调 入内存和被链接到装入模块上,这样不仅可加快程序 的装入过程,而且可节省大量的内存空间。
动态运行时装方式:
• 装入内存后的所有地址都仍是相对地址;逻辑地址到
物理地址的变换要推迟到程序真正执行时才进行; • 地址变换发生在程序执行过程中(即动态重定位)。 为使地址转换不影响程序执行速度,必须使用硬件支 持。
第四章 存 储 器 管 理
链接和装入的关系(一)
• 静态链接会形成磁盘上的可执行文件,而 装入时动态链接和运行时动态链接不会产 生磁盘上的可执行文件。 • 静态链接产生的可执行文件装入时内存是 连续分配的,而地址映射既可采用可重定 位装入方式(静态重定位)也可以采用动 态运行时装入方式(动态重定位)
N个字节可用
图 4-5 空闲链结构
第四章 存 储 器 管 理
用户编程所用的地址称为逻辑地址(或程序地址,或
虚地址),由逻辑地址组成的空间称为逻辑地址空间 (或程序地址空间)。
我们把用户程序装入内存时,或在程序执行时,对有
关指令或数据地址的修改称为从程序地址到内存地址 的地址映射,或称为地址重定位。
第四章 存 储 器 管 理
源程序(名空间) 逻辑地址空间
0 BR=1000
缺点:程序必须占用连续的内存空间;一旦程序装入 后不能移动;主存利用率低;难以做到程序和数据的
共享。
第四章 存 储 器 管 理
动态地址映射(重定位)
动态地址重定位:在程序执行的过程中,每次将要访问的指令或数 据逻辑地址转换为内存地址。 动态映射方法:装入程序把程序和数据原样装入到已分配的存储区 中,然后把这个存储区的起始地址送入重定位寄存器中。在程序执 行时,再将相对地址转换成绝对地址。
物理地址空间
Load A data1
100
Load A 200
1100
Load A 1200
编译 连接
data1 3456 200 3456
地址映射
1200 3456 。 。
第四章 存 储 器 管 理
地址映射的方式
静态地址映射: 1)程序被装入内存时由操作系统的连接装入程序完成 程序的逻辑地址到内存地址的转换; 2)地址转换工作是在程序执行前由装入程序集中一次 完成。 假定程序装入内存的首地址为BR,程序地址为VR,内存 地址为MR,则地址映射按下式进行:MR=BR+VR
第四章 存 储 器 管 理
动态重定位优缺点
优点:1)程序占用的内存空间是动态可变的,当程序从 某个存储区移到另一个区域时,只需要修改相应的寄存器 BR的内容即可;2)一个程序不一定要求占用一个连续的 内存空间,可以部分地装入程序运行;4)便于多个进程 共享同一个程序的代码。 动态地址重定位的代价:1)需要硬件的支持;2)实现存
三种链接方式的差别相当于: 静态链接:上车(相当于进入内存)前集合起来
装入时链接:上车后开车前集合起来
运行时链接:开车后需要时集合起来
第四章 存 储 器 管 理
4.2.1
程序的装入
1. 绝对装入方式(Absolute Loading Mode)
采用绝对地址装入,目前很少使用 ① ② ③ 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可
链接 程序 装入 程序
4.2 程序的装入和链接
过程或函数可能分别 对应一个模块!
编译程序产 生的目标模 块
…
装入模块
编译
链接
第二步 第三步
装入
第一步
第四章 存 储 器 管 理
不要求!
在程序运行之前,先将各目标模块及它们所需的 库函数,链接成一个完整的装入模块,又称为 可执行文件,以后不再拆开。解决:对相对地址 进行修改;变换外部调用符号
储管理的软件算法较为复杂。
第四章 存 储 器 管 理
程序处理步骤: 编译---编译程序,负责检查语法错,涉及名空间。输入:源程序; 输出:多 个目标模块; 链接---链接程序,负责将多个模块相关联,涉及逻辑地址空间。输入:多个 目标模块、库函数;输出:装入模块; 装入:装入程序,负责内存分配和地址映射,涉及内存空间。输入:装入模 块;输出:可执行的二进制内存映像。 内存 二进制内存映 (可能产生)可执行 像 程序文件 库
4.1 存储器的层次结构
CPU寄存器 寄存器 高速缓存 主存 主存 磁盘缓存 辅存 磁盘 可移动存储介质
在主存中
寄存器、高速缓存、主存储器和磁盘缓存均属于操作系统 存储管理的管辖范畴,掉电后它们存储的信息不再存在。
第四章 存 储 器 管 理
基本概念补充
存储器管理:指内存的管理,外存管理在文件部分讲述; 单道程序系统:内存被划分成两部分:一部分供OS使用, 一部分供当前正在执行的程序使用。 多道程序系统:存储器的用户部分必须进一步地细分,以 适应多个进程的要求。细分的任务由操作系统动态实 现,这就是存储器管理。 存储器管理的目的:一是方便用户使用,二是提高存储器 的利用率。
第四章 存 储 器 管 理
把程序装入起始地址为1000的内存区
0 100
…
Mov r1,[500]
0 1000 1100
装入程序 1500
… …
Mov r1,[1500]
… 500
1234 600 …
作业的地址空间
1600
1234 … … 存储空间
第四章 存 储 器 管 理
静态映射优缺点
优点:不需要硬件的支持,简单易实现,成本低;
用户区
存的低址部分;用户区是指除系
统区以外的全部内存空间, 提供 给用户使用。
第四章 存 储 器 管 理
4.2.2
固定分区分配
分配方法:将用户空间划分为若干个固定大小的区域,在每个分 区中装入一道作业;有几个分区,就有几道并发的作业;有 空闲分区时,可调入一适当大小的作业;最简单的一种多道 程序存储管理方法。
逻辑地址VR
+
物理地址MR 1500 1599
… 500 1234 599 …
1234 …
…
作业的地址空间
存储空间
第四章 存 储 器 管 理
动态地址映射的过程
程序装入内存后,它所占用的内存区的首地址由系统送入 基地址寄存器BR中。 在程序执行的过程中,若要访问内存,将访问的逻辑地址 送入VR中。 地址转换机构把VR和BR中的内容相加,并将结果送入MR中, 作为实际访问的地址。
图 4-4 固定分区使用表 第四章 存 储 器 管 理4.2.3
动态分区分配
分配思想:根据进程的实际需要,动态的为进程分配(切分)内 存空间,及需要多大,分配多大。提高内存的利用率。 1. 分区分配中的数据结构
(1) 空闲分区表。 (2) 空闲分区链。
前 向 指 针 N + 2 0 后 向 指 针 N + 2 0
第四章 存 储 器 管 理
第四章 存储器管理
4.1 存储器的层次结构 4.2 程序的装入和链接
4.3 连续分配方式
4.4 基本分页存储管理方式 4.5 基本分段存储管理方式
4.6 虚拟存储器的基本概念
4.7 请求分页存储管理方式 4.8 页面置换算法 4.9 请求分段存储管理方式
第四章 存 储 器 管 理
1. 划分分区的方法
① 分区大小相等, 即使所有的内存分区大小相等。缺点:缺 乏灵活性,大作业无法运行,小作业浪费空间。 ② 分区大小不等,即划分为小、中、大不等的固定分区。优 点:灵活性好。
第四章 存 储 器 管 理 2. 内存分配 :为了便于内存分配,将分区按照大小排队,并建立一 个分区表。如图所示。当为作业分配空间时,分配程序按照此表检 索以合适分区分配;否则,拒绝分配。缺点:空间浪费。
硬件支持:在动态地址重定位机构中,有一个基地址寄存器BR和一 个程序地址寄存器VR,一个内存地址寄存器MR。
转换过程:MR=BR+VR
第四章 存 储 器 管 理
把程序装入起始地址为1000的内存区
0 100
重定位寄存器 1000
…
MOV r1,[500]
0 1000 1100
… …
MOV r1,[500]
第四章 存 储 器 管 理
1、存储器管理功能
主存的分配和回收:系统应能记住每个存储区的状态; 实施存储器的分配;回收系统或用户释放的存储区。 提高主存利用率:使多道程序能动态地共享主存,最好 能共享主存中的信息。[地址转换或重定位] 主存保护:保证进入主存的各道作业都在自己的存储空 间内运行,互不干扰。由硬件和软件配合完成。 主存扩充:借助于虚拟存储技术,为用户提供比主存空 间大的地址空间。
第四章 存 储 器 管 理
2、地址映射(地址重定位)
内存的每个存储单元都有一个编号,这种编号称为内存 地址(或称为物理地址,绝对地址)。 内存地址的集合称为内存空间(或物理地址空间)。例 如,我们常说内存为:512MB
要求用户用内存地址编程是非常困难的,尤其是在多道 程序设计的环境中(不知道)。
第四章 存 储 器 管 理
2. 装入时动态链接(Loadtime Dynamic Linking)
基本思想:源程序被编译生成的目标模块,是在装入内 存时,边装入边连接。装入程序根据外部模块调用而 逐个装入和连接。装入时动态链接方式有以下优点 ① 便于修改和更新:各个模块的修改极易编译和连接;
② 便于实现对目标模块的共享:将内存中的一个模块可 以连接到多个程序中。 ③ 要运行的程序都必须在装入时,全部连接调入内存。
第四章 存 储 器 管 理
链接和装入间的关系(三)
• 运行时动态链接方式一般情况下后装入 的模块和原先已装入的模块是不连续存 放的。 • 运行时动态链接方式的地址变换不可能 运行前一次性映射地址,即不可能采用 静态重定位方法,而只能使用动态重定 位的方法。
第四章 存 储 器 管 理
链接和装入间的关系(四)
1 00 00 LOAD 1,25 0 0
LOAD 1,12500
1 10 00 LOAD 1,25 0 0
2 50 0
3 65
1 25 00
3 65
5 00 0 作业地址空间
1 50 00
逻辑地址(相对地址)
内存空间
图 4-2 作业装入内存时的情况
第四章 存 储 器 管 理
3. 动态运行时装入方式(Denamle Run-time Loading)
第四章 存 储 器 管 理
链接和装入间的关系(二)
• 装入时动态链接方式可以分别给每个装 入模块分配一块内存区域,因而装入时 各模块不一定连续存放。 • 装入时的地址映射既可采用可重定位装 入方式(静态重定位---链接后运行前一 次性修改逻辑地址为物理地址)也可以 采用动态运行时装入方式(动态重定位--运行时动态计算出逻辑地址到物理地址 的映射)
链接后, 模块 A 每个模 JSR “L” 块使用 L- 1 Return ; 同一个 L 模块 B 相对起 始地址 JSR “L + M” 0
L+ M- 1 L+ M Return ; 模块 C Return ; (b ) 装入模块
0
逻辑地址空间
L+ M+ N- 1
图 4-3 程序链接示意图
第四章 存 储 器 管 理
由程序员直接赋予;
编译程序生成的目标模块其逻辑地址与要装入内存的物理地 址相同; 缺点:单道程序可用,多道程序环境不能用。
第四章 存 储 器 管 理 又称静态重定位:地址变换在装入时 一次完成,其后不能移动。 0
1 00 0
2. 可重定位装入方式(Relocation Loading Mode)
物理地址 (绝对地 址)