目录
1 需求分析 3
2 概要设计 3
总体结构 3
数据结构. 4
分区分配算法. 5
回收分区算法. 5
首次适应算法寻找分区位置. 6
循环首次适应算法寻找分区位置. 7
最佳适应算法寻找分区位置. 7
最坏适应算法寻找分区位置. 7
绘制状态图算法. 8
程序界面. 8
3 运行环境 8
硬件环境. 8
软件环境. 9
4 开发工具和编程语言 9
5 详细设计 9
链表初始化 9
分配分区函数. 9
回收分区函数. 10
首次适应算法. 11
循环首次适应算法. 12
最佳适应算法. 12
最坏适应算法. 13
分配状态显示图与表. 13
输入分配回收序列控制函数. 15
6 调试分析 17
7 测试结果 17
8 参考文献 21
9 心得体会 22
1 需求分析
用 C 语言实现采用循环首次适应算法的动态分区分配过程 alloc()和回收过程 free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。采用循环首次适应算法进行内存块的分配和回收,同时显示内存块分配和回收后空闲内存分区链的情况。
假设初始状态如下,可用的内存空间为 640KB,并按照下列的请求序列进行内存的分配与回收:
作业 1 申请 130KB;作业 2 申请 60KB;作业 3 申请 100KB;作业 2 释放 60KB;
作业 4 申请 200 KB;作业 3 释放 100 KB;作业 1 释放 130 KB;作业 5 申请 140 KB;
作业 6 申请 60 KB;作业 7 申请 50KB;作业 6 释放 60 KB
基本功能:设计与实现动态分区分配的数据结构与算法。根据作业大小,对空闲分区按照循环首次适应算法进行分配,回收分区时,按照回收算法进行合并回收。分配、回收后显示空闲分区状态。
扩展功能:同时实现首次适应算法、最佳适应算法、最坏适应算法。通过绘制分区状态图更直观地显示分配和回收过程,对比各种算法的差异和优劣。