计算机学院网络工程专业
操作系统课程设计
题 目: 内存的申请和释放 班 级: 网工11102班 姓 名:郭阳 学 号: 0216 同组人姓名:
起 迄 日 期: 第一周,第二周 课程设计地点: E3——A513 指导教师: 贺玉才
评阅意见: 成绩评定: 评阅人: 日期: 完成日期:2014年3月
目录
一、概述 ............................................................. 1 1、设计目的 ......................................................... 1 2、开发环境 ......................................................... 1 二、设计要求 ......................................................... 1 三、实验基本原理 ..................................................... 1 四、程序流程图 ....................................................... 2 1、整体程序流程图 ................................................... 3 2、内存分配ALLOCATE()流程图 .......................................... 4 五、源程序 ........................................................... 5 1、数据结构 ......................................................... 5 2、主要功能函数 ..................................................... 5 3、源程序代码 ....................................................... 6 六、运行结果 ........................................................ 16 1、测试用例与程序运行结果截图 ...................................... 16 2、内存分配正确测试 ................................................ 18 3、内存回收错误测试 ................................................ 18 4、内存回收正确测试用例 ............................................ 18 七、总结 ............................................................ 21 八、参考文献 ........................................................ 21
一、概述
1、设计目的
了解操作系统的内存分配的方法
2、开发环境
WINDOWS环境 Visual C++
二、设计要求
定义一个自由存储块链表,按块地址排序,表中记录块的大小。当请求分配内存时,扫描自由存储块链表,知道找到一个足够大的可供分配的内存块,若找到的块的大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。若找到的块太大,即对其分割,并从该块的高地址不分往低地址部分分割,取出大小合适的块返还给申请者,愈小的低地址部分留在链表中。若找不到足够大的块,就从操作系统中请求另外一个足够大的内存区域,并把它连接到自由块链表中,然后再继续搜索。
释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块临接,即对其进行合并操作,直到没有合并的临接块为止,这样可以防止存储空间变得零碎。。
三、实验基本原理
分区存储管理是给内存中的进程划分适当大小的存储区,以连续存储各进程的程序和数据,使各进程能并发地执行。最优适应分配算法扫描整个未分配区表或链表,从空闲区中挑选一个能满足用户进程要求的最小分区进行分配。
在可变分区模式下,在系统初启且用户作业尚未装入主存储器之前,整个用户区是一个大空闲分区,随着作业的装入和撤离,主存空间被分成许多分区,有的分区被占用,而有的分区时空闲的。为了方便主存空间的分配和去配,用于管理的数据结构可由两张表组成:
相关推荐: