实验报告二主存空间的分配和回收.doc

实验报告二主存空间的分配和回收.doc

ID:56919965

大小:185.00 KB

页数:11页

时间:2020-07-24

实验报告二主存空间的分配和回收.doc_第1页
实验报告二主存空间的分配和回收.doc_第2页
实验报告二主存空间的分配和回收.doc_第3页
实验报告二主存空间的分配和回收.doc_第4页
实验报告二主存空间的分配和回收.doc_第5页
资源描述:

《实验报告二主存空间的分配和回收.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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。