《2023年操作系统实验四实验报告动态分区分配算法.docx》由会员分享,可在线阅读,更多相关《2023年操作系统实验四实验报告动态分区分配算法.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统实验四【实验题目】:动态分区分派算法【实验学时】:4学时【实验目的】通过这次实验,加深对动态分区分派算法的理解,进一步掌握初次 适应算法、循环初次适应算法、最住适应算法和最坏适应算法的实现 方法。【实验内容及规定】问题描述:设计程序模拟四种动态分区分派算法:初次适应算法、循环初次 适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空 闲分区个数为n,空闲分区大小分别为Pi, ,Pn,在动态分区分派过 程中需要分派的进程个数为m(mn),它们需要的分区大小分别为 S” . , Sm,分别运用四种动态分区分派算法将m个进程放入n个 空闲分区,给出进程在空闲分区中的分派情况。程序规定
2、:1 )运用初次适应算法、循环初次适应算法、最佳适应算法和最坏 适应算法四种动态分区分派算法模拟分区分派过程。2)模拟四种算法的分区分派过程,给出每种算法进程在空闲分区 中的分派情况。3)输入:空闲分区个数n,空闲分区大小Pi,,P”,进程个数m,进程需要的分区大小Si,,Smosgg temp =Tk. data;0008OdOO000000 o00oofg n =k;go t a g 1=1;) s else if (t a g 1 =0)。n=j;00|0 T n .data=temp - d i. data;。T n .arrayT n . len g th=di . n ame;oo
3、ooTn.lenglh+;tag=();g bre a k;。e Is egt ag= I;i f(tag=l) c oulV V”作业太大,无满足条件分区!vvendl; break;)/re();void wo r st_f i t()renew ();c o ut worst fit:;int i, j, k , temp ,m;int t a g=0,n= 0 ;0fb r (i=O;i wo r k_n u m; i +)(for(j=0; jif(di. d at a = T . dal a )int tag 1=0;t cmp= T j .data;m=j; f or( k =m
4、+ 1; k t e mp)if(T k . d al a =di.dat a )a。 temp=TkJ. da t a ;tag 1 =1 ;OdOOdOO 0 |。oiel s e if(ta g 1=0)g o o n =j;000 |data;.name;data;.name;Tn.data=t e mp - d ij.03T n. array Tn.l e ng t h= d i Tn.lcn g t h +;。 t a g=0;。 brea k ;。照 Isea g =1;6(oi f (tag=l) 。fout”作业太大,无满足条件分区!。br e ak;)o“/re ();)v
5、oid ma i n()n e xt_ f i t ();show();best_f i t();show ();worst_f i t();s how();。s ystem(pauseH);实验截图:匚 C:Docuaents and Sett ingsAd*inist rat空闲分区数:9作业为ABCD EF作业大小718920 358空闲分区1616832 6432816 64fist fit0A(8F8 14B9DE328 1664next f it9A1685BC1DEF328 1664best fit16161A5BC29E :L2D0F 1664worst f il:161682
6、4F 28ACD328 1611BE晴按任意键继续.4)输出:初次适应算法,循环初次适应算法,最佳适应算法,最坏适应算法,最终内存空闲分区的分派情况。实现源代码:# in c lu d ei n ckide# inc 1 ud e inckide# def i ne max 10 0usi n g name s p ace s td;1 nt work_num;int z o nc_num;s tru c t Dat a i nt data;o c h ar name;);D a ta *d=new Datamax;stru c t T able 1 nt d a ta;char array
7、max;int leng t h ;);T a bl e *T=new T ablemax;Ta b le *t e mp=new Ta b le max;void Init()ifstreaminf(DTF Q .txt);in t i,j;char c h;in f w o rk_n u m;c o u t 作业数:H wor k _numzone_num;c o utV空闲分区数:zone_ n um e ndl;COUtVV” 作业为:”;for( j =0; jwo r k_ n um; j +)(i nf. g e t (ch);8d j. name= c h;c outsetw(
8、4)dj.n a me;ocoutend 1 ;c out ”作业大小:”;fo r (i=0;iwork_num; i+)(finfdli.data;ocoutsetw( 4 )di. data;ocout e n d 1;cout 空闲分区:”;4 o r (j=0; j zo n e_num; j +)o in f Tj. data;t emp j. dat a =T|j . d a ta;8T j 1.1 e ngt h =0;t emp j. 1 ength=0;g c o utsetw ( 4 )T j .da t a;6)o utend 1 ;void renew ()intj;
9、fo r (j=O;jz o n e _n u m; j+)(s T j .dat a = t emp j . da t a;。0rH j . 1 e ng t h=t e mpj.lcn g th;)1void re()(int i;for(i=0;iz o ne_ n u m; i +)Ti. arrayT i . 1 e n g t h =z #v o id show ()Mn t i,j;”e();f o r(i= 0 ;izo n e_num; i +) 。 i f (TiJ.da t a =tcm p i J.da t a )c o u t setw(4)T i.data;。els
10、e 。c out setiosf 1 ags(i o s: : r i g h t)s e tw( 4 ) Ti.da t a s etw(l);。for( j =0; j Ti.l e n g th; j+)。if( Ti.arr a yj = =*#)。 break;。 else。 o ut s e t ios f 1 a g s (io s :r i gh t ) T i. a rra y |j;0) c o u te n dl;) void first_f i t ()r e new();cou t ,f i st fit:;in t i,j;int la g =0;o f or(i=
11、0; iwork_n um; i +)of o r(j=0;jzone_ n um;j+)00 |g if(di .data =T j. dat a )8aT|j.da t a=T j .da t a - d i .da t a;ogTj. arr a y T j. 1 ength=di.na me;0Tj. 1 en g lh+;tag =0;a。 b r eak;O000 )。el s et a g=l;o if(t a g=l)oocoutVv”作业太大,无满足条件分区!Vv e n d 1;g break;/ re();void next_fit ()(renew();coutne x
12、 t f it:;int i,j;i n t m=0, ta g =0, co u nt=O;f or(i=0;iw o rk_num;i+)o for (j = m;jif(di.data= T j.da t a)00(g T j . dal a =T j .da t a - di.dat a ; o。T j .a r r a yTjJ.l e ngthj=di. n ame;。 T jl.leng t h+;gg tag=O;。m=j;a。break;)oelse60 |tag=l;count +;awhile(tag=l & c o u nt z on e _num)(0f o r(j=
13、 0 ;jm;j+)86 if ( d ij. data ta g = 1 ;。 count +;00)0000 i f (tag= 1 & cou n t=zone_num)oco u t ”作业太大,无满足条件分区!”Vendl;r eak;/re ();void best _f i t ()(renew (); c o u t b e st fit:; i nt i , j, k, t e mp,m;A n t tag=O, n=0;f o r(i=0;iwor k _ n um; i+)。 f or( j =0; jzone_num;j+ + )(0 if(d i .data=T j.da t a)Od t e mp=Tjl.data;m=j;。int tag 1 =0;o o ofor(k=m+1; k = z one _ n u m;k+)g 8 i f(Tk. d a t a=di.data)