基于C语言的分区算法

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()函数可以实现四种算法。通过图形展示算法可以直观地显示分配和回收过程。最上一层是程序的界面,允许用户可以自由的对内存进行分配和回收,程序展示动态结果。

总体结构图

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1383.html

你可能感兴趣的:(基于C语言的分区算法)