内存管理的功能-操作系统实验二.doc
《内存管理的功能-操作系统实验二.doc》由会员分享,可在线阅读,更多相关《内存管理的功能-操作系统实验二.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 一、 试验目的1 了解内存管理的功能2 掌握进程可变内存管理的几种内存分配与回收算法3 掌握可变分区算法中空闲分区的合并方法二、 试验内容采用最佳分配算法、最坏分配算法、纯分页管理之一对提供的源码进行改造,或者重新设计一个体现进程管理的试验代码。三、 试验设计采用的是最先分配算法,利用了两个队列,一个存分区情况,一个作为临时队列用于分区操作,可实现最先分配算法的分配内存和回收内存的操作。四实验代码#include #include using namespace std;typedef struct QNode /定义节点结构int number; /内存分区号double address;
2、 /内存分区起始地址double size; /内存分区大小int flag; /内存分区状态(0为空闲,1为占有)struct QNode *next; /后向指针QNode,*QueuePtr;typedef struct linkqueue /定义队列结构QueuePtr front; /队首指针QueuePtr rear; /队尾指针LinkQueue;/队列初始化void creat(LinkQueue &Q) Q.front=Q.rear=new QNode; Q.front-next=NULL;/入队列void in(LinkQueue &Q,int n,double a,dou
3、ble s,int f) QueuePtr p; p=new QNode; p-number=n; /赋值 p-address=a; p-size=s; p-flag=f; p-next=NULL; Q.rear-next=p; /插入至队列尾 Q.rear=p; /修改队尾指针 /出队列void out(LinkQueue &Q,int &n,double &a,double &s,int &f) QueuePtr p; p=Q.front-next; /p指向队列中第一个元素 n=p-number; /取得该元素值 a=p-address; s=p-size; f=p-flag; Q.fr
4、ont-next=p-next; /修改队首指针 if(Q.rear=p) Q.rear=Q.front;/若队列已空,把队尾指针指向头结点/显示队列中所有元素void print(LinkQueue Q) QueuePtr p; p=Q.front-next; if(p=NULL) cout队列为空!endl;/队列为空 else cout分区号 起始 大小 状态endl; while(p!=NULL) /否则显示队列中所有元素 cout number address size flagnext; void give(LinkQueue &memory,LinkQueue &interim)
5、/分配内存int number;double address;double size;int flag;while(interim.front-next!=NULL)/清空临时队列out(interim,number,address,size,flag);while(memory.front-next!=NULL)/存入临时队列out(memory,number,address,size,flag);in(interim,number,address,size,flag);QueuePtr q;q=interim.front-next;if(q=NULL)cout无任何可变分区空间!endl;
6、elsenumber=1;address=0;coutsize;while(q!=NULL)/遍历内存分区 if(q-flag=0&q-size = size)/内存符合in(memory,number,address,size,1);number+;address+=size;if(q-size-size!=0)in(memory,number,address,q-size-size,0);cout分配成功.size,q-flag);number+;address+=q-size;q=q-next;if(q=NULL)cout内存不足,分配失败.next!=NULL)/清空临时队列out(i
7、nterim,number,address,size,flag);while(memory.front-next!=NULL)/存入临时队列out(memory,number,address,size,flag);in(interim,number,address,size,flag);QueuePtr q;q=interim.front-next;if(q=NULL)cout无任何可变分区空间!endl;elseint i,left,right;couti;if(i=1)/要释放的内存区为第一个if(q-flag=0)cout该分区未被占用!flag=0;right=q-next-flag;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内存 管理 功能 操作系统 实验
限制150内