NOTE
3.4 内存分配和回收
1. 内存分配 有三个主要的分配方式: 1.1. 单一连续分配 只能在单用户、单进程的操作系统中使用。把内存分成系统区和用户区,系统区用于运行操作系统,用户区用于运行某个进程 1.2. 固定分区分配 支持多道程序。内存空间被划分为若干固定大小的区域,每个分区只提供给一个程序使用,互不干扰 1.3.
这是历史学习笔记,可能存在过时或不完整的理解。
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. 内存回收
主要有四种情况:

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