《2023年广工操作系统实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年广工操作系统实验报告.pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7支)李操作系统实验报告学生学院一 计算机学院_ _ _ _ _ _ _ _ _ _ _专业班级2023级计算机网络工程2 班学 号_ _ _ _ _ _ _ _ _ _ _ _ _学生姓名_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _指导教师_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _2 0 2 3 年 12月2 6 日目录实验一、进程调度4。实验二、作业调度8。实验三、动态分区分派方式的模拟。错误!未定义书签。实验四、文献系统.错误!未定义书签。1 实验一进程调度1、实验目的编写并调试一个模拟的进程调度程序,采
2、用“短进程优先”调度算法对五个进程进行调度。以加深对进程的概念及进程调度算法的理解.2、实验原理在多道程序系统中,一个作业被提交后必须通过解决机调度后,方能获得解决机执行。对调度的解决又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分派策略所规定的资源分派算法。短进程优先调度算法是指对短进程优先调度的算法,它是从后备队列中选择一个或者若干个进程川等解决机分派给它,使它立即执行并一直执行到完毕,或发生某事件而被阻塞放弃解决机时再重新调度。短进程优先调度源程序如下:#inc 1 ude#de f ine n 5#de f ine num 5#define max 655 3 5t
3、y pe d e f str u c t p r o(i n t PRO_I D;进程号int a r rive_ t ime;到达时间int s u m_t i me;/运营总时间int f 1 ag;)Pro;/整数 排 序/选出第一个到达的进程int b u bble(int tem p)(int i,j,t e m=0;for(i=1;i num;i+)00 Io。i n t lastX=l;g f or(j=0;jtempj4-l)0 0 0 1。tem=tempj;s temp j=t e mpj+l ;。tem p j+l=tem;g l a s t X=0;0060|6)oi
4、f(lastX=1)br e ak;00)e t u r n temp 0;进程排序选出运营时间最短的进程P r o b u b b l e(P r o p J)(0 i n t i,j;Pro t e m p=0 ;Pro s n u m ;f b r(i =0 ;i n u m;i+)0 6 s i =p i ;00 o o f o r(i=l ;i n u m;i+)i n t l a s t X=l;f o r (j =0 ;j s j +l .s u m _ t i m e )Odd s t e m p=s j ;。s j =s j +1 ;s j+l =t e m p;a。l a
5、s t X=O;00 00|e i f (1 a s t X=l)b r e a k;w r e t u r n s O J;v o id S P F(int p)o i f(n 0)。i nti,j,k,1 ,tc=0;Pro s e qn;Pr o temp_seqln;o p Y int f(*口 ”);printf(1 1 网络2 班 杜 伟 彦 n );。叩 i n t f(n);gprintf(实验一:短进程优先调度算法S P Fn);o o P ri n tf(请依次输入5 个进程的进程号、到达时间和执行时间n);。printf(”*n);。f or(i=0;i n;i+)。s
6、ca n f(%d,%d,%d,&seqi.PRO_I D,&seqi.ar r iv e _ t ime,&s eq i.sum_ t im e);)。prin t f(调度顺序是:n);。初始化tc“int tempnum;。f o r(i=0;i n um;i+)00tem p i=s e q i.ar r ive_ time;tc=bubble(tem p);/t c 是断点,相称把第一个到达的进程时间赋值给t。/f la g 表达相应i 的 pro的队列情况。/-I 表达未进入过队列,0 表达在队列,1 表达被清除8for(i=0;in;i+)8 s e q i.fla g=1;f
7、o r(i=0;i n;i+)。8 f o r(j=O;j n;j+)o。if(seqj.f la g!=l&seq j.a r r ive_t i m e=t c)seq j.fla g=0;f o r(j=O;jn;j+)8。t emp_ s e qj=seq j;。if(s e qj.f 1 ag!=0)。t e mp_ s eq j.sum_ t ime=max;l=bu b bl e(temp_seq).PRO_ 1 D;。油 0 r(j=O;jn;j+)。“if(1 =se q j.PR O _I D)k=j;tc=t c+b u b b le(tem p _se q).s u m
8、_ t ime;/进程运营的总时间“s e qk.f 1 a g=l。printf(H%d n,1);0 叩rint f(”n);)v o id main()SPF(n);调用函数ff 1 u s h(stdin);g etch a r();运营结果:D:project艰作系统实蛉Debugfeg作系统实验exe11 网 络2班 杜 伟 彦3111006325X l f XXXXl f XXXyXl t f l t f XXl t f MXXXl f l t f XXXXl f XXXXXXXl f Xl t f l f l t f MMyi t f XXXXXl t f l t f l f
9、l f l f1,0.42,1,33,4,24,3/5 3 2痼度顺序是:14352结果分析与实验小结短进程优先调度适合大部分短进程,但是不适合长进程长时间运营。一开始程序不能停止,会直接返回,后来加上f f lus h(s tdin);get c ha r();问题解决了。2实 验 二 作 业 调 度1、实验目的本实验规定学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。2、实验内容及规定1、为单道批解决系统设计一个作业调度程序(1)、编写并调试一个单道解决系统的作业调度模拟程序。(2)、作业调度算法:分别采
10、用先来先服务(F C F S)、响应比高者优先(H RN)的调度算法。(3)、由于在单道批解决系统中,作业一投入运营,它就占有计算机的一切资源直到作业完毕为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的C P U时限等因素。(4)、每个作业由一个作业控制块J CB表达,J C B可以包含如下信息:作业名、提交时间、所需的运营时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W (W a i t)、运 营R(Ru n)和完毕F (F i ni s h)三种状态之一。每个作业的最初状态总是等待W。(5)、对每种调度算法都规定打印每个作业开始运营时刻、完毕时刻、周转时间、
11、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺陷。2、模拟批解决多道操作系统的作业调度(1 )、写并调试一个作业调度模拟程序。(2)、作业调度算法:分别采用先来先服务(F C F S)和短作业优先调度算法。(3)、在批解决系统中,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源规定,所需要的资源是否得到满足。作业调度程序负责从输入井选择若干个作业进入主存,为它们分派必要的资源,当它们可以被进程调度选中时,就可占用解决器运营。作业调度选择一个作业的必要条件是系统中现有的尚未分派的资源可满足该作业的资源规定。但有时系统中现有的尚未分派的资源既可
12、满足某个作业的规定也可满足其它一些作业的规定,那么,作业调度必须按一定的算法在这些作业中作出选择。当作业正常运营完毕或因发生错误非正常终止时,作业进入完毕状态,此时,系统将收回该作业所占用的所有资源,并清除有关的J C B o并输出显示作业运营情况及作业输出结果。3、实验设计方案及原理1、编写并调试一个单道解决系统的作业等待模拟程序。假设在单道批解决环境下有四个作业JO B 1、J O B 2、JO B 3、JO B 4,已知它们进入系统的时间、估计运营时间。分别采用先来先服务(F C F S),最短作业优先(SJF)、响应比高者优先(H RN)的调度算法,计算出作业的平均周转时间和带 权 的
13、 平 均 周 转 时 间。对每种调度算法都规定打印每个作业开始运营时刻、完毕时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺陷。4、源 程 序 清 单(需附具体的注释)#inc 1 ude#includ e#i n elude#d e f ine getpch(type)(type*)ma 1 lo c(s iz e of(type)#d e fin e n u l 1 0i ntn;float T l=0,T2=0;i n t t im e s=0;st r uct jc b(cha r n a me10;in t reach t im e;i
14、n t star t time;int nee d time;float s u p e r;int fini s htime;flo a t c ycletime;float c 1 t i me;char s ta t e;struct j c b*n ext;/作业控制块作业名/作业到达时间作业开始时间作业需要运营的时间作业的响应比/作业完毕时间/作业周转时间作业带权周转时间作业状态/结构体指针 *r e a dy=NU L L,*p,*qtypedef stru c t j cb JCB;voi d inital()/建立作业控制块队列,先将其排成先来先服务的模式队列int i;pri
15、ntf(un输 入 作 业 数:);scanf(H%dn,&n);for(i=0;i n a m e);get c h();p r e ac h tim e=i;pr i ntf(作业默认到达时间:d”,i);pr i nt f(un 输入作业要运营的时间:*,);scan f(%d,&p-need t ime);p-state-W1;pnex t=N U L L;i f(rea d y=NULL)rea d y=q=p;elseq-n e xt=p;q=p;)v o id o u tp u t(J CB*q,in t j)/*显示所有作业的情况*/JCB 大 pr=r ea d y;f 1
16、o at f=0.0;printf(所有作业的情况:n );/列表显示所有作业的情况if(j=3)。p r i n t f(作业名 t t 到达时间 t 所需运营间 t 响应比 t t 作业状态n);pr in t f(u%st t%dt t%d t t%f t%c n,q-n a me,q-reachtime,q-needtime,q-su p er,q stat e);wh i le(p r)if(pr-super n ame,p r-r e a c htim e,pr n e e dtime,f,p r-state);oelse p r i ntf(%s t t%d t t%d t t%
17、f t%c n,p r-n ame,p r-re a chtime,pr-n e e d time,pr-s uper,pr-sta t e);pr=pr-nex t;)el s e p r intf(作业名tt到达时间 t 所需运营间t作业状态 n);p r in t f(*%s t t%d t t%dt t%ct n n,qname,q-reacht i m e,q ne e d t im e,q-stat e);while(pr)pr i n t f(%s tt%dtt%d tt%c tn,prname,pr-r e a ch t ime,p r-ne e d t i me,pr-sta
18、 t e);。p r=p r-nex t;)void di s p(JCB*q,i nt m)/显示作业运营后的周转时间及带权周转时间等(i f(m=3)显示高响应比算法调度作业后的运营情况 outp u t(q,m);p rint f(n 作业s 正在运营,估计其运营情况:n”,q-nam e);prin tf(开始运营时刻 t 完毕时刻 t 周转时间 t 带权周转时间 t 相应比nn );pri n t f(u%dt t%dtt%ft%f t%fn,q-s t a r t time,q-f inishtim e,q-cycle t ime,q-cl t ime,q-s u p e r);g
19、 e t ch();e Ise/显示先来先服务,最短作业优先算法调度后作业的运营情况o u tput(q,m);print f(”n作业$正在运营,估计其运营情况:n 0,q-name);prin t f(开始运营时刻 t完毕时刻t周转时间t带权周转时间n n);printf(n%dtt%dtt%ft%fn,q-s t a r t time,q-f i n ishti m e,q-c y c 1 etime,q-c 1 time);getch();)v o idrunnin g(JCB*p,in t m)/运营作业(if(P=ready)/先将要运营的作业从队列中分离出来(r eady=pne
20、xt;p-n e xt=NU L L;)else(q=ready;while(q-next!=p)q=q-n ex t;q-next=p-next;)p s t a rttim e=times;计算作业运营后的完毕时间,周转时间等等p-sta t e=R ;p-finish t im e=p startti m e+p-ne e dti m e;p-c y clet i me=(float)(p f inishtime-p-re a chtim e);p clt i me=(f loat)(p c yc 1 e time/p-n e edt i me);Tl+=p-cycletime;T2+=
21、p-cltime;disp(p,m);/调用disp()函数,显示作业运营情况t i mes+=pn e ed t ime;p-sta t e=F;pr i n t f (”n 作业s 已经完毕!n 请输入任意键继续.nu,p-name);f re e(p);/释放运营后的作业ge t ch();)v o id super()计算队列中作业的高响应比(JCB*p a d v;padv=r e a d y;do i f(p a d v-stat e=W,&(padv reachtime)super=(f 1 oa t)(t i mes-padv-r e a c h time+p a dv-n e
22、 edtim e)/p a dv-n eedtim e;)padv=pad vnext;while(padv!=NULL);voi d f i n al()最后打印作业的平均周转时间,平均带权周转时间f l o a t s,t;t=Tl/n;s=T 2/n;getc h();P r i n tf(n n 作业已经所有完毕!);p r intf(nn%d个作业的平均周转时间是:pri n tf(Hn%d个作业的平均带权周转时间是上3 口 1 1”,n,s);v o id hr n(i nt m)高响应比算法JCB*min;in ti,i den;sys t e m(cis);i n i t al
23、();fo r(i=0;i state=W,&p-reachtimesu p erm i n-s u per)m in=p;p=p-ne x t;whil e(p!=NU L L);r u nn i ng(min,m);调用 run n i n g()函数 /fo rf i n a 1();/调用 ru n n in g()函数)vo i d fcf s(in t m)/先来先服务算法(int i,iden;syst e m(c Is);i ni t a 1();fo r(i=0;i s ta t e=,W&p-r eachtime n e x t;while(p!=NU LL&iden);i
24、 f(ide n)(i-;p rin t f (“n 没有满足规定的进程,需等 待)tim e s+;i f(tim es100)prinlf(”n 时间过长”);getch();)elser u n n i n g(p,m);/调用 r u n n i n g()函数i den=0;f i n al();调用running。函数voi d mai n()/主函数in t m;while(l)p p in tf (*”).p r int f(11网络2 班 杜 伟彦 n);p r intf(实验2-作业调度系统 n);p rin t f(”1 .先来先服务算法n );pr i ntf(2.响应
25、比高者优先算法n);printf(3.退出程序n );p ri n tf(*W)printf(选择所要操作:n”);s c an f(%d ,&m);swit c h(m)/选择所要操作(c a se 1:/fcfs先来先服务算法f cfs(m);g e t ch();t i mes=0:ma i n();b r e a k;case 2:/h r n 响应比高者优先算法h r n(m);g e t c h();tim e s =0;main();b r e a k;case3:退出程序exit(0);d e f au 1 t:p r inlf(选择错误,重新选择getch();syst e
26、m(M c Is);)5、程序运营结果5.1 先来先服务算法杜伟彦3111006325法I统算一系法先f业罂向序天车比程t验D:project 膜 作 实 验DebugJl 作 实 睑 exe.1业业名-Mm*1寸-:日:3:备行况业达运情业2正在及行,估计甚运行情况:始运行时刻 完成时刻4业2已经完成?ptF业名 到达时间1所需运行间43周转时间4.000000所需运行间作业状态RW带权周转时间1.000000作业状态132人作名完经已到达时间1作业3正在运,估计甚运行情况:开始运行时刻 完成时刻4 7所需运行间3周转时间6.000000作业状态R带权周转时间2.000000黯涯璘续5.2响
27、应比高者优先算法*D:project旗作系统实验Debugll作系统实验.exe输入柜Ik要运行的时间:3前建 簿 螂 输2作到ISbtS业名.2业人中Nofa:c间的:畜行况业达运情4间27m作业a正在运行,估计甚运行情况:开始运行时刻 完成时刻所需运行间324作业状态RWU周转时间带权周转时间3.0000001.0000000b 120 3 D:project馍作妾统实验Debug想作系统实验.exe乍业b正在运行,开始运行时刻估it甚运行情况:完成时刻5周转时间4.000000带权周转时间2.000000乍业b已经完成?青输入任募检继?有作业的情况:乍亚名续到达时间2所需运行间4作业状态
28、R乍业C正在运行,开始运行时刻估计其运行情况:完成时刻周转时间带权周转时间9?.0000001.750000毁幅1续 乍祥业已飕经全霜部完成?哪褊匿匿3:6、结果分析与实验小结参考了几个作业调度的范例,作业调度实践起来并不难,但需要慢慢调试。和同学讨论了设计思绪之后就开始做了,虽然有小错误,但是通过反复调试也修正了 BUG。3实验三动态分区分派方式的模拟1、实验目的:了解动态分区分派方式中的数据结构和分派算法,并进一步加深对动态分区存储管理方式及其实现过程的理解2、实验内容:(1)用C语言分别实现采用初次适应算法和最佳适应算法的动态分区分派过程和回收过程。其中,空闲分区通过空闲分区链(表)来管
29、理;在进行内存分派时,系统优先使用空闲区低端的空间。(2)假设初始状态下,可用的内存空间为64 0 KB,并有下列的请求序列:作业1申请13 0 KB 作业2申请60KB 作业3申请1 00KB 作业2释放60KB 作业4申请20 0 KB 作业3释放10 0 KB 作业1释放130KB 作业5申请140 KB 作业6申请6 0 KB 作业7申请50KB 作业8申请60KB请分别采用初次适应算法和最佳适应算法进行内存的分派和回收,规定每次分派和回收后显示出空闲内存分区链的情况。3、思考:讨论各种分派算法的特点。(1)初次适应算法。使用该算法进行内存分派时,从空闲分区链首开始查找,直至找到一个能
30、满足其大小规定的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分派给请求者,余下的空闲分区仍留在空闲分区链中。该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被运用,从而保存了高地址部分的大空闲区。显然为以后到达的大作业分派大的内存空间发明了条件。缺陷在于低址部分不断被划分,留下许多难以运用、很小的空闲区,而每次查找又都从低址部分开始,这无疑会增长查找的开销。(2)最佳适应算法。该算法总是把既能满足规定,又是最小的空闲分区分派给作业。A 为了加速查找,该算法规定将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足规定的空闲区,必然是
31、最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。由于每次分派后剩余的空间一定是最小的,在存储器中将留下许多难以运用的小空闲区。同时每次分派后必须重新排序,这也带来了一定的开销。4、源程序清单(需附具体的注释)#i nclude#i nclud e#de fine Free 0 空闲状态#d e f ine B u sy 1 /已用状态#defin e OK 1 完毕#define ERROR 0/犯错#d e fin e MAXJeng t h 64 0 最大内存空间为 64 0 KBtypedef int S tatus;t y pede f st r u ct f re e a r
32、 ea/定义一个空闲区说明表结构int ID;/分区号long size;分区大小Ion g a d d ress;分区地址“n t sta t e;状态E 1 emType;/-一-线性表的双向链表存储结构 一一-一一type d ef s truct D uLN o de/dou b le linked 1 i st(e E lem T ype d ata;str u ct DuLN o d e*p r ior;前趋指针s tr u ct DuLNode*ne x t;/后继指针 Du L No d e,*DuLi n k Li s t;DuL i nkLis t blockfi r st
33、;/头结点DuLin k L i st b 1 o c ka s t;尾结点S t a t us al 1 oc(i n t);内存分派S t atus free(int);内存回收S t at u s Fir s t_ f i t(i nt,in t);/初次适应算法St a t u s Be s t _fit(int,i n t);/最佳适应算法vo i d sho w();/查看分派S t a t u s Ini t b 1 oc k();开创空间表Statu s Ini t b 1 o c k()/开创带头结点的内存空间链表bloc k _f i rst=(Du L inkList)m
34、a 1 lo c(sizeof(DuLNo d e);bl o c k _ 1 a st=(D u L i n k L i s t)malloc(size o f(Du LNo d e);bl o c k _fi r st-p r i o r=NULL;blo c k_ f i r st n e xt=b lo c k_las t;出 1 o c k _ 1 ast-pr i or=bl o ck_f i rst;b lo c k_1 a s t-next=NULL;。b lock_l a s t-d a t a.a d d r ess=0;block_ 1 a s t-d a ta.s i
35、z e=MAX_ 1 e n gth;b lo c k _ la s t-d a ta.ID=0;?b 1 ock_la s t-da t a.state=Fr e e;e t u m OK;)/-一 分 配 主 存 一 一 -S t atus a 1 1 o c(i nt ch)(o in t ID,req ues t;空o utV V”请输入作业(分区号)、。c inI D;。c outvv”请输入需要分派的主存大小(单位:KB):”;0ci n r e q u est;A f(requ e s t 0|re q u e s t=0)co u t分派大小不合适,请重试!Ven d 1;re
36、tu r n ERROR;)6 i f(c h=2)/选择最佳适应算法 if(Best_ fit(ID,reque s t)=0K)c o ut分派成功!endl;6 else cout内存局限性,分派失败!endl;。return O K;else/默认初次适应算法if(First_fi t(I D,req u est)=OK)c o ut”分派成功!endl;“el s e c o u t内存局限性,分派失败!”da t a.ID=I D;tern p-data.size=r e q u e s t;tern p data.s tat e=B u s y;DuLNode*p=block_
37、f i r st-nex t;while(p)(3 if(p-data.state=Free&p-data.si z e=r e q u est)。有大小恰好合适的空闲块3 p-dat a.s tat e=Bu s y;ooop d a ta .ID=ID;。re t u r n OK;br e ak;)if(p-d a t a.state=Fr e e&p-dat a,sizerequ e s t)。有空闲块能满足需求且有剩余。temp-pri o r=pprior;”e mp-next=p;g t emp-data.a ddre s s=p-d a ta.address;8Ppri o r
38、-n e xt=t e mp;ooop-prior=temp;p-data.a d dress=t emp-d at a.a d d ress+temp-d a t a.siz e;。p d a t a.s ize-=req ues t;are t urn OK;8。b reak;。p=p-ne x t;0)retu r n E RROR;-一 -最佳适应算法-Statu s Bes t _fit(int I D,i n t req u est)(6 i nt c h;/记录最小剩余空间Du L i nkList t emp=(D u Lin k L i s t)m a lloc(siz e
39、of(D uL N ode);t emp-d a t a.ID=ID;te m p -data.s ize=r e quest;t em p d a t a.stat e=Busy;。D uLNode*p=b 1 o ck_ fi r st-n ext;D u LNo d e*q=NUL L;记录最佳插入位置owhile(p)/初始化最小空间和最佳位置。b i f(p-d a ta.st a t e=F r e e&(p-d a ta.s i zerequest I|p-d ata.s i z e=r e que st)(叱=P;0ch=p-d a t a.size-r eque s t;e
40、br e a k;)叩 二p_next;w h il e(p)gif(p-d a ta.s t ate=F r e e&p-data.s i ze=r e qu e st)。空闲块大小恰好合适8 叩data.ID=ID;。叩-d ata.s t a te=B usy;“return OK;。b re a k;i f(pda t a.sta t e=Fr e e&p-data.s i z e request)。/空闲块大于分派需求i f(p-d a t a.size-request c h)/剩余空间比初值还小 d ata.s i zereques t,更新剩余最小值“q=p;更新最佳位置指向0
41、)。p=p-n e x t;)oi f(q=NULL)re tu rn E RRO R;/没有找到空闲块el s e/找到了最佳位置并实现分派s t emp-p r i o r=q prior;o t e mp-nex t=q;31 emp-da t a.ad d ress=q-dat a.addre s s;q-p r io r n ext=temp;gq-pr i oi-temp;q-d a t a.add r ess+=r equ e st;gq-dat a.s iz e=c h;”etu r n OK;0)/-主存 回 收-一一一-Stat u s fr e e(int ID)(Du
42、L N o d e*p=block_fir s t;,wh i le(p)b(“f(pdata.ID=ID)b。p-data.s t a t e=Fr e e;“p-data.ID=F r e e;if(p-pri o r-d ata.state=Free)/与前面的空闲块相连0 3 。p-pr i o r d a t a.size+=p-data.s i z e;p-prior-ne x t=p n e x t;p-nextprio r=p-P rior;bb。“f(p-next-d a t a.s t ate=F r ee)与后面的空闲块相连O b g p-d a ta.siz e+=p-
43、nex t dat a.s i ze;3 p n e xt-next-prior=p;a。p-next=pne x t-ne x t;。000)b bre a k;。p=p-n e xt;ret u r n OK;/_ -初 卮 T青/5 1 v o id show()(c o ut+H-F+H-I-I F+HF+n”;c outn+主 存 分 配 情 况+n”;c o u tn e x t;owh i le(p)g c out 分 区 号:;if(p-d a ta.ID=Free)coutda t a.I Ddat a.add r ess e n dl;。c o u t v V”分区大小:v
44、v p d a ta.si z eVv KBHendl;%outdata.s t ate=Free)c o u t“空 闲 en d 1;els e cou t V已分派”v e ndl;0co u t n _-n n ext;)-主 函 数-vo i d ma i n()(i nt c h;/算法选择标记,co u t V V”1 1网络工程2班 杜 伟 彦 n;co u t 实验三 n;co u t动态分区分派方式的模拟 n ;o co u t 1初次适应算法 n ;C o u t 2最佳适应算法 n C 0 Ut V请选择分派算法:;ci nch;“ni t b lo ck。;/开创空间
45、表i n t cho i ce;/操作选择标记whi le(1)co u t *1:分派内存 n ;c o u t *2:回收内存 n;,co u t *3:查看分派 n;co u t *0:退 出 n;C 0 u t c h o i c e ;i f(cho i c e =1)a llo c(ch);/分派内存。ae lse i f (cho i c e=2)/内存回收oi n t ID;。0 C 0 Ut ID;。f r e e(I D);s)e lse i f (cho i c e =3)s h o w();/显示主存e l s e i f(cho i ce=0)b r e a k;/退出“e lse /输入操作有误。co u t 输入有误,请重试!V、E空二谑悬停号程验改应应配工器适适分1:络雷法由晒露作需分回查退渡警存存电内内分配(分回查退.一况一情一+H配I+分-Fi丁王一3K B403菖取选12主闫共3:0帝需功1:2:3:0成加普配55清请请分5555X号址J+也一区客*6、结果分析与实验小结本次实验比较难,初次最佳适应算法和对已分派分区的释放原理比较繁琐,这里同样采用双链表指针操作结构体来存储已分派分区。