NOTE

3.4 内存分配和回收

1. 内存分配 有三个主要的分配方式: 1.1. 单一连续分配 只能在单用户、单进程的操作系统中使用。把内存分成系统区和用户区,系统区用于运行操作系统,用户区用于运行某个进程 1.2. 固定分区分配 支持多道程序。内存空间被划分为若干固定大小的区域,每个分区只提供给一个程序使用,互不干扰 1.3.

Operating System / Linux创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 内存分配

有三个主要的分配方式:

1.1. 单一连续分配

只能在单用户、单进程的操作系统中使用。把内存分成系统区和用户区,系统区用于运行操作系统,用户区用于运行某个进程

1.2. 固定分区分配

支持多道程序。内存空间被划分为若干固定大小的区域,每个分区只提供给一个程序使用,互不干扰

1.3. 动态分区分配

根据进程实际需要,动态分配内存空间。

1.3.1. 数据结构

1.3.1.1. 空闲表

如图,使用数组描述内存空间,0表示空闲,1表示非空闲

1.3.1.2. 空闲链表

如图,使用链表描述内存空间,每个节点记录存储容量。相邻的空闲的内存空间可以合并

1.3.2. 分配算法

1.3.2.1. 首次适应(FF)

从开始顺序查找合适的空闲空间,找不到则分配失败

1.3.2.2. 最佳适应(BF)

先将空闲空间排序,遍历找到最合适的空闲区

1.3.2.3. 快速适应(QF)

有多个空闲链表,每个链表存储同一种容量的空闲区

2. 内存回收

主要有四种情况:

无论哪种都是合并分区,并且使用最开头的地址