第4章内存管理PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 二步
第 三步
2020/8/1
4
4.2.1 程序的装入
程序的装入就是把程序装入内存空间。
采用三种方式
(1)绝对装入方式:是由装入程序根据装入模块中 的地址,将程序和数据装入内存。 (2)可重定位方式 :是由装入程序根据内存当前的 实际使用情况,将装入模块装入到内存适当的地方。 (3)动态运行时装入方式:动态运行时的装入程序, 在把装入模块装入内存后,并不立即把装入模块中的 相对地址转换为绝对地址,而是把这种地址转换推迟 到程序要真正执行时才进行。
动态运行时装入方式:动态运行时的装 入程序,在把装入模块装入内存后,并 不立即把装入模块中的相对地址转换为 绝对地址,而是把这种地址转换推迟到 程序要真正执行时才进行。
适于多道环境
允许程序移动,如切换
动态重定位
需要特殊硬件支持(重定位寄存器)
2020/8/1
11
程序的装入
动态重定位:
是指地址转换工作是在程序执行期间由硬件变换机 构动态实现地址转换的。 物理地址=逻辑地址+重定位寄存器的内容。 动态重定位的优点:用户程序在执行过程中内存可 移动,程序不必连续存放在内存中,可以放在不同 区域,若干个用户可以共享同一程序段或数据段。 缺点:需要附加硬件支持,实行存储管理的软件算 法比较复杂。
2020/8/1
退1出
整体 概述
一 请在这里输入您的主要叙述内容
二
Байду номын сангаас请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
2
4.2. 程序的装入和链接
将一个用户源程序变为一个可在内存中执行的程 序,通常要经过编译、链接和装入几个步骤
(1)编译。由编译程序将用户源代码编译成若干个 目标模块。
2020/8/1
9
程序的装入
静态重定位方式 :
如上图所示,图(a)中,程序中逻辑地址为6,8,10,因为装 入内存中程序的起始地址变为100,所以须对地址进行重定 位,否则在图(b)的情况下会发生调用错误,所调用的地址 中不再是程序员想要的内容。图(c)为重定位之后的结果。
2020/8/1
10
程序的装入
位寄存器中的10000,即是需要的物理地址。此种情况下,作业
中的地址一直保持是逻辑地址,如果发生了内存中的移动,将
新的内存起始位置传给重定位寄存器即可,也就是重定位寄存
器中一直记录着当前作业所在内存的20起20始/8/1地址。
13
程序的链接
链接程序的功能是将经过编译或汇编后所得到的 一组目标模块以及它们所需要的库函数,装配成 一个完整的装入模块。 实现链接的方法有三种
6
程序的装入
绝对装入方式只能将目标模块装入到内 存中事先指定的位置。在多道程序环境 下,编译程序不可能预知所编译的目标 模块应放在内存的什么地方,因此在多 道程序环境下,所得到的目标模块的起 始地址通常是从0开始的,程序中的其 它地址都是相对于起始地址计算的。因 此采用重定位装入方式。
2020/8/1
L+ M 模块 C
L+ M+ N- 1 Retu rn; (b) 装入模块
7
程序的装入
可重定位方式 :是由装入程序根据主存当
前的实际使用情况,将装入模块装入到主存 适当的地方。
重定位:在装入时对目标程序中指令 和数据的修改过程。会使装入模块中 的所有逻辑地址与实际装入内存的物 理地址不同
2020/8/1
8
程序的装入
静态重定位方式 :
是指地址转换工作是在程序装入内存时由装配程序完 成的。装配程序根据将要装入内存的起始地址,对程 序模块中有关的地址部分进行调整和修改 (物理地址=逻辑地址+程序存放在内存的起始地 址),一旦确定下来之后不再改变,即静态地址重定 位是在程序执行之前完成的地址转换。 它的优点:无需硬件支持,容易实现。缺点:程序经 地址重定位后不能再移动,程序在内存空间只能连续 存储,程序很难被若干个用户所共享。
第4章 存储器管理
计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。
既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分称为“存储器管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。
静态链接:事先进行链接,以后不再拆开的链接方式 装入时动态链接:用户源程序经编译后所得到的目标 模块,是在装入内存时,边装入边链接的。 运行时动态链接:某些目标模块的链接,是在程序执 行中需要该(目标)模块时,才对它进行链接
2020/8/1
14
4.2.2.程序的链接
静态链接:事先进行链接,以后不再拆开的链接方式
(2)链接。由链接程序将编译后形成的目标模块以 及它们所需要的库函数,链接在一起,形成一个 装入模块。
(3)装入。由装入程序将装入模块装入主存的过程。
2020/8/1
3
源程序的执行过程
通常要经过编译、链接和装入几个步骤
库
编 译程 序产 生 的目 标模 块
内存
链接 程序
装 入模 块
装入 程序
…
第 一步
2020/8/1
5
程序的装入
绝对装入方式:是由装入程序根据装入模 块中的地址,将程序和数据装入主存
若知道程序在内存的位置,编译程序将产生 绝对地址目标模块 绝对地址一般由编译程序给出 程序被装入内存后,由于程序中的逻辑地址 与实际内存地址完全相同,所以不允许改变 程序和数据的地址 只适于单道环境
2020/8/1
2020/8/1
12
程序的装入
动态重定位:
0 100
LOAD1,2500
相对地址 2500
重定位寄存器 10000
10000 10100 LOAD1,2500
2500 365
+
12500
365
5000
作业J
15000
处理机一侧 存储器一侧
主存
如上图所示,作业装入内存后,仍是逻辑地址,没有进行重定
位,当运行过程中运行到这一句时,将逻辑地址2500加上重定
对相对地址进行修改 变换外部调用符号
0 L- 1
模块 A CALL B; Retu rn;
0 M- 1
模块 B CALL C; Retu rn;
0 模块 C
N- 1 Retu rn; (a) 目标模块
0 模块 A
L- 1 L
JSR“ L” Retu rn;
模块 B
JSR “ L+ M” L+ M- 1 Retu rn;