内存管理
文章目录
一、内存管理的概念
二、覆盖与交换
1. 覆盖技术
将程序分成多个段,常用的段常驻内存的固定区,不常用的段放在内存的覆盖区,在需要的时 候调入内存
2. 交换技术
内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程 换入内存,使用中级调度来完成
3. 知识回顾
三、连续分配管理方式
连续分配指为进程分配的必须是一个连续的内存空间
内部碎片指分配给某进程的内存区域中,有些部分没有用上
外部碎片指内存中的某些空闲分区由于太小而难以利用
1. 单一连续分配
(1) 介绍
内存被分为系统区和用户区;系统区用于存放操作系统相关数据,用户区用于存放用户进 程相关数据
(2) 图示
(3) 特点:内存中只能有一道用户程序,用户程序独占整个用户区
(4) 优点:实现简单,无外部碎片
(5) 缺点:只能用于单用户、单系统的操作系统中,有内部碎片
2. 固定分区分配
(1) 介绍
i. 将整个用户区划分成若干个固定大小的分区,在每个分区中只装入一道作业,某个作业 独占一个固定分区
ii. 固定分区分配分为分区大小相等和分区大小不相等
(2) 图示
(3) 特点:无外部碎片,有内部碎片
(4) 需要使用分区说明表实现各个分区的分配与回收
3. 动态分区分配
(1) 介绍
不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使 分区的大小正好适合进程的需要,因此系统分区的大小和数目是可变的
(2) 系统使用空闲分区表和空闲分区链记录内存的使用情况
(3) 当一个作业装入内存时,按照动态分区分配算法,从空闲分区表/链中选出一个分区分配给 该作业
(4) 根据动态分区分配算法算得进程5(4MB)应将分区1分配给该进程
(5) 其余几种情况
(6) 特点:无内部碎片,有外部碎片
(7) 拼凑技术:将原本不相邻的空闲分区合并成一个更大的空闲分区,用于解决碎片分区不满 足进程的需求的问题
4. 知识回顾
四、动态分区分配算法
1. 首次适应算法
思想:空闲分区以地址递增的次序排列,每次分配内存空间时顺序查找空闲分区表/链,找到大 小能满足要求的第一个空闲分区
注意:链表中的结点即使大小发生变化后,结点顺序依旧不变,因为结点只按照地址排序
2. 最佳适应算法
思想:空闲分区以容量递增的次序排列,每次分配内存空间时顺序查找空闲分区表/链,找到大 小能满足要求的第一个空闲分区
注意:链表中的结点当大小发生变化之后,需要调整结点顺序
3. 最坏适应算法
思想:空闲分区以容量递减的次序排列,每次分配内存空间时顺序查找空闲分区表/链,找到大 小能满足要求的第一个空闲分区
缺点:每次都选择最大的分区进行分配,会导致较大的连续空间被迅速用完,当之后有大进程 到达时,无内存空间可分配
4. 邻近适应算法
思想:空闲分区以地址递增的次序排列,每次分配内存空间时从上次查找结束的位置开始查找 空闲分区表/链,找到大小能满足要求的第一个空闲分区
- 知识回顾
五、基本分页存储管理
连续分配:为进程分配的是连续的内存空间
非连续分配:为进程分配的是分散的内存空间,可以将进程分成几个部分,分散的放入空闲区
1. 页框
将内存空间分为一个个大小相等的分区,每个分区就是一个页框,
每个页框有一个编号,即页框号,页框号从0开始
2. 页面
将进程的逻辑地址空间分为与页框大小相等的一个个部分,
每个部分称为一个页或页面,每个页面都有一个编号,即页号,页号从0开始
3. 分页存储
(1) 操作系统以页框为单位为各个进程分配内存空间,进程的每个页面分别放入一个页框中, 即进程的页面与内存的页框有一一对应的关系
(2) 各个页面无需连续存放,可以放到不相邻的各个页框中
(3) 页框不能太大,否则可能会产生过大的内部碎片造成浪费
4. 页表
为了能知道进程的每个页面在内存中存放的位置,需要为每个进程建立一张页表
(页表通常存在于进程控制块PCB中)
(1) 页表项连续存放,因此页号可以是隐藏的,不占用存储空间 (类比数组)
(2) 页表记录的只是内存块号,而不是内存块的物理起始地址
n号内存块的物理起始地址 = n * 内存块大小
5. 页号、页内偏移量的计算
(1) 问题描述:在某计算机系统中,页面大小是50B;某进程逻辑地址空间大小为200B,则逻 辑地址110对应的页号、页内偏移量是多少?
(2) 计算方法:
页号 = 逻辑地址 / 页面长度
页内偏移量 = 逻辑地址 % 页面长度
物理地址 = 页号对应页框的起始地址 + 页内偏移量
页号对应页框的起始地址 = 根据页号查页表得到的页框号 * 页框大小
(3) 计算结果:
页号 = 110 / 50 = 2
页内偏移量 = 110 % 50 = 10
6. 逻辑地址结构
- 知识回顾
六、基本分段存储管理
与分页最大的区别:进程所划分的基本单位不同 (各段的大小可以不同)
1. 基本概念
(1) 进程按照自身的逻辑关系划分为若干个段,每段都有一个段名,每段从0开始编址
(2) 以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻
2. 逻辑地址结构
3. 段表
记录各个逻辑段与实际的物理位置存放地址的对应关系
4. 知识回顾
七、段页式管理方式
段页式管理 = 分段 + 分页
1. 基本概念
(1) 将进程按照逻辑模块分段,再将各段分页 (如每个页面4KB)
(2) 将内存空间按照4KB划分成多个页框
(3) 将进程的各页面分别装入对应的页框中