华南理工大学
2021春季“操作系统”课程平时作业
一、题目: 动态连续内存分配算法模拟
二、目的
分别采用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法对用户的动态内存申请和释放请求序列进行模拟,从而加深对动态内存分配算法的理解。
三、内容和要求
认真阅读教材(计算机操作系统(第四版),汤小丹,西安电子科技大学出版社)P130页4.3.4小节“基于顺序搜索的动态分区分配算法”4种算法的实现思想,以及P127页4.3.3小节“动态分区分配”内存分配和回收算法,编写一个动态内存分配算法模拟系统对程序动态申请和释放内存的处理过程。
请用C/C++语言(编程语言不限)编一个处理进程动态申请和释放内存的模拟程序。用户首先指定总的内存大小,以及申请或者释放内存的请求序列,分别采用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法对用户的动态内存申请和释放请求序列进行处理。当用户有内存申请时,若无足够大小的内存则给出“内存分配失败”的提示,若满足则分配并将分配后的内存示意图输出;当用户释放内存时,要将该内存块与前后相邻的内存合并以得到更大的空闲内存块。
程序编写完成后,实验时请对下列内存请求进行模拟,将实验结果写到作业答案中:
mem=640K //总的内存大小为640K
p1=malloc(130K) //申请130K空间,首地址保存到p1
p2=malloc(60K) //申请60K空间,首地址保存到p2
p3=malloc(100K) //申请100K空间,首地址保存到p3
free(p2) //释放p2指向的60K空间
p4=malloc(200K) //申请200K空间,首地址保存到p4
free(p3) //释放p3指向的100K空间
free(p1) //释放p1指向的130K空间
p5=malloc(140K) //申请140K空间,首地址保存到p5
p6=malloc(60K) //申请60K空间,首地址保存到p6
p7=malloc(50K) //申请50K空间,首地址保存到p7
free(p6) //释放p6指向的60K空间
四、实验要求:
每人完成一份平时作业报告。报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。
1) 给出数据定义和详细说明;
2) 给出实现思想和设计流程;
3) 调试完成源程序;
4) 屏幕观察运行结果;
5) 总结自己的设计体会;
编程语言及操作系统平台不限。
五、提交内容
本平时作业每个人必须单独完成。最后需提交的报告内容包括:数据定义、算法思路及流程图、源程序(关键代码需要注释说明)、运行截图、心得体会或者总结。将以上内容编写为一个WORD文档(.DOC)上传到教学管理系统。
2021春季“操作系统”课程平时作业
一、题目: 动态连续内存分配算法模拟
二、目的
分别采用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法对用户的动态内存申请和释放请求序列进行模拟,从而加深对动态内存分配算法的理解。
三、内容和要求
认真阅读教材(计算机操作系统(第四版),汤小丹,西安电子科技大学出版社)P130页4.3.4小节“基于顺序搜索的动态分区分配算法”4种算法的实现思想,以及P127页4.3.3小节“动态分区分配”内存分配和回收算法,编写一个动态内存分配算法模拟系统对程序动态申请和释放内存的处理过程。
请用C/C++语言(编程语言不限)编一个处理进程动态申请和释放内存的模拟程序。用户首先指定总的内存大小,以及申请或者释放内存的请求序列,分别采用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法对用户的动态内存申请和释放请求序列进行处理。当用户有内存申请时,若无足够大小的内存则给出“内存分配失败”的提示,若满足则分配并将分配后的内存示意图输出;当用户释放内存时,要将该内存块与前后相邻的内存合并以得到更大的空闲内存块。
程序编写完成后,实验时请对下列内存请求进行模拟,将实验结果写到作业答案中:
mem=640K //总的内存大小为640K
p1=malloc(130K) //申请130K空间,首地址保存到p1
p2=malloc(60K) //申请60K空间,首地址保存到p2
p3=malloc(100K) //申请100K空间,首地址保存到p3
free(p2) //释放p2指向的60K空间
p4=malloc(200K) //申请200K空间,首地址保存到p4
free(p3) //释放p3指向的100K空间
free(p1) //释放p1指向的130K空间
p5=malloc(140K) //申请140K空间,首地址保存到p5
p6=malloc(60K) //申请60K空间,首地址保存到p6
p7=malloc(50K) //申请50K空间,首地址保存到p7
free(p6) //释放p6指向的60K空间
四、实验要求:
每人完成一份平时作业报告。报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。
1) 给出数据定义和详细说明;
2) 给出实现思想和设计流程;
3) 调试完成源程序;
4) 屏幕观察运行结果;
5) 总结自己的设计体会;
编程语言及操作系统平台不限。
五、提交内容
本平时作业每个人必须单独完成。最后需提交的报告内容包括:数据定义、算法思路及流程图、源程序(关键代码需要注释说明)、运行截图、心得体会或者总结。将以上内容编写为一个WORD文档(.DOC)上传到教学管理系统。