操作系统(6)内存管理的概念 覆盖技术 交换技术 连续分配管理方式 动态分区分配算法 基本分页存储管理 基本分段存储管理 段页式管理方式

内存管理

一、内存管理的概念

在这里插入图片描述

二、覆盖与交换

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. 知识回顾

在这里插入图片描述

五、基本分页存储管理

连续分配:为进程分配的是连续的内存空间
非连续分配:为进程分配的是分散的内存空间,可以将进程分成几个部分,分散的放入空闲区
在这里插入图片描述

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. 基本概念

(1) 进程按照自身的逻辑关系划分为若干个段,每段都有一个段名,每段从0开始编址

(2) 以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻

2. 逻辑地址结构

在这里插入图片描述

3. 段表

记录各个逻辑段与实际的物理位置存放地址的对应关系

在这里插入图片描述

4. 知识回顾

在这里插入图片描述

七、段页式管理方式

段页式管理 = 分段 + 分页

1. 基本概念

(1) 将进程按照逻辑模块分段,再将各段分页 (如每个页面4KB)

(2) 将内存空间按照4KB划分成多个页框

(3) 将进程的各页面分别装入对应的页框中

在这里插入图片描述

2. 段表、页表

在这里插入图片描述

3. 逻辑地址结构

在这里插入图片描述

在这里插入图片描述

4. 知识回顾

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_49343190/article/details/111789067