1 / 12
文档名称:

内存分区实验报告.doc

格式:doc   大小:27KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

内存分区实验报告.doc

上传人:文库旗舰店 2019/9/29 文件大小:27 KB

下载得到文件列表

内存分区实验报告.doc

文档介绍

文档介绍:操作系统与Linux实验报告实验名称动态分区算法实验报告姓  名       学  号   班  级              教  师                日  期    一、;      。二、实验内容用循环首次适应和最佳适应算法法模拟UNIX可变分区内存管理,实现对该内存区的分配和释放管理的功能。三、实验原理(1)循环首次适应算法  模拟UNIX的进程管理程序采用的是循环首次适应算法,具体算法如下:   系统每次为进程分配资源时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。(2)循环最佳适应算法模拟UNIX的进程管理程序采用的是最佳适应算法,具体算法如下:   系统每次为进程分配资源时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求且最小的的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。(1)structWORK{stringNAME;    //作业名称intAfter_SPACE;  //该作业跟上一个作业之间的空闲内存空间intSPACE;      //需要的内存空间intStartPoint;    //作业在内存里开始的位置intEndPoint;    //作业在内存里结束的位置WORK*next;};WORK*FWork;//从内存开始0位置向下数第一个作业#defineFULL_MEM640  //定义内存空间大小为640KB四、开发环境Vs2010五、程序流程图,:#include<iostream>#include<string>#include<fstream>#include<>usingnamespacestd;/*****************//* 定义作业类 *//*****************/structWORK{stringNAME;    //作业名称intAfter_SPACE;  //该作业跟上一个作业之间的空闲内存空间intSPACE;      //需要的内存空间intStartPoint;    //作业在内存里开始的位置intEndPoint;    //作业在内存里结束的位置WORK*next;};/*****************//* 定义基础信息*//*****************/#defineFULL_MEM640 //总内存为640Kintstate=1;    //提示作业申请状态(1--->申请成果;0---->申请失败)intFirst_FreeSpace=640;  //内存0到第一个作业间的空闲内存(初始化状态下,为640K即为整个内存)WORK*FWork=NULL;    //第一个作业voidFCFS(stringFile);voidBest_Adaptation(stringFile);/*****************//* 界面设计  *//*****************/voiddisplay_main(){cout<<"请输入写有你内存申请的文件:";stringFile;getline(cin,File);system("cls");cout<<"请输入你选择的算法:"<<endl;cout<<""<<endl;cout<<""<<endl;cout<<""<<endl;intn;cin>>n;system("cls");switch(n){case1:cout<<"首次适应服务"<<endl<<endl;FCFS(File);break;case2:cout<<"最佳适应算法"<<endl<<endl;Best_Adaptation(File);break;case3:exit(0);break;}}voiddisplay()  //输出每次作业活动的结果{WORK*temp=FWork;cout<<"作业 起始位置 终止位置占用内存大小"<<endl;cout<<endl;while(temp!=NULL){if(temp->StartPoint==0){cout<<temp->NAME<<"  00"<<temp->StartPoint<<"   "<<temp->EndPoint<<"    "<<temp->SPACE<<endl;}else{cout<<temp->NAME<<"  "<<temp->StartPoint<<"   "<<temp->EndPoint<<"