欢迎来到天天文库
浏览记录
ID:56919965
大小:185.00 KB
页数:11页
时间:2020-07-24
《实验报告二主存空间的分配和回收.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《操作系统原理》实验报告实验序号:2 实验项目名称:主存空间的分配和回收学 号姓 名专业、班实验地点指导教师时间2010.11.15一、实验目的通过本实习帮助理解在不同的存储管理方式下应怎样进行存储空间的分配和回收。二、实验设备(环境)及要求微机、C++三、实验题目在可变分区管理方式下采用首次适应算法实现主存分配和回收。四、程序中使用的数据结构及符号说明结构1:typedefstructfreeTable{charproID[6];intstartAddr;/*空闲区起始地址*/intlength;/*空闲区长度,单位为字节*/intflag;/*
2、空闲区表登记栏标志,用"0"表示空表项,用"1"表示未分配*/structfreeTable*next;}freeTabNode;/*空闲区表结点*/程序中定义了三个函数:allocate(charPName[],intPLength)分配主存空间InitFreeTab()显示主存使用情况reclaim(charPName[]),回收作业名为PName的作业所占主存空间五、源程序/*程序功能:模拟主存空间的分配与回收其中空闲表为单链表,没有长度限制*/#include#include#include#inclu
3、de#defineminisize1typedefstructfreeTable{charproID[6];intstartAddr;/*空闲区起始地址*/intlength;/*空闲区长度,单位为字节*/intflag;/*空闲区表登记栏标志,用"0"表示空表项,用"1"表示未分配*/structfreeTable*next;}freeTabNode;/*空闲区表结点*/freeTabNode*freeTab;voidInitFreeTab(){freeTabNode*f,*temp;f=(freeTabNode*)malloc(sizeof(fr
4、eeTabNode));strcpy(f->proID,"OS");f->startAddr=0;f->length=5;f->flag=0;freeTab=f;f=(freeTabNode*)malloc(sizeof(freeTabNode));;strcpy(f->proID,"1");f->startAddr=5;f->length=5;f->flag=0;freeTab->next=f;temp=f;f=(freeTabNode*)malloc(sizeof(freeTabNode));strcpy(f->proID,"3");f->startAddr=10;
5、f->length=4;temp->flag=0;temp->next=f;temp=temp->next;f=(freeTabNode*)malloc(sizeof(freeTabNode));f->startAddr=14;f->length=12;f->flag=1;temp->next=f;temp=temp->next;f=(freeTabNode*)malloc(sizeof(freeTabNode));strcpy(f->proID,"2");f->startAddr=26;f->length=6;f->flag=0;temp->next=f;temp=t
6、emp->next;f=(freeTabNode*)malloc(sizeof(freeTabNode));f->startAddr=32;f->length=96;f->flag=1;f->next=NULL;temp->next=f;}voidallocate(charPName[],intPLength){freeTabNode*f,*temp;f=freeTab;while(f)/*寻找空间大于PLength的最小空闲区登记项k*/{if(f->length>=PLength&&f->flag==1)break;f=f->next;}if(!f)/*未找到可用空
7、闲区,返回*/{printf("无可用空闲区");return;}/*找到可用空闲区,开始分配*/if(f->length-PLength<=minisize){/*空闲区大小与要求分配的空间差小于minisize大小,空闲区全部分配*/strcpy(f->proID,PName);f->flag=0;/*修改成空表目状态*/}else{/*若空闲区大小与要求分配的空间差大于minisize大小,从中划出一部分分配*/f->length=f->length-PLength;temp=(freeTabNode*)malloc(sizeo
此文档下载收益归作者所有