1、操作系统实验四实验报告动态分区分配算法支配系统真验四之阳早格格创做【真验题目】:动向分区调配算法【真验教时】:4教时【真验手段】通过那次真验,加深对于动向分区调配算法的明白,进一步掌握尾次符合算法、循环尾次符合算法、最好符合算法战最坏符合算法的真行要领.【真验真质及央供】问题形貌:安排步调模拟四种动向分区调配算法:尾次符合算法、循环尾次符合算法、最好符合算法战最坏符合算法的处事历程.假设内存中空忙分区个数为n,空忙分区大小分别为P1, ,Pn,正在动向分区调配历程中需要调配的进程个数为m(mn),它们需要的分区大小分别为S1, ,Sm,分别利用四种动向分区调配算法将m个进程搁进n个空忙分区,给
2、出进程正在空忙分区中的调配情况.步调央供:1)利用尾次符合算法、循环尾次符合算法、最好符合算法战最坏符合算法四种动向分区调配算法模拟分区调配历程.2)模拟四种算法的分区调配历程,给出每种算法进程正在空忙分区中的调配情况.3)输进:空忙分区个数n,空忙分区大小P1, ,Pn,进程个数m,进程需要的分区大小S1, ,Sm.4)输出:尾次符合算法,循环尾次符合算法,最好符合算法,最坏符合算法,最后内存空忙分区的调配情况.真行源代码:#include#include#include#include#define max 100 using namespace std;int work_num;int
3、zone_num;struct Dataint data;char name;Data *d=new Datamax;struct Tableint data;char arraymax;int length;Table *T=new Tablemax;Table *temp=new Tablemax;void Init()ifstream inf(DTFQ.txt);int i,j;char ch;infwork_num;cout做业数:work_numzone_num;cout空忙分区数:zone_numendl;cout 做业为 :;for(j=0;jwork_num;j+)inf.ge
4、t(ch);dj.name=ch;coutsetw(4)dj.name;coutendl;cout做业大小:;for(i=0;idi.data;coutsetw(4)di.data;coutendl;cout空忙分区:;for(j=0;jTj.data;tempj.data=Tj.data;Tj.length=0;tempj.length=0;coutsetw(4)Tj.data;coutendl;void renew()int j;for(j=0;jzone_num;j+)Tj.data=tempj.data;Tj.length=tempj.length;void re()int i;for
5、(i=0;izone_num;i+)Ti.arrayTi.length=#;void show()int i,j;re();for(i=0;izone_num;i+)if(Ti.data=tempi.data)coutsetw(4)Ti.data;elsecoutsetiosflags(ios:right)setw(4)Ti.datasetw(1);for(j=0;jTi.length;j+)if(Ti.arrayj=#)break;elsecoutsetiosflags(ios:right)Ti.arrayj;coutendl;void first_fit()renew();coutfist
6、 fit:;int i,j;int tag=0;for(i=0;iwork_num;i+)for(j=0;jzone_num;j+)if(di.data=Tj.data)Tj.data=Tj.data - di.data;Tj.arrayTj.length=di.name;Tj.length+; tag=0; break;elsetag=1;if(tag=1)cout做业太大,无谦脚条件分区!endl;break;/re();void next_fit()renew();coutnext fit:;int i,j;int m=0,tag=0,count=0;for(i=0;iwork_num;
7、i+)for(j=m;jzone_num;j+)if(di.data=Tj.data)Tj.data=Tj.data - di.data;Tj.arrayTj.length=di.name;Tj.length+; tag=0;m=j; break;elsetag=1;count+;while(tag=1 & countzone_num)for(j=0;jm;j+)if(di.data=Tj.data)Tj.data=Tj.data - di.data;Tj.arrayTj.length=di.name;Tj.length+; tag=0; break;elsetag=1;count+;if(t
8、ag=1 & count=zone_num)cout做业太大,无谦脚条件分区!endl;break;/re();void best_fit()renew();coutbest fit:;int i,j,k,temp,m;int tag=0,n=0;for(i=0;iwork_num;i+)for(j=0;jzone_num;j+)if(di.data=Tj.data) temp=Tj.data; m=j;int tag1=0;for(k=m+1;k=zone_num;k+)if(Tk.data=di.data)temp=Tk.data;n=k;tag1=1; else if(tag1=0)n=
9、j;Tn.data=temp - di.data;Tn.arrayTn.length=di.name;Tn.length+;tag=0;break;elsetag=1;if(tag=1)cout做业太大,无谦脚条件分区!endl;break;/re();void worst_fit()renew();coutworst fit:;int i,j,k,temp,m;int tag=0,n=0;for(i=0;iwork_num;i+)for(j=0;jzone_num;j+)if(di.data=Tj.data) int tag1=0; temp=Tj.data; m=j;for(k=m+1;k
10、temp)if(Tk.data=di.data)temp=Tk.data;n=k;tag1=1; else if(tag1=0)n=j;Tn.data=temp - di.data;Tn.arrayTn.length=di.name;Tn.length+;tag=0;break;elsetag=1;if(tag=1)cout做业太大,无谦脚条件分区!endl;break;/re();void main()Init();first_fit(); show(); next_fit(); show();best_fit(); show();worst_fit();show();system(pause);真验截图:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1