第四章 存储器管理 操作系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
存储器管理的功能
• 内存分配
• 内存保护 • 地址映射 • 内存扩充
3
4.1 存储器的层次结构
4.1.1 多级存储器结构
CPU寄存器 寄存器 高速缓存 主存 主存 磁盘缓存 辅存 磁盘 可移动存储介质 图4-1 计算机系统存储层次示意
4
4.1.2 主存储器与寄存器 • 1 主存储器
• 2 寄存器
–页表寄存器:页表始址,页表长度 –平时每个进程未执行时将其信息(如页表长度、始址) 放在PCB中,执行时将它们装入页表寄存器。 –地址变换机构自动将有效地址分为页号和页内地址 –越界保护 –检索页表 –生成物理地址
40
越界中断 页表寄存器 页表始址 + 页号 0 1 2 3 块号 1 页表长度 > 逻辑地址 页号(3) 页内地址
如:
位移W d=A mod L
36
–逻辑地址A;页大小L(设为1024);页内偏移d A=2170B. 则P=2, d=122
3.页表--实现从页号到物理块号的地址映射
用户程序
内存 页表
0页
页号 块号
1页
2页 3页 4页 5页 n页
0 1 2 3 4 5
2 3 6 8 9
0 1 2 3 4 5 6 7 8 9
–连续式分配中,总量大于作业大小的多个小
分区不能容纳作业。
–紧凑 • 通过作业移动将原来分散的小分区拼接成 一个大分区。 • 每次紧凑后,都必须对移动了的程序或数 据进行重定位。
26
操作系统 用户程序1 10 KB 用户程序3 30 KB 用户程序6 14 KB 用户程序9 26 KB (a) 紧凑前
3.最佳适应算法
• 分区按大小递增排序;分区释放时需插入到适当位置 • 分割后留下小碎片,难以利用。
19
4.3.3 动态分区分配
二、分配算法 4.最坏适应算法WF。
• 总是挑选最大的空闲分区分割给作业使用 • 分区按大小递减排序; • 优点:剩下碎片不至于太小 • 缺点:缺乏大的空闲分区
5. 快速适应算法QF
23
例1
某系统采用动态分区分配方式管理内存,内存 空间为640K,高端40K用来存放操作系统。在内存分 配时,系统优先使用空闲区低端的空间。对下列的 请求序列:作业1申请130K、作业2申请60K、作业3 申请100K、作业2释放60K、作业4申请200K、作业3 释放100K、作业1释放130K、作业5申请140K、作业 6申请60K、作业7申请50K、作业6释放60K,请分别 画图表示出使用首次适应算法和最佳适应算法进行 内存分配和回收后内存的实际使用情况。
–将程序的必要部分(常用功能)的代码和数据常驻内存; –可选部分(不常用功能)在其他程序模块中实现,平时存 放在外存中(覆盖文件),在需要用到时才装入到内存; –不存在调用关系的模块不必同时装入到内存,从而可以相 互覆盖。(即不同时用的模块可共用一个分区)
31
覆盖技术
A 20K B
50K Total: 190K Resident 20K Overlay 0 50K Total: 110K
• 不具备页面对换功能的称为基本分页存储管理方式
–分段 –段页
35
4.4.1页面与页表
1.页面
–页面和物理块:逻辑空间和内存空间,页内碎片
–页面大小由机器的地址结构决定 • 页太大,页内碎片大。 • 页太小:页表可能很长,换入/出效率低
2.地址结构
31 12 11 0
页号P P= Int[A/L]
C 30K D 20K E 40K
F 30K
Overlay 1 40K
注:另一种覆盖方法:(100K) •A(20K)占一个分区:20K; •B(50K)、D(20K)和E(40K)共用一个分区:50K; •F(30K)和C(30K)共用一个分区:30K;
32
4.3.7 对换(Swapping)
1 对换的引入
• 相等: • 不相等:不相等利用率更高。
二、内存分配:
数据结构 将分区按大小排序,建立分区使用表,并将其地址、 分配标识作记录
三、特点:
简单,有碎片(内零头),浪费。
16
图 4-5 固定分区使用表
17
4.3.3 动态分区分配
一、数据结构
1.空闲分区表 2.空闲分区链
前 向 指 针 N + 2 0 后 向 指 针 N + 2 0
• 分类搜索:将空闲分区根据容量大小分类 • 设立管理索引表 • 优点:查找效率高;不要分割 • 缺点:分区归还主存时复杂,开销大
20
4.3.3 动态分区分配
三、分区分配操作 1.分配:图4-7 2.回收: (1)上邻空闲区:合并,改大小 (2)下邻空闲区:合并,改大小, 首址。 (3)上、下邻空闲区:合并,改 大小。 (4)不邻接,则建立一新表项。
9
4.2.1 程序的装入
3.动态运行时装入
• 可重定位装入方式在装入后不能移动程序 • 该情况一般在执行时才完成相对——绝对地址的转换且 有硬件的支持,能保证进程的可移动性。
10
4.2.2
程序的链接
1、静态链接:事先连接
a.对相对地址的修改 b.变换外部调用符号
2、装入时动态链接:边装入边连接
a.便于修改和更新 b.便于实现对目标模块的共享
2、可重定位装入;
• 静态重定位:装入时完成,主要工作是对相对地址中 的指令和数据地址的调整过程,例:图4-3
8
0 10000 1000
LOAD 1,2500
11000 2500 365 12500 365
LOAD 1, 12500
5000
作业地址空间
15000
内存空间
图 4-3 作业装入内存时的情况
5
4.1.3 高速缓存与磁盘缓存 • 1 高速缓存
• 2 磁盘缓存
6
4.2 程序的装入和链接
编辑――编译――链接――装入――运行
内存

