第4章 存储器管理总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程B
进程B 进程C
进程B 进程C 进程D
15
内存分配变化过程
OS
OS
A(8K)
OS
A(8K)
A(8K)
进程B(16K) 16K 空闲区 空闲区 16K 进程D(124K) 完成 E(50K) 空闲合并 空闲合并 124+14 124+14 =138K =138K D(124K) 8K空闲区
16
B(16K) 进程E(50K) B(16K) 进程F(16K) E(50K) 进入内存 C完成(64K) 14K空闲区 空闲区
库 子1 子2 装入模块



内存
3
2、地址空间的概念
逻辑空间------逻辑(相对)地址 物理空间------物理(绝对)地址
000 5FF 000 5FF 000
主 000 子1
. . .
00Baidu Nhomakorabea00 00001 00002
. . .
主 子1 子2
01000

子1
FFF
3FF
子2
逻辑地址 装入模块
第四章
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
存储器管理
程序的装入和链接 连续分配方式 基本分页存储管理方式 基本分段存储管理方式 虚拟存储器的基本概念 请求分页存储管理方式 页面置换算法 请求分段存储管理方式
1
4.1
程序的装入和链接
从源程序到程序执行 地址空间的概念 程序的链接 程序的装入
01FFF 子2
相对地址 源程序/单个目标模块
物理地址 内存
4
3、程序的链接
0 链接:一组目标模块和库函数 ——装入模块 0 模块A 模块A Call B; 具体工作:对相对地址的修改;变换外部调用符号。 JSR”L”; Return; …; L-1 L-1 链接方式: L 模块B 0 ①静态链接 模块B JSR”L+M”; …; Call C; 链接 L+M-1 ②装入时动态链接:便于修改和更新;便于共享。 Return; L+M 模块C M-1 ③运行时动态链接:最小化快速装入,节省内存。 ……; 0 N-1 模块C ……; Return; L+M+N-1
9
1、单一连续分配
(1)基本思想 系统区:供OS使用,通常放在低址部分 内存 用户区:系统区以外的全部内存空间 (2)特点 只能用于单用户、单任务的OS中。 软件简单,硬件要求低(无需存储保护) (3)实例 CP/M,MS-DOS,RT-11
10
系统区
系统参数区
BDOS BIOS CCP
2
1、从源程序到程序执行
③装入:由装入程序将装入模块复制到内存中。 ①编译:由编译程序将用户源代码编译成若干个 ②链接:由链接程序将编译后形成的一组目标模 目标模块。 块,以及它们所需要的库函数链接在一起,形成 装入模块。
库 主 主 装入程序 库 子1 子2

链接程序 汇编编译 子1 子2 目标模 块
分区 4
作业 2

•优点:易于实现,开销小。 •缺点: –内存碎片,造成浪费 –分区总数固定,限制了并发执行的程序数目。
14
3、动态分区分配
根据进程的实际需要,动态的分配内存空间
进程 A(8K) 进程 B(16K) 进程 C(64K) 进程 D(124K)…
OS 进程A
OS 进程A
OS 进程A
OS 进程A
D(124K) D(124K) F(16K)
24K空闲区
8K空闲区
数据结构: 在可变分区管理下,,用到的数据结构 为自由表或自由链,其主要用来跟踪内存 的使用情况,各有优缺点分别说明如下。 ①空闲区表(可用表、自由表)
长度 0 16K 1 124K 2 1 138K … 始址 60K 364K 126K …
作业1进入,大小30K 作业3进入,大小8K
分区号 大小
作业2进入,大小500K
起址 状态
未使用 已使用
系统区 分区 1 分区 2
1
8K
512K
系统区 作业 分区 3 1 分区 作业 2 1
2
3
32 K
32 K
520K
552K
未使用 已使用
未使用 未使用
分区 3
分区 4 分区 5
分区 3
分区 4
4 128 K 584K
17
②空闲分区链——双向链表
自由链从自由块本身的首末端分别取出一个字来用 于成链,它记录两个项:自由块的大小以及下一个 自由块的始址。所以成链可以是单链、双链或循环 链,根据使用的分配算法而定。
前 向 指 N个字节 针 可用 N + 2 0
静态重定位:
0000 1000 LOAD 1,2500 装入 2500 365 15000 10000
11000
12500
LOAD1,12500 1,2500 LOAD
365 365
5000
程序地址空间
内存空间
7
动态重定位:
BR:重定位寄存器
8
4.2
连续分配方式
为用户程序分配一个连续的内存空间。 曾被广泛应用,且现在仍被采用。 1、单一连续分配 2、固定分区分配 3、动态分区分配 4、可重定位分区分配
5 512 K 712K
… … …
未使用 已使用

分区 作业 5 2
13
分区号
大小
起址
状态 正使用
系统区 分区 1 分区 2 分区 3 分区 4 分区 5
1
8K
512K
系统区 作业 3 作业 1 分区 3
2
3
32 K
32 K
520K
552K
正使用
未使用 未使用 正使用
4 128 K 584K 5 512 K 712K … … …
系统区 DOS内存分区 CP/M内存分配
11
2、固定分区分配
最简单的一种可运行多道程序的存储管理方式。将内 存用户空间划分成若干分区,每个分区中只装入一道 作业。 划分分区的方法 分区大小相等: 缺乏灵活性,用于控制多个相同对象的系统 分区大小不等: 多个较小分区、适量中等分区、少量大分区 内存分配管理 将分区按大小或地址排序 建立分区使用表——起址、大小、状态 程序装入时,由内存分配程序检索分区使用表,找 到符合要求的分区,并进行标记。 12
......;
装入模块
5
4、程序的装入
装入:把链接好的装入模块装入“内存”。 装入方式 ①绝对装入:单道(任务);装入位置是固 定的。程序员直接编址或由汇编、编译程 序完成地址重定位。 ②可重定位装入(静态重定位):程序执行 前(装入时),一次性地址变换。装入时 对目标程序中指令和数据的修改过程称为 重定位。 ③动态运行时装入(动态重定位):地址变 换在程序执行过程中,在CPU访问内存之 前进行。需要重定位寄存器的支持。 6
相关文档
最新文档