15连续存储分配
特点:低地址空间频繁使用。
循环首次适应算法
在首次适应算法的基础上,每次查找时从上次 找到空闲分区的下一个空闲分区开始查找。
特点:空闲分区分布均匀,但是会缺乏大的空 闲分区。
最佳适应算法
把能满足要求、又是最小的空闲分区分配给作 业,避免“大材小用”。
特点:分区按照大小顺序排列。
4.2.3 动态分区分配
操作系统并不预设固定数目的分区,而 是按照程序的内存需求为其划分存储空间, 内存中的分区数目动态变化,我们将这种存 储器管理方式称为可变分区分配管理方式, 也称之为动态分区分配管理方式。
数据结构
空闲分区表
分区号 1 2 3 4 …
分区始址 0x30002000 0x30008000
程序D
空闲空间 已用空间
紧凑前
紧凑后
实现
系统采用可重定位分 区分配算法时,程序 要采用动态运行时装 入方式。系统在硬件 上要增加一个“重定 位寄存器”,装载程 序在内存中的起始地 址。
结束
学习十五 连续存储分配方式
4.2 连续存储分配方式
给每一个程序分配一片连续的存储空间, 其容量为程序运行时所需的最大空间。
连续分配方式包含单一连续分配、固定 分区分配、动态分区分配以及动态重定位分 区分配四种方式。
4.2.1 单一连续分配
内存分为系统区和用户区,用户区一次只 能装入一个程序运行。
回收分区 空闲分区
b 与后一个 空闲分区邻接
空闲分区 回收分区 空闲分区
c 与前后 空闲分区邻接
4.2.4 可重定位分区分配
紧凑:当空闲分区的总量大于程序的大小,
但每个空闲分区容量小于程序的大小时,
移动程序的位置,将空闲分区合并成一个
大的空闲分区。
程序A
程序A
程序B 程序C
程序B 程序C
程序D
…ห้องสมุดไป่ตู้
大小 16KB 8KB
…
状态 已用表项 已用表项 未用表项 未用表项
…
空闲分区链
前
后
向
向
指
指
针 N个字节 针
N
N
+
+
2
2
分配算法
首次适应算法
首次适应算法要求空闲分区以地址递增的次序 排列。以空闲分区链为例,每次从链首开始顺 序查找,直到找到一个大小能满足需求的空闲 分区为止;然后再按照程序的大小,从该分区 中划分出一块内存空间给请求者,余下的空闲 部分仍留在空闲分区链中。若从空闲分区链中 找不到合适的空闲分区,则分配失败。
最差适应算法
每次从空闲分区中选择最大的空闲分区分配给 程序,以便切割剩余的空闲分区空间不太小。
外碎片
不管采用何种算法,分配时时常不能找 到与所需容量一样的空闲分区,切割操作会 留下或大或小的空闲分区。我们将这些永远 不会被分配的小空闲分区称为外碎片。
回收算法
空闲分区 回收分区
a 与前一个 空闲分区邻接
4.2.2 固定分区分配
固定分区分配管理方式是将内存划分成固 定数目的区域。
固定分区分配表
分区号 1 2 3 4
长度 8MB 8MB
16MB 32MB
起始地址 0x30000000 0x30800000
0x31000000 0x32000000
状态 未分配 未分配 未分配 未分配
内碎片
固定分区分配管理方式简单,但是由于 分区大小固定,并不能很好的适应每个程序, 分区内部会有小部分存储空间被浪费掉。我 们将分区内部浪费掉的空间称之为内碎片。