编译程序 产生的目 标模块
链接 程序
装入模块
装入 程序
第一步

第二步
第三步
图4-2 对用户程序的处理步骤
7
4.2.1 程序的装入
1、绝对装入:
• 编译后,装入前Leabharlann Baidu产生了绝对地址(内存地址),装 入时不再作地址重定位,适用于单道系统。 • 绝对地址的产生:(1)由编译器完成,(2)由程序 员编程完成。 • 对(1)而言,编程用符号地址。
第四章 存储器管理
4.1 存储器的层次结构 4.2 程序的装入和链接
4.3 连续分配方式
4.4 基本分页存储管理方式
4.5 基本分段存储管理方式
4.6 虚拟存储器的基本概念 4.7 请求分页存储管理方式 4.8 页面置换算法 4.9 请求分段存储管理方式
1
教学目的与要求
• 理解程序的三种链接方式和三种装入方式。 • 掌握分区、分页和分段分配方式的概念,及分 配算法和实现。 • 掌握虚拟存储器的基本概念。 • 掌握请求分页、分段存储管理方式的概念、分 配算法和实现。 教学重点:分区、分页和分段分配方式的概念, 及分配算法和实现。虚拟存储器,请求分页、分 段存储管理方式的概念、分配算法和实现。 教学难点:虚拟存储器, 各种存储方式的分配算法
11
0
模块A CALL B; RETURN
0
模块A JSR L; RETURN
L-1
L-1
0
M-1 0
模块B CALL C; RETURN
L+M-1 L+M
L 模块B JSR L+M; RETURN 模块C
RETURN
12
模块C
RETURN
N-1
L+M+N-1
(a)目标模块 (b)装入模块 图 4-4 程序链接示意图
b 物理地址 页表 分页系统地址变换机构
41
例2:已知某分页系统,主存容量为64K,页面大 小为1K,对一个4页大的作业,其0、1、2、3页 分别被分配到主存的2、4、6、7块中。 (1)将十进制的逻辑地址1023、2500、3500、 4500转换成物理地址? (2)以十进制的逻辑地址1023为例画出地址变 换过程图?
4.3.1单一连续分配 • 用于单用户,单任务中
4.3.2分区式分配 • 固定式 • 动态分区分配 • 可重定位分区分配
14
4.3.1 单一连续分区
• 系统区 • 用户区 • 存贮保护 一般不设置保护也可,因单 任务。
Ms-dos
15
4.3.2 固定分区
特点:有n个分区,则可同时装入n个作业/任务。 一、分区大小:
–将阻塞进程,暂时不用的程序、数据换出。 –将具备运行条件的进程换入。 –类型: • 整体对换:进程对换,解决内存紧张 • 部分对换:页面对换/分段对换:提供虚存支持
2
对换空间的管理
–外存 • 对换区比文件区侧重于对换速度。 –因此,对换区一般采用连续分配。采用数据结构和 分配回收类似于可变化分区分配。
N个字节可用
图 4-6 空闲链结构
18
4.3.3 动态分区分配
二、分配算法 1.首次适应算法FF。
• 要求:分区按低址――高址链接 • 特点:找到第一个大小满足的分区,划分。有外零头, 低址内存使用频繁。
2.循环首次适应算法。
• 从1中上次找到的空闲分区的下一个开始查找。 • 特点:空闲分区分布均匀,提高了查找速度;缺乏大 的空闲分区。
2500
365

