DispSpace(); return; } }
cout<<\分配失败!\\n\ DispSpace(); return; }
void CallBack(int sta,int len) { // 回收内存 SP p=Head,q=p->next,r; // 开始地址和长度 p->end=0; int en=sta+len; while (q) {
if (sta == 0) { // 初始地址为0 if (en == q->start) { // 正好回收 q->start=0; q->length=q->end; return; } else {
r=(SP)malloc(sizeof(SNode)); r->start=sta; r->length=len; r->end=en; p->next=r; r->next=q; return; } }
else if ((p->end < sta) && (q->start > en)) { // 上邻区 r=(SP)malloc(sizeof(SNode)); r->start=sta; r->length=len; r->end=en; p->next=r; r->next=q; return; }
5
else if ((p->end < sta) && (q->start == en)) { // 邻区相接 q->start=sta; q->length=q->end-sta; return; }
else if ((p->end == sta) && (q->start < en)) { // 下邻区 p->end=en;
p->length=en-p->start; return; }
else if (p->end==sta && q->start==en) { // 邻区相接 p->end=q->end;
p->length=p->end-p->start; p->next=q->next; return; } else {
p=p->next; q=q->next; } } }
void main() { Initial();
cout<<\现在分配大小为 6K 的作业 4 申请装入主存: \ Allocation(6); // 分配时参数只有长度 //--------指导书测试数据演示---------- cout<<\现回收作业 3 (起址10,长度4)\\n\ CallBack(10,4); DispSpace();
cout<<\现回收作业 2 (起址26,长度6)\\n\ CallBack(26,6); DispSpace();
6
//---------------演示结束------------- system(\}
3. 程序运行结果:
三、综合实验总结或结论
通过本次实验,自己的编程能力有所提高,对操作系统内存的分配,存储空间的回收都有了全新的认识。
在这次操作系统实验中我使用了C++编写系统软件,对OS中可变分区存储管理有了深刻的理解,通过验证,可以说是做出了结果,但是过程中遇到了很多困难,只能边做边查资料,问同学,通过实验对C++有了比较多的理解。
实验中遇到不少问题,浪费了很多的时间,总而言之,究其原因是自己平时的学习不牢固,不扎实,会在以后得学习中扬长避短加以改善,来学到更多的知识。
7