知识总览

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区


手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_用户区_02

以下是连续分配管理方式

单一连续分配

单一连续分配:内存被分为系统区和用户区

系统区:存放操作系统相关数据。

用户区:存放用户进程相关数据。

内存中只能有一道用户程序。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_03

固定分区分配

分为分区大小相等和不等两种情况。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_04


分区说明表:

大小,起始位置,(分配)状态

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_用户区_05

动态分区分配

又称为可变分区分配
不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区。

三个问题:

系统要用什么数据结构记录内存的使用情况?

表或链。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_06


当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配

按照一定的动态分区分配算法来分配。这里不细说。如何进行分区的分配与回收?

视频14:57开始 分配有两种方法。

分配方法1:修改空闲分区大小和起始地址。

分配给进程5。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_用户区_07


分配方法2:(如果刚好用完)删除空闲分区。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_操作系统_08


回收有4种方法。

回收方法1:回收区的后面有一个相邻的空闲分区,则将相邻的2个空闲分区合并为1个。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_操作系统_09


回收方法2:回收区的前面有一个相邻的空闲分区,则将相邻的2个空闲分区合并为1个。

回收方法3:回收区的前面和后面都有一个相邻的空闲分区,则将相邻的3个空闲分区合并为1个。

回收方法4:回收区的前后都没有一个相邻的空闲分区,则增加一个表项。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_10

动态分区分配有外部碎片。

内部碎片:分配给进程的没用上。

外部碎片:空闲分区太小用不上。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_11


蓝色的小缝隙就是外部碎片。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_12

以下是动态分区分配算法

首次适应算法:每次都从低地址开始查找,找到的第一个能满足大小的空闲分区。

最佳适应算法:空闲分区按容量递增次序链接。每次分配内存顺序查找空闲分区链(表),找到大小能满足要求的第一个空闲分区。也就是找大于等于要求的最小分区。
缺点:每次都选最小的分区分配,会留下更多很小的难以利用的内存块。会产生很多外部碎片。

最坏适应算法:又称最大适应算法。就是找满足条件的最大的空间进行分配。
缺点:每次都选最大的分区分配,可能导致较大的连续空间快速用完,之后若有大进程到达,将无分区可用。

临近适应算法:从上次查找结束位置开始找,找到满足要求的第一个空闲分区。

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_可变分区_13

总结

手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_数据_14


手机中的persistbootsystemproduct与动态分区的关系 动态分区和系统分区_操作系统_15