12500
365
5000 作业J 处理机一侧 存储器一侧
15000
主存
图 4-10 动态重定位示意图
28
3. 动态重定位分区分配算法
请求分配 u.size分区 检索空闲分区链(表)
无法分配 返回

空闲分区 总和≥u.size? 是 进行紧凑形 成连续空闲区 修改有关的 数据结构

找到大于u.size 的可用区否?
操作系统 用户程序1 用户程序3 用户程序6 用户程序9
80 KB
(b) 紧凑后
27
图 4-9 紧凑的示意
2、动态重定位的实现
动态重定位:相对地址-》物理地址是在程序执行时自动进行
0 100
相对地址 2500 LOAD1,2500
重定位寄存器 10000 10000 10100
LOAD1,2500
15
页号
11 10
页内地址
0
②每个进程最多32个页面,因此进程的页表项 最多为32项;页表项只需给出页所对应的物理 块块号,1M的物理空间可分为29个内存块,故 每个页表项至少有9位。 ③如果物理空间减少一半,则页表中页表项数 不变,但每项的长度减少1位。
39
4.4.2 地址变换机构
基本任务:借助页表完成逻辑页号 -物理块号的映射。 1、基本地址变换机构:
21
从头开始查表 Y
检索完否?
返回
图 4 7
N m.size>u.size? Y m.sizeu.size<=size? N 从该分区中划出u.size大小的分区 将该分区分配,并修改相关结构 返回
22
N
继续检索下一个表项
内 存 分 配 流 程
Y
将该分区从链中移出
2) 回收内存
图 4-8 内存回收时的情况
37
例1:某系统采用页式存储管理策略,拥有逻辑 空间32页,每页2K,拥有物理空间1M ①写出逻辑地址的格式 ②若不考虑访问权限等,进程的页表有多少项? 每项至少有多少位? ③如果物理空间减少一半,页表结构应相应作 怎样的改变?
38
答: ①该系统拥有逻辑空间32页,故逻辑地址中页 号必须用5位描述;而每页为2K,因此,页内地 址必须用11位描述,格式如下:
按动态分区方式 进行分配 修改有关的 数据结构 返回分区号 及首批
图 4-11 动态重定位分区分配算法流程图
29
内存扩充
实现内存扩充的三种技术: • 覆盖技术(overlay) • 交换技术(swapping) • 虚拟存储器(virtual memory)
30
覆盖(overlay)
• 引入:其目标是在较小的可用内存中运行较大的程 序。常用于多道程序系统,与分区存储管理配合使 用。 • 原理:一个程序的几个代码段或数据段,按照时间 先后来占用公共的内存空间。
3、运行时动态链接Dynamic Linking
• 将对某些模块的链接推迟到程序执行 时才进行。亦即,在执行过程中,当 发现一个被调用模块没装入内存时, 立即由OS去找到该模块并将之装入 内存,把它链接到调用者模块上。凡 在执行时未被用到的模块,都不会被 调入内存和被链接到调用者模块上。
13
4.3 连续分配方式
24

0 140K 200K 250K 290K 作业4 490K 600K 640K 490K 550K 600K OS 640K 0 作业5 140K 200K 作业7 250K 290K 作业4 作业5
作业7 OS
首次适应算法
最佳适应算法25
4.3.6 可重定位分区分配
1.动态重定位的引入
33
4.3.7 对换
3 换出与换入
(1)换出 • 选出被换出进程: 因素:优先级,驻留时间,进程状态 • 换出过程: 对于共享段:计数减1, 是0则换出,否则不换 修改PCB和内存分配表 (2)换入: • 选择换入进程:优先级,换出时间等。 • 申请内存。 • 换入
34
4.4基本分页存储管理
• 连续分配引起:碎片 • 碎片问题的解决:紧凑方式消耗系统开销。 • 离散分配 –分页
相关文档
最新文档