哈尔滨理工大学课程设计报告
// 调用分配算法 if(option == 0) { firstFit(taskId, size); } else if(option==1){ bestFit(taskId, size); } else
worstFit(taskId, size);
// 显示空闲分区链情况 showSubArea(); } else if(ope == 2) { // 模拟回收内存
printf(\请输入要回收的作业号: scanf(\ freeSubArea(taskId); // 显示空闲分区链情况 showSubArea(); } else if(ope==3){ goto l1;
}
else {
printf(\错误:请输入 0/1/2\\n\ } }
printf(\分配算法模拟结束\\n\ return 0; }
\
哈尔滨理工大学课程设计报告
六、 运行与测试(调试通过的程序,主要测试用例和运行界面截图)
1.测试数据:预设总的内存大小为100k。选择首次适应算法,分别输入作业号及作业的大小(1,200k),(2,200k),(3,155k),(4,445k),然后回收作业2和作业4,最后退出系统。
2.运行截图如下:
1. 主界面:图6
图6
2.选择首次适应算法:图7
图7
3.利用首次适应算法分配内存:图8
哈尔滨理工大学课程设计报告
图8
4.回收内存:图9
哈尔滨理工大学课程设计报告
图9
5.退出系统:图10
图10
七、 收获及改进意见
每一次的实践,都会有很大的收获。做这个题目的时候,就针对此题要解决的几个问题反复思考,重新翻开教科书把相关内容特别是算法原理认真细致的看了一遍,设想会
哈尔滨理工大学课程设计报告
遇到的问题。在内存动态分配程序设计中,最佳适应算法比首次要难一些,要加上对分配后该分区是否能最好地利用的判断。再一个问题是回收时候的合并,对地址的修改不是很有把握。着手写程序后,半天才理清回收的内存和上下邻合并的条件与关系,写此处的代码时,逻辑上比较混乱,反复错误反复修改了很多次才调试正确,这也是花了最多时间才得以正确实现的部分。之前大多用的c语言,对结构体,对象等知识淡忘了很多,这一次的实践让我找回了很多学过的知识点,也弥补了很多的不足之处。逻辑思维也得到了锻炼,写代码也不再像初学的时候那么繁琐,自己都能感觉到那一点点的进步,顿时也觉得充实起来。还有一个难点就是为作业找到最佳空闲区,此处是参照了一些资料后,理清了条件,然后用一个while()两个if()语句循环嵌套就实现了此功能。实践中也发现自身很多的不足,比如上理论课时认为已经理解了的算法原理在用代码实践时,发现还是有模糊和思考不周的地方。
学习着,收获着,并快乐着,这真是我的感触。对于自身不足的地方,我也有了比较清晰的认识,对未来的发展,也有了个参照,将遇到的困难一个个跨过,并最终完成此次课程设计,真的感觉很有收获很有成就感。动手能力也得到了提高,当然,我的设计还有很多的不足之处,有些问题没能很好解决,但通过不断学习和实践,我一定会做的更好。
题目1 进程软中断通信
1.1 题目的主要研究内容及预期达到的目标
实现进程的软中断通信:父进程发信号控制子程序的终止。
1.2 题目研究的工作基础或实验条件
(1)硬件环境:Linux平台。 (2)软件环境:标准C语言。