操作系统实验三Word下载.doc
- 文档编号:14333420
- 上传时间:2022-10-22
- 格式:DOC
- 页数:15
- 大小:144.50KB
操作系统实验三Word下载.doc
《操作系统实验三Word下载.doc》由会员分享,可在线阅读,更多相关《操作系统实验三Word下载.doc(15页珍藏版)》请在冰豆网上搜索。
作业4申请200KB
作业3释放100KB
作业1释放130KB
作业5申请140KB
作业6申请60KB
作业7申请50KB
作业6释放60KB
请分别采用首次适应算法和最佳适应算法进行内存块的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。
3.
源代码如下:
//********
动态分区分配方式的模拟
*********
#include<
iostream.h>
stdlib.h>
#defineFree0//空闲状态
#defineBusy1//已用状态
#defineOK1
//完成
#defineERROR0//出错
#defineMAX_length640//最大内存空间为640KB
typedefintStatus;
typedefstructfreearea//定义一个空闲区说明表结构
{
intID;
//分区号
longsize;
//分区大小
longaddress;
//分区地址
intstate;
//状态
}ElemType;
//----------
线性表的双向链表存储结构
------------
typedefstructDuLNode//doublelinkedlist
ElemTypedata;
structDuLNode*prior;
//前趋指针
structDuLNode*next;
//后继指针
}DuLNode,*DuLinkList;
DuLinkListblock_first;
//头结点
DuLinkListblock_last;
//尾结点
Statusalloc(int);
//内存分配
Statusfree(int);
//内存回收
StatusFirst_fit(int,int);
//首次适应算法
StatusBest_fit(int,int);
//最佳适应算法
voidshow();
//查看分配
StatusInitblock();
//开创空间表
StatusInitblock()//开创带头结点的内存空间链表
{
block_first=(DuLinkList)malloc(sizeof(DuLNode));
block_last=(DuLinkList)malloc(sizeof(DuLNode));
block_first->
prior=NULL;
next=block_last;
block_last->
prior=block_first;
next=NULL;
data.address=0;
data.size=MAX_length;
data.ID=0;
data.state=Free;
returnOK;
}
//-----------------------
分
配
主
存
-------------------------
Statusalloc(intch)
intID,request;
cout<
<
"
请输入作业(分区号):
;
cin>
>
ID;
请输入需要分配的主存大小(单位:
KB):
request;
if(request<
0||request==0)
分配大小不合适,请重试!
endl;
returnERROR;
if(ch==2)//选择最佳适应算法
if(Best_fit(ID,request)==OK)cout<
分配成功!
elsecout<
内存不足,分配失败!
else//默认首次适应算法
if(First_fit(ID,request)==OK)cout<
//------------------
首次适应算法
-----------------------
StatusFirst_fit(intID,intrequest)//传入作业名及申请量
//为申请作业开辟新空间且初始化
DuLinkListtemp=(DuLinkList)malloc(sizeof(DuLNode));
temp->
data.ID=ID;
data.size=request;
data.state=Busy;
DuLNode*p=block_first->
next;
while(p)
if(p->
data.state==Free&
&
p->
data.size==request)
{//有大小恰好合适的空闲块
p->
break;
data.size>
request)
{//有空闲块能满足需求且有剩余"
prior=p->
prior;
next=p;
data.address=p->
data.address;
prior->
next=temp;
prior=temp;
data.address=temp->
data.address+temp->
data.size;
data.size-=request;
p=p->
//--------------------
最佳适应算法
------------------------
StatusBest_fit(intID,intrequest)
intch;
//记录最小剩余空间
DuLNode*q=NULL;
//记录最佳插入位置
while(p)//初始化最小空间和最佳位置
(p->
request||p->
data.size==request))
q=p;
ch=p->
data.size-request;
{//空闲块大小恰好合适
{//空闲块大于分配需求
data.size-request<
ch)//剩余空间比初值还小
//更新剩余最小值
//更新最佳位置指向
if(q==NULL)returnERROR;
//没有找到空闲块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)