欢迎来到天天文库
浏览记录
ID:49109923
大小:59.44 KB
页数:12页
时间:2020-02-28
《可变分区首次适应算法.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、可变分区首次适应算法--操作系统实验报告题目:可变分区首次适应算法指导老师:班级:姓名:学号:时间:实验三可变分区首次适应算法一、实验目的模拟内存分配,了解并掌握动态分区分配中所用的数据结构、分区分配算法。回顾链表的创建,插入,删除等基本操作;深刻理解首次适应内存分配算法。二、实验内容编程实现首次适应内存分配算法,并上机验证。实验环境:MicrosoftVisualStudio2010三、算法描述该程序用一个链表来模拟内存的空间分布。从键盘输入链表长度和第一个结点的首地址、以及其他各个结点所占空间大小。然后进行申请空间,并判断
2、所申请的大小是否符合要求,能不能进行分配。本程序主要包括两大模块,一是建立链表模块,二是申请并分配空间模块。开始程序流程图如下:初始化输出内存分配情况输入申请内存空间大小是否可以进行分配否是是否继续内存分配并输出分配结果是否结束四、程序清单及简单注释//内存分配算法:#include#include#includeusingnamespacestd;intsize=0,count=0,part[1000],address[1000],flag[1000];//设定全局变
3、量//*******************输出可视结果*****************//voidOutput(){intj;cout<<"输出内存分配情况:"<4、分区号5、分区大小6、起始地址7、状态8、"<9、"<10、"<11、"<12、"<<"已分配";if(flag[j]==0)13、cout<<"14、"<<"未分配";cout<<"15、";cout<>size;cout<>star16、t;cout<>part[i];address[i]=start;start=start+part[i];s=m;//m用来标记已分配内存的总的大小,s用来标记m之前的值m=m+part[i];flag[i]=1;//标识内存已分配if(m==size){cout<17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
4、分区号
5、分区大小
6、起始地址
7、状态
8、"<9、"<10、"<11、"<12、"<<"已分配";if(flag[j]==0)13、cout<<"14、"<<"未分配";cout<<"15、";cout<>size;cout<>star16、t;cout<>part[i];address[i]=start;start=start+part[i];s=m;//m用来标记已分配内存的总的大小,s用来标记m之前的值m=m+part[i];flag[i]=1;//标识内存已分配if(m==size){cout<17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
9、"<10、"<11、"<12、"<<"已分配";if(flag[j]==0)13、cout<<"14、"<<"未分配";cout<<"15、";cout<>size;cout<>star16、t;cout<>part[i];address[i]=start;start=start+part[i];s=m;//m用来标记已分配内存的总的大小,s用来标记m之前的值m=m+part[i];flag[i]=1;//标识内存已分配if(m==size){cout<17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
10、"<11、"<12、"<<"已分配";if(flag[j]==0)13、cout<<"14、"<<"未分配";cout<<"15、";cout<>size;cout<>star16、t;cout<>part[i];address[i]=start;start=start+part[i];s=m;//m用来标记已分配内存的总的大小,s用来标记m之前的值m=m+part[i];flag[i]=1;//标识内存已分配if(m==size){cout<17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
11、"<
12、"<<"已分配";if(flag[j]==0)
13、cout<<"
14、"<<"未分配";cout<<"
15、";cout<>size;cout<>star
16、t;cout<>part[i];address[i]=start;start=start+part[i];s=m;//m用来标记已分配内存的总的大小,s用来标记m之前的值m=m+part[i];flag[i]=1;//标识内存已分配if(m==size){cout<17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
17、已分配完所有内存空间,请结束操作!"<>contin;cout<>contin;cout<18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
18、分配{part[++i]=size-m;count=i;//分区总数address[i]=start;//起始地址}}//if(msize){cout<>contin;cout<size)}/
19、/while}//**************************分配内存********************//voidDistribute(){inttag=0,space=0,i,j,situation=0;//situation用来表示分配是否成功cout<<
此文档下载收益归作者所有