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
基本功能:设计与实现动态分区分配的数据结构与算法。根据作业大小,对空闲分区按照循环首次适应算法进行分配,回收分区时,按照回收算法进行合并回收。分配、回收后显示空闲分区状态。
扩展功能:同时实现首次适应算法、最佳适应算法、最坏适应算法。通过绘制分区状态图更直观地显示分配和回收过程,对比各种算法的差异和优劣。
2 概要设计
2.1 总体结构
在C语言面向过程编程方法中,常用分层方法进行编程,降低各模块之间的耦合度。在操作系统中,也用到了分层思想进行设计,每一步设计都建立在可靠的基础上,这样易于扩充和维护系统。
在此次的课程设计中,同样也使用分层的方法,可以将各种算法很简单方便的一起实现。最底层是基本的数据结构,用来存储分区的信息。上一层是分配分区的函数alloc()和回收分区的函数free()。通过调用alloc()和free()函数可以实现四种算法。通过图形展示算法可以直观地显示分配和回收过程。最上一层是程序的界面,允许用户可以自由的对内存进行分配和回收,程序展示动态结果。
总体结构图
![26e1f806a7c10b814acd94cf2924ecae.png](https://i-blog.csdnimg.cn/blog_migrate/8dfccd0ed2695cca70935a4634c0b899.jpeg)
![7ae2f5e0732cbc8cc6ad3b3ed39d92e4.png](https://i-blog.csdnimg.cn/blog_migrate/5808de7d6c716be77dd4b89e668a7494.png)
参考文档和完整的文档和源码下载地址:
https://www.write-bug.com/article/1383.html