第五章 存储管理(1)ppt课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
5.1.1 虚拟存储器
源程序——〉目标代码 地址安排? ❖ 按照物理存储器中的位置赋予实际物理地址。
优点:CPU 执行目标代码时的执行速度高。 缺点:能装入内存并发执行的进程数大大减少,对于某
些较大的进程可能会无法执行;编译程序将非常复杂, 编译程序必须知道内存的当前空闲部分及其地址,并 且把一个进程的不同程序段连续地存放起来
1、固定分区
2、动态分区
31
1、固定分区
❖ 固定分区:把内存固定地划分为若干个大小 不等的区域。分区的划分由计算机的操作员 或者由操作系统给出,并给出分区说明表。 在调度作业时,由存储管理根据所需量在分 区说明表中找出一个单元分配给它。
32
1、固定分区
❖ 分区说明表
分区号 大小(KB) 始址
状态
第五章 存储管理
主存的管理
1
第五章 存储管理
❖ 5.1 存储管理的功能 ❖ 5.2 分区存储管理 ❖ 5.3 覆盖和交换 ❖ 5.4 页式管理 ❖ 5.5 段式与段页式管理 ❖ 5.6 局部性原理与抖动问题
2
5.1 存储管理的功能
❖ 5.1.1 虚拟存储器 ❖ 5.1.2 地址变换 ❖ 5.1.3 内外存数据传输的控制 ❖ 5.1.4 内存的分配与回收 ❖ 5.1.5 内存信息的共享与保护
1
8
20
已分配
2
32
28
已分配
3
64
60
已分固定分区法 34
1、固定分区
❖ 在作业大小和出现频率均已知的情况下,固 定分区是合适的。在这种情况下分区的大小 选择与作业大小相当,这样内存的使用效率 较高。
❖ 但是若作业的大小和出现的频率不知道时, 势必造成分区的大小和作业的大小相差甚远, 这样就会造成存储空间的浪费,从而影响整 个系统的效率。
❖上下界保护法:硬件法
1、在CPU中设置一对下限寄存器和上限寄存器存放 用户作业在主存中的下限和上限地址
2、每当CPU要访问主存,硬件自动将被访问的主存 地址与界限寄存器的内容进行比较,以判断是否越界
3、如果未越界,则按此地址访问主存,否则将产生
程序中断——越界中断(存储保护中断)
25
图5.4 上、下界寄存器保护法
动态分配中所用到的数据结构; 分区的分配算法; 分区的分配和回收操作。
38
2、动态分区
❖ 实现动态分区的数据结构:
在动态分区存储管理中,要有相应的数据结构来 登记空闲区的说明信息,它包括空闲区的大小 和位置。其数据结构有:分区说明表、可用分 区表(或自由链)、请求表。
分区说明表
可用分区表:用于为内存中每个还没有分区设 置一个表项,每个分区表项包含分区序号、分 区起始地址以及分区大小。(占用内存) 39
6
实现虚拟内存的基本原理
❖ 将程序正在使用的部分内容放在内存,而暂时不 用的部分放在外存,在需要时由系统调入内存, 并将不需要(或暂不需要)的部分调出内存。
❖ 由于程序在执行时,在一段时间内一般仅使用它 的程序的一部分(或一小部分),所以程序仅有 部分装入内存完全能够正确执行。
❖ 要由操作系统结合相关硬件来完成上述工件,这 样计算机好象为用户提供了一个容量远大于内存 的存储器,这个存储器称为虚拟存储器。
9
5.1.1 虚拟存储器
❖ 虚拟存储器呈现在用户面前的是一个在物理上只受 内存和外存总容量限制的存储系统,这要求存储管 理系统只把进程执行时频繁使用和立即需要的指令 与数据等存放在内存中,而把那些暂时不需要的部 分存放在外存中,待需要时自动调入,以提高内存 的利用率和并行执行的作业道数。
❖ 虚拟存储器不考虑物理存储器的大小和信息存放的 实际位置,只规定每个进程中互相关联的信息的相 对位置。
3
5.1.1 虚拟存储器
❖ 内存由顺序编址的块组成,内存的每个存 储单元都有一个编号,这种编号称为内存 地址(或称为物理地址,绝对地址)。
❖ 内存地址的集合称为内存空间(或物理地 址空间)。
4
5.1.1 虚拟存储器
❖ 用户编程所用的地址称为逻辑地址(或虚地 址)。
❖ 由逻辑地址组成的空间称为逻辑地址空间 (或虚拟地址空间)。
26
5.1.5 内存信息的共享与保护
❖保护键法:软件法 为每一个被保护的存储块分配一个单
独的保护键。在程序状态字中设置相应的 保护键开关字段,访问过程中比较保护开 关字段的内容和保护键是否匹配,匹配则 允许访问,否则产生访问出错中断。
27
图5.5 保护键保护法
28
5.1.5 内存信息的共享与保护
硬件法1在cpu中设臵一对下限寄存器和上限寄存器存放用户作业在主存中的下限和上限地址2每当cpu要访问主存硬件自动将被访问的主存地址与界限寄存器的内容进行比较以判断是否越界3如果未越界则按此地址访问主存否则将产生程序中断越界中断存储保护中断26图54上下界寄存器保护法2751528图55保护键保护法29515界限寄存器与cpu的用户态或核心态工作方式相结合的保护方式
操作系统控制:
❖交换(swapping)方式:不同的进程或作业之间 ❖请求调入(on demand)方式和预调入(on prefetch)
方式 20
5.1.4 内存的分配与回收
❖要完成内存的分配和回收工作,要求设计者 选择和确定以下几种策略和结构:
分配结构
调入策略
放置策略
交换策略
回收策略
21
5.1.4 内存的分配与回收
❖ 每个进程都拥有自己的虚拟存储器,且虚拟存储器 的容量是由计算机的地址结构和寻址方式确定的。10
5.1.2 地址变换
❖ 地址重定位:从虚拟地址到内存地址的转换 称为地址重定位,或称为地址映射。
❖ 地址映射的方式:
1、静态地址重定位 2、动态地址重定位
11
1、静态地址重定位
❖在虚拟空间程序执行之前由装配程序完成地 址映射的工作。不能实现虚拟存储器
35
2、动态分区
❖动态分区:在系统运行的过程中建立分区, 并使分区的大小刚好与作业的大小相等。
❖这种存储管理的方法解决了固定分区严重浪 费内存的问题。是一种较为实用的存储管理 方法。
36
图5.7 动态分区内存初始分配情况
37
2、动态分区
❖ 在实现动态分区分配的时候需要涉及到以下 三个方面的问题:
提供了实现虚拟存储器的基础。一个程序不一定 要求占用一个连续的内存空间。可以部分地装入 程序运行。
便于多个进程共享同一个程序的代码。
18
2、动态地址重定位
❖ 动态地址重定位的代价:
需要硬件的支持。 实现存储管理的软件算法较为复杂。
19
5.1.3 内外存数据传输的控制
❖内外存数据传输的控制:
用户程序自己控制:覆盖技术——用户负担很 大,程序段的最大长度受内存容量限制,不能 实现虚拟存储器。
❖ 在地址重定位机构中,有一个基地址寄存器BR和一 个程序地址寄存器VR,一个内存地址寄存器MR。
MA=(BR)+(VR)
15
2、动态地址重定位
❖ 动态地址重定位的具体过程:
程序装入内存后,它所占用的内存区的首地址 由系统送入基地址寄存器BR中。
在程序执行的过程中,若要访问内存,将访问 的逻辑地址送入程序地址寄存器VR中。
❖ 回收:回收时管理程序只需将对应的分区状 态置为未使用即可。
44
2、动态分区时的分配与回收
❖主要解决的三个问题:
(1) 对于请求表中的要求内存长度,从可用表或 自由链中寻找出合适的空闲区分配程序。
(2) 分配空闲区之后,更新可用表或自由链。
(3) 进程或作业释放内存资源时,和相邻的空闲 区进行链接合并,更新可用表或自由链。
❖ 回收策略—确定回收的时机和对所回收的内 存空闲区和已存在的内存空闲区进行调整。
23
5.1.5 内存信息的共享与保护
❖保证在内存中的多道程序只能在给定的 存储区域内活动并互不产生干扰。 ❖包括:
防止地址越界 防止越权(对共享区有访问权)
24
5.1.5 内存信息的共享与保护
❖内存保护的方法:硬件法、软件法和软硬件法。
❖ 这种算法是尽可能地利用低地址空间,从而 保证高地址空间有较大的空闲区。
49
最佳适应法
❖ 要求按空闲区大小从小到大的次序组成空闲 区表(队列)。
❖ 分配:当用户作业或进程申请一个存储区时,存储
管理程序从表头开始查找,当找到第一个满足要求 的空闲区时,停止查找,并且这个空闲区是最佳的 空闲区(选中的空闲区是满足要求的最小空闲区)。 如果该空闲区大于请求表中的请求长度,则与最先 适应法时相同,将减去请求长度后的剩余空闲区部 分留在可用表中。
❖假定程序装入内存的首地址为BA,程序地 址为VA,内存地址为MA,则地址映射按下 式进行:MA=(BA)+(VA) 。
12
例
❖程序装入内存的首地址为1000,则 装配程序就按MA=1000+VA对程序 中所有地址部分进行修改,修改后 指令Load A,200就变为Load A, 1200
13
静态地址重定位的优缺点
❖ 回收:按释放区的首址,查询空闲区表,若 有与释放区相邻的空闲区,则合并到相邻的 空闲区中,并修改该区的大小和首址,否则, 把释放区作为一个空闲区,将其大小和首址 按照首地址大小递增的顺序插入到空闲区表 的适当位置。
48
最先适应法的优点
❖ 释放某一存储区时,若与空闲区相邻则合并 到相邻空闲分区中去,这种情况并不改变该 区在表中的位置,只要修改其大小或首址。
42
5.2.2 分区的分配与回收
❖ 1、固定分区的分配与回收 ❖ 2、动态分区时的分配与回收 ❖ 3、动态分区时的回收与拼接 ❖ 4、几种分配算法的比较
43
1、固定分区的分配与回收
❖ 分配:当用户程序要装入执行时,通过请求 表提出内存分配要求和所要求的内存空间大 小。存储管理程序根据请求表要求查询分区 说明表,从中找出一个满足要求的空闲分区, 将其分配给申请者。P117图
50
最佳适应法
❖ 回收:按释放区的首址,查询空闲区表(队 列) ,若有与释放区相邻的空闲区,则合 并到相邻的空闲区中,并修改该区的大小和 首址,否则,把释放区作为一个空闲区插入 空闲区表(队列) 。
❖ 界限寄存器与CPU的用户态或核心态工作方 式相结合的保护方式。软硬件法 用户态进程只能访问那些在界限寄存器 所规定范围内的内存部分,而核心态进程则 可以访问整个内存地址空间。
29
5.2 分区存储管理
❖把整个内存划分为若干大小不等的区域,操 作系统占用一个区域,其它区域供系统中的多 个进程共享,这种方法称为分区存储管理。
5.2.1 分区存储管理的基本原理 5.2.2 分区的分配与回收 5.2.3 有关分区管理其他问题讨论
30
5.2.1 分区存储管理的基本原理
❖ 基本原理:给每一个内存中的进程划分一块 适当大小的存储区,以连续存储各进程的程序 和数据,使各进程得以并发执行。
这是最简单的一种存储管理,按分区划分 的时机可分为:
45
2、动态分区时的分配与回收
❖ 从可用表或自由链中寻找空闲区的常用的三 种方法:
最先适应法(first fit algorithm)
最佳适应法(best fit algorithm)
最坏适应法(worst fit algoriathm)
这三种方法要求可用表或自由链按不同的方式排列。 46
最先适应法
2、动态分区
❖ 实现动态分区的数据结构:
自由链:利用每个内存空闲区的头几个单元存放 本空闲区的大小和下个空闲区的起始地址,将所 有空闲区组成一条链。(不占用内存)
请求表:表的每个表目描述请求内存资源的作 业或进程号以及所请求的内存大小。
40
图5.9 可用表、自由链及请求表
41
图5.8 内存分配变化过程
❖ 要求可用表或自由链按起始地址递增的次序 排列。
❖ 分配:当进程申请大小为SIZE的内存时,存
储管理程序从空闲区表的第一个表目开始查
询,直到首次找到等于或大于SIZE的空闲区。
从该区中划出大小为SIZE的分区分配给进程,
余下的部分仍作为一个空闲区留在空闲区表
中,但要修改其首址和大小。
47
最先适应法
地址转换机构把VR和BR中的内容相加,并将结
果送入MR中,作为实际访问的物理地址。
16
图5.3 动态地址重定位 17
2、动态地址重定位
❖ 动态地址重定位的优点
可以对内存进行非连续分配。程序占用的内存空 间是动态可变的,当程序从某个存储区移到另一 个区域时,只需要修改相应的寄存器BR的内容即 可。
❖ 分配结构—分配结构是用来登记内存使用情 况的数据结构。如空闲区表、空闲区队列等。
❖ 调入策略—用户程序在何时、怎样调入内存 的策略。
❖ 放置策略—用户程序调入内存时,确定将其
放置在何处的策略。
22
5.1.4 内存的分配与回收
❖ 交换策略—当需要将某个用户程序调入内存 而内存空间又不够时,就要确定哪个或哪些 程序可以从内存中移走。
❖ 优点:不需要硬件的支持。 ❖ 缺点:程序必须占用连续的内存空间,程序
和数据不能共享;程序一旦装入内存之后就 不能再移动,并且必须在程序执行之前将有 关部分全部装入。
14
2、动态地址重定位
❖ 动态地址重定位是在程序执行的过程中,在CPU访 问内存之前,将要访问的程序地址转换为内存地址。 一般来说这种转换是由专门的硬件机构来完成的。
5.1.1 虚拟存储器
源程序——〉目标代码 地址安排? ❖ 按照物理存储器中的位置赋予实际物理地址。
优点:CPU 执行目标代码时的执行速度高。 缺点:能装入内存并发执行的进程数大大减少,对于某
些较大的进程可能会无法执行;编译程序将非常复杂, 编译程序必须知道内存的当前空闲部分及其地址,并 且把一个进程的不同程序段连续地存放起来
1、固定分区
2、动态分区
31
1、固定分区
❖ 固定分区:把内存固定地划分为若干个大小 不等的区域。分区的划分由计算机的操作员 或者由操作系统给出,并给出分区说明表。 在调度作业时,由存储管理根据所需量在分 区说明表中找出一个单元分配给它。
32
1、固定分区
❖ 分区说明表
分区号 大小(KB) 始址
状态
第五章 存储管理
主存的管理
1
第五章 存储管理
❖ 5.1 存储管理的功能 ❖ 5.2 分区存储管理 ❖ 5.3 覆盖和交换 ❖ 5.4 页式管理 ❖ 5.5 段式与段页式管理 ❖ 5.6 局部性原理与抖动问题
2
5.1 存储管理的功能
❖ 5.1.1 虚拟存储器 ❖ 5.1.2 地址变换 ❖ 5.1.3 内外存数据传输的控制 ❖ 5.1.4 内存的分配与回收 ❖ 5.1.5 内存信息的共享与保护
1
8
20
已分配
2
32
28
已分配
3
64
60
已分固定分区法 34
1、固定分区
❖ 在作业大小和出现频率均已知的情况下,固 定分区是合适的。在这种情况下分区的大小 选择与作业大小相当,这样内存的使用效率 较高。
❖ 但是若作业的大小和出现的频率不知道时, 势必造成分区的大小和作业的大小相差甚远, 这样就会造成存储空间的浪费,从而影响整 个系统的效率。
❖上下界保护法:硬件法
1、在CPU中设置一对下限寄存器和上限寄存器存放 用户作业在主存中的下限和上限地址
2、每当CPU要访问主存,硬件自动将被访问的主存 地址与界限寄存器的内容进行比较,以判断是否越界
3、如果未越界,则按此地址访问主存,否则将产生
程序中断——越界中断(存储保护中断)
25
图5.4 上、下界寄存器保护法
动态分配中所用到的数据结构; 分区的分配算法; 分区的分配和回收操作。
38
2、动态分区
❖ 实现动态分区的数据结构:
在动态分区存储管理中,要有相应的数据结构来 登记空闲区的说明信息,它包括空闲区的大小 和位置。其数据结构有:分区说明表、可用分 区表(或自由链)、请求表。
分区说明表
可用分区表:用于为内存中每个还没有分区设 置一个表项,每个分区表项包含分区序号、分 区起始地址以及分区大小。(占用内存) 39
6
实现虚拟内存的基本原理
❖ 将程序正在使用的部分内容放在内存,而暂时不 用的部分放在外存,在需要时由系统调入内存, 并将不需要(或暂不需要)的部分调出内存。
❖ 由于程序在执行时,在一段时间内一般仅使用它 的程序的一部分(或一小部分),所以程序仅有 部分装入内存完全能够正确执行。
❖ 要由操作系统结合相关硬件来完成上述工件,这 样计算机好象为用户提供了一个容量远大于内存 的存储器,这个存储器称为虚拟存储器。
9
5.1.1 虚拟存储器
❖ 虚拟存储器呈现在用户面前的是一个在物理上只受 内存和外存总容量限制的存储系统,这要求存储管 理系统只把进程执行时频繁使用和立即需要的指令 与数据等存放在内存中,而把那些暂时不需要的部 分存放在外存中,待需要时自动调入,以提高内存 的利用率和并行执行的作业道数。
❖ 虚拟存储器不考虑物理存储器的大小和信息存放的 实际位置,只规定每个进程中互相关联的信息的相 对位置。
3
5.1.1 虚拟存储器
❖ 内存由顺序编址的块组成,内存的每个存 储单元都有一个编号,这种编号称为内存 地址(或称为物理地址,绝对地址)。
❖ 内存地址的集合称为内存空间(或物理地 址空间)。
4
5.1.1 虚拟存储器
❖ 用户编程所用的地址称为逻辑地址(或虚地 址)。
❖ 由逻辑地址组成的空间称为逻辑地址空间 (或虚拟地址空间)。
26
5.1.5 内存信息的共享与保护
❖保护键法:软件法 为每一个被保护的存储块分配一个单
独的保护键。在程序状态字中设置相应的 保护键开关字段,访问过程中比较保护开 关字段的内容和保护键是否匹配,匹配则 允许访问,否则产生访问出错中断。
27
图5.5 保护键保护法
28
5.1.5 内存信息的共享与保护
硬件法1在cpu中设臵一对下限寄存器和上限寄存器存放用户作业在主存中的下限和上限地址2每当cpu要访问主存硬件自动将被访问的主存地址与界限寄存器的内容进行比较以判断是否越界3如果未越界则按此地址访问主存否则将产生程序中断越界中断存储保护中断26图54上下界寄存器保护法2751528图55保护键保护法29515界限寄存器与cpu的用户态或核心态工作方式相结合的保护方式
操作系统控制:
❖交换(swapping)方式:不同的进程或作业之间 ❖请求调入(on demand)方式和预调入(on prefetch)
方式 20
5.1.4 内存的分配与回收
❖要完成内存的分配和回收工作,要求设计者 选择和确定以下几种策略和结构:
分配结构
调入策略
放置策略
交换策略
回收策略
21
5.1.4 内存的分配与回收
❖ 每个进程都拥有自己的虚拟存储器,且虚拟存储器 的容量是由计算机的地址结构和寻址方式确定的。10
5.1.2 地址变换
❖ 地址重定位:从虚拟地址到内存地址的转换 称为地址重定位,或称为地址映射。
❖ 地址映射的方式:
1、静态地址重定位 2、动态地址重定位
11
1、静态地址重定位
❖在虚拟空间程序执行之前由装配程序完成地 址映射的工作。不能实现虚拟存储器
35
2、动态分区
❖动态分区:在系统运行的过程中建立分区, 并使分区的大小刚好与作业的大小相等。
❖这种存储管理的方法解决了固定分区严重浪 费内存的问题。是一种较为实用的存储管理 方法。
36
图5.7 动态分区内存初始分配情况
37
2、动态分区
❖ 在实现动态分区分配的时候需要涉及到以下 三个方面的问题:
提供了实现虚拟存储器的基础。一个程序不一定 要求占用一个连续的内存空间。可以部分地装入 程序运行。
便于多个进程共享同一个程序的代码。
18
2、动态地址重定位
❖ 动态地址重定位的代价:
需要硬件的支持。 实现存储管理的软件算法较为复杂。
19
5.1.3 内外存数据传输的控制
❖内外存数据传输的控制:
用户程序自己控制:覆盖技术——用户负担很 大,程序段的最大长度受内存容量限制,不能 实现虚拟存储器。
❖ 在地址重定位机构中,有一个基地址寄存器BR和一 个程序地址寄存器VR,一个内存地址寄存器MR。
MA=(BR)+(VR)
15
2、动态地址重定位
❖ 动态地址重定位的具体过程:
程序装入内存后,它所占用的内存区的首地址 由系统送入基地址寄存器BR中。
在程序执行的过程中,若要访问内存,将访问 的逻辑地址送入程序地址寄存器VR中。
❖ 回收:回收时管理程序只需将对应的分区状 态置为未使用即可。
44
2、动态分区时的分配与回收
❖主要解决的三个问题:
(1) 对于请求表中的要求内存长度,从可用表或 自由链中寻找出合适的空闲区分配程序。
(2) 分配空闲区之后,更新可用表或自由链。
(3) 进程或作业释放内存资源时,和相邻的空闲 区进行链接合并,更新可用表或自由链。
❖ 回收策略—确定回收的时机和对所回收的内 存空闲区和已存在的内存空闲区进行调整。
23
5.1.5 内存信息的共享与保护
❖保证在内存中的多道程序只能在给定的 存储区域内活动并互不产生干扰。 ❖包括:
防止地址越界 防止越权(对共享区有访问权)
24
5.1.5 内存信息的共享与保护
❖内存保护的方法:硬件法、软件法和软硬件法。
❖ 这种算法是尽可能地利用低地址空间,从而 保证高地址空间有较大的空闲区。
49
最佳适应法
❖ 要求按空闲区大小从小到大的次序组成空闲 区表(队列)。
❖ 分配:当用户作业或进程申请一个存储区时,存储
管理程序从表头开始查找,当找到第一个满足要求 的空闲区时,停止查找,并且这个空闲区是最佳的 空闲区(选中的空闲区是满足要求的最小空闲区)。 如果该空闲区大于请求表中的请求长度,则与最先 适应法时相同,将减去请求长度后的剩余空闲区部 分留在可用表中。
❖假定程序装入内存的首地址为BA,程序地 址为VA,内存地址为MA,则地址映射按下 式进行:MA=(BA)+(VA) 。
12
例
❖程序装入内存的首地址为1000,则 装配程序就按MA=1000+VA对程序 中所有地址部分进行修改,修改后 指令Load A,200就变为Load A, 1200
13
静态地址重定位的优缺点
❖ 回收:按释放区的首址,查询空闲区表,若 有与释放区相邻的空闲区,则合并到相邻的 空闲区中,并修改该区的大小和首址,否则, 把释放区作为一个空闲区,将其大小和首址 按照首地址大小递增的顺序插入到空闲区表 的适当位置。
48
最先适应法的优点
❖ 释放某一存储区时,若与空闲区相邻则合并 到相邻空闲分区中去,这种情况并不改变该 区在表中的位置,只要修改其大小或首址。
42
5.2.2 分区的分配与回收
❖ 1、固定分区的分配与回收 ❖ 2、动态分区时的分配与回收 ❖ 3、动态分区时的回收与拼接 ❖ 4、几种分配算法的比较
43
1、固定分区的分配与回收
❖ 分配:当用户程序要装入执行时,通过请求 表提出内存分配要求和所要求的内存空间大 小。存储管理程序根据请求表要求查询分区 说明表,从中找出一个满足要求的空闲分区, 将其分配给申请者。P117图
50
最佳适应法
❖ 回收:按释放区的首址,查询空闲区表(队 列) ,若有与释放区相邻的空闲区,则合 并到相邻的空闲区中,并修改该区的大小和 首址,否则,把释放区作为一个空闲区插入 空闲区表(队列) 。
❖ 界限寄存器与CPU的用户态或核心态工作方 式相结合的保护方式。软硬件法 用户态进程只能访问那些在界限寄存器 所规定范围内的内存部分,而核心态进程则 可以访问整个内存地址空间。
29
5.2 分区存储管理
❖把整个内存划分为若干大小不等的区域,操 作系统占用一个区域,其它区域供系统中的多 个进程共享,这种方法称为分区存储管理。
5.2.1 分区存储管理的基本原理 5.2.2 分区的分配与回收 5.2.3 有关分区管理其他问题讨论
30
5.2.1 分区存储管理的基本原理
❖ 基本原理:给每一个内存中的进程划分一块 适当大小的存储区,以连续存储各进程的程序 和数据,使各进程得以并发执行。
这是最简单的一种存储管理,按分区划分 的时机可分为:
45
2、动态分区时的分配与回收
❖ 从可用表或自由链中寻找空闲区的常用的三 种方法:
最先适应法(first fit algorithm)
最佳适应法(best fit algorithm)
最坏适应法(worst fit algoriathm)
这三种方法要求可用表或自由链按不同的方式排列。 46
最先适应法
2、动态分区
❖ 实现动态分区的数据结构:
自由链:利用每个内存空闲区的头几个单元存放 本空闲区的大小和下个空闲区的起始地址,将所 有空闲区组成一条链。(不占用内存)
请求表:表的每个表目描述请求内存资源的作 业或进程号以及所请求的内存大小。
40
图5.9 可用表、自由链及请求表
41
图5.8 内存分配变化过程
❖ 要求可用表或自由链按起始地址递增的次序 排列。
❖ 分配:当进程申请大小为SIZE的内存时,存
储管理程序从空闲区表的第一个表目开始查
询,直到首次找到等于或大于SIZE的空闲区。
从该区中划出大小为SIZE的分区分配给进程,
余下的部分仍作为一个空闲区留在空闲区表
中,但要修改其首址和大小。
47
最先适应法
地址转换机构把VR和BR中的内容相加,并将结
果送入MR中,作为实际访问的物理地址。
16
图5.3 动态地址重定位 17
2、动态地址重定位
❖ 动态地址重定位的优点
可以对内存进行非连续分配。程序占用的内存空 间是动态可变的,当程序从某个存储区移到另一 个区域时,只需要修改相应的寄存器BR的内容即 可。
❖ 分配结构—分配结构是用来登记内存使用情 况的数据结构。如空闲区表、空闲区队列等。
❖ 调入策略—用户程序在何时、怎样调入内存 的策略。
❖ 放置策略—用户程序调入内存时,确定将其
放置在何处的策略。
22
5.1.4 内存的分配与回收
❖ 交换策略—当需要将某个用户程序调入内存 而内存空间又不够时,就要确定哪个或哪些 程序可以从内存中移走。
❖ 优点:不需要硬件的支持。 ❖ 缺点:程序必须占用连续的内存空间,程序
和数据不能共享;程序一旦装入内存之后就 不能再移动,并且必须在程序执行之前将有 关部分全部装入。
14
2、动态地址重定位
❖ 动态地址重定位是在程序执行的过程中,在CPU访 问内存之前,将要访问的程序地址转换为内存地址。 一般来说这种转换是由专门的硬件机构来完成的。