操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
操作系统实验报告_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.专业.专注.徐州工程学院管理学院实验报告实验课程名称:计算机操作系统实验地点:南主楼七楼机房2014年2月至2014年4月专业信息管理与信息系统xxx班级11信管2班学生姓名word可编辑学号指导老师刘一男实验报告实验项目:分时系统实验学时:2实验日期:2013-2-28实验要求:加深学生对多道系统中进程管理的理解,了解进程的各种状态及其转换过程,分时系统中时间片的设置及进程在时间片开始和结束时的调度过程。实验内容:(1)利用程序设计语言模拟分时系统中多个进程按时间片轮转调度算法进行进程调度的过程;(2)假设有五个进程A,B,C,D,E,它们的到达时间及要求服务的时间分别为:进程名ABCDE

2、到达时间01234服务时间43424时间片大小为1,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。(3)修改时间片大小为2,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。(4)修改时间片大小为4,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。,输入进程名3输入进程到达时间褊入进程而日恫3输无进程名BB输入进程到达时间,输入进程服务时间需输入进程名褊入进程到达时间请输入进程月胳时间请输入进程名褊入进程到达时间请输入进程服务时

3、间请输入进程名aPDundtine:12upnaroundtinarDundtme:9upnaboundtiii妙n_d产quhd_tme:8肥i_tunjound_tine:4|k£u_ujuuu_U_u_M_U-hi-MJU-U-U-H-HJkri-M.KIKKK.C:D口cinents皿dSettinggld»:WA进程到达时间情就迷程服务时间信输入进程名踹人进题达时同黄输人进程服务时同倩觥人进程名processtineanewarriuetineaprocessarriveprocessarriueunEunununGhauedone*urn_around_time

4、:14ei_turn_around_tine:3.5unEJtXKJtXKJtXKJtXMJtXKJtXMJthavedone*urn_around_time:13ei_turnaround_time:3.25请按任意键继续.'C:Ducuient3andSettinsVAiCzYDgcus'iitsandSe*tting:§:用输入进程服务时间青输入拱程服务时间输入进程名ln.fi述曲曲曲曲c>、Ta.fc-A>Ta-Lr1ahcde9tineanewwei_tum_around_tine13.5MXX,K)(量例)(:MMX,MJCJC*)C:Krun

5、ErunErunBBhavedonefturD_ai"Ottnd_tine:12wei_turn_arouhd_tine4runCruinCChavedone!turnaround.tine:13weijurn_around_tin©:3.25tlineaunEtimeainEtimeaneisinewprocess:process:processprocessprocessarrivearriuearriue通外冲i“earriveEhauedone!turnaround.tine:13wei.turnarounid.tinE:3s25请拉任意锹影索,Jbauedone!

6、:upn_cessarpiueprocessarrivePDQGB8等arrive时间片的大小对计算机的性能产生什么影响?轲入班程到达时间褊人进程服务牺,入进程名一输入进程到达时间.带人进程服务时间输入进程到达时间输入进程服务时间眄入进程名褊人进程到达时间请输入进程服务时间工输入进程名.around:doi.around_tinie:12ururoundjin.au*ound_tine;14UK*n_araund_tin(i:doinrn_around_tinie:13、i_tUbri-arDund_tin按任意键继续在时间片轮转算法中,时间片的大小对系统性能有很大的影响,

7、如选择很小的时间片将有利于段作业,因为它能较快地完成,但会频繁地发生中断、进程上下文的切换,从而增加系统的开销,降低了CPU效率;反之,如选择太长的时间片,使得每个进程都能在一个时间片内完成,时间片轮转算法便退化为FCFS算法,无法满足交互式用户的需求。一个较为可取的大小是,时间片略大于一次典型的交互所需要的时间。这样可使大多数进程在一个时间片内完成。源代码:#include"stdio.h"#include"stdlib.h"#include"iostream.h#include"cstdlib"structprocess

8、charname;intarri_time;arrivedtimeintserv_time;/serveredtimeinthave_done_time;/已经运行时间intdone_time;/完成时间intturn_around_time;周转时间floatwei_turn_around_time;/带权周转时间structprocess*next;;inttime=-1;inttime_slice=4;/时间片初始值为1Isempty(structprocess*head)if(head->next=NULL)returntrue;elsereturnfalse;voidpushl

9、ine(structprocess*head,structprocess*rn)if(rn=NULL)return;structprocess*x;x=head;while(x->next!=NULL)x=x->next;x->next=rn;voidpopline(structprocess*head,structprocess*x)if(!Isempty(head)*x=head->next;head->next=(*x)->next;(*x)->next=NULL;voidisnewcome(structprocess*head,structpr

10、ocess*readyline)structprocess*x;if(head->next=NULL)return;if(head->next->arri_time=time&&head->next!=NULL)cout<<time<<"time"<<"anewprocessarrive"<<endl;popline(head,&x);pushline(readyline,x);voidmain()structprocess*head;structproces

11、s*newnode;structprocess*tail;structprocess*readyline;/队歹Ureadyline=(structprocess*)malloc(sizeof(process);readyline->next=NULL;inti;structprocess*rightnow;structprocess*p;/*structprocess*n;*/head=(structprocess*)malloc(sizeof(process);if(!head).专业.专注.cout<<"内存分配错误"<<endl;hea

12、d->next=NULL;tail=head;while(1)newnode=(structprocess*)malloc(sizeof(process);cout<<"请输入进程名"<<endl;cin>>newnode->name;if(newnode->name='#')break;cout<<"请输入进程到达时间"<<endl;cin>>newnode->arri_time;cout<<"请输入进程服务时间&quo

13、t;<<endl;cin>>newnode->serv_time;newnode->done_time=0;newnode->turn_around_time=0;newnode->wei_turn_around_time=0.0;newnode->have_done_time=0;/tail->next=newnode;newnode->next=NULL;/tail=newnode;pushline(head,newnode);p=head->next;while(p!=NULL)cout<<p->n

14、ame<<"进程"<<endl;p=p->next;ss:while(time<200)time+;/cout<<"当前TIME"<<time<<endl;isnewcome(head,readyline);if(time!=0)pushline(readyline,rightnow);i=time_slice;cout<<"i="<<i<<endl;while(i!=0)/cout<<"DANGQIANG

15、TIME"<<time<<endl;if(i=time_slice)i-;if(!Isempty(readyline)popline(readyline,&rightnow);rightnow->have_done_time+;rightnow->done_time=time;cout<<"run"<<rightnow->name<<endl;if(rightnow->have_done_time=rightnow->serv_time)rightnow->tu

16、rn_around_time=rightnow->done_time-rightnow->arri_time+1;rightnow->wei_turn_around_time=(float)rightnow->turn_around_time/rightnow->serv_time;cout<<"*"<<endl<<rightnow->name<<"havedone!"<<endl;cout<<"turn_around_time:&quo

17、t;<<rightnow->turn_around_time<<endl;cout<<"wei_turn_around_time:"<<rightnow->wei_turn_around_time<<endl;cout<<"*"<<endl;rightnow=NULL;gotoss;/elsepushline(readyline,rightnow);else/break;gotoss;elsei-;time+;isnewcome(head,readyline)

18、;/popline(readyline,&rightnow);rightnow->have_done_time+;rightnow->done_time=time;cout<<"run"<<rightnow->name<<endl;if(rightnow->have_done_time=rightnow->serv_time)rightnow->turn_around_time=rightnow->done_time-rightnow->arri_time+1rightnow->

19、;wei_turn_around_time=(float)rightnow->turn_around_time/rightnow->serv_time;cout<<"*"<<endl<<rightnow->name<<"havedone!"<<endl;cout<<"turn_around_time:"<<rightnow->turn_around_time<<endl;cout<<"wei_t

20、urn_around_time:"<<rightnow->wei_turn_around_time<<endl;cout<<"*"<<endl;rightnow=NULL;gotoss;/else/pushline(readyline,rightnow);/*readyline=head->next;head=readyline->next;p=readyline;readyline=readyline->next;whiletime_slice=1;while(time_slice!=0)w

21、ord可编辑.专业.专注.time+;q=head->next;while(q!=NULL)if(q->arri_time=time)n=readyline;while(n->next!=NULL)n=n->next;n->next=q;/加入就绪队列elseq=q->next;"/便利链表将到达进程加入就绪队列time_slice-;p->have_done_time+;if(p->have_done_time=p->done_time)cout<<p->name<<"完成"&l

22、t;<endl;/运行当前进程if(readyline=NULL)break;*/system("pause");实验项目:多道作业调度实验学时:2实验日期:2014-3-7实验要求:本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。实验内容:系统初始状态100K内存,5台磁带机,作业初始状态为资源要求用户名作业名状态到达时间运行时间(小时)主存(K)磁带机AJOBAW9:000.25202BJOBBN9:200.35601CJOBCN9:300.15453DJOBDN9:3

23、50.2102EJOBEN9:450.1253截图记录程序运行每5分钟的系统资源的状态及各个作业的状态,简要文字说明各个作业所处状态的原因,分析作业调度采用何种调度算法V4y-t-=01kiT1PT-L-EJ-1融-Ml;U曰回IfiflUHH吁;照锚入一千灵运工口"11=9占tasQ”*&/ntimrtime日队可R停圆升同:D11R1119i»2,lAI木星,H*>_2S用前入.大H干M=A*L屿前就哪小)状态为二=nm*tqiicuc:mtim-r:rtine在佻巧:H住留时间:虏Su:1!10:0:2二K".3h祠A迸锂W=qmnanB&am

24、p;taitiaqu甘鳍ntimrtIne在|认知可序褶时间g入jfrrruett叼g=gtu1115惚m痔上qiirliirntLmrlIniif在卧户可停留时间:Mlu1115:8rz靠前人进市金占二口a他J人进出运行&tfsj=s代H群上汨吊讲号.按其陶任意献续运行.-y技i捷泽加普迸名.theexecutenanoIhairKBcuJtbnanorg当前正车僦r的进程是.当的FRE行的避程是:阙n#nefirtat*quvuentimFtiMstatentImertIn酬邮可停智时间EplIRilrt41,iM1R11:】L11012e*言前褪8以冽状态为:巧而就绪队冽轼态为工

25、nARE:早L*QLLI!LLt!ntijrir-l*tiHE在。冽Eg:MEia旭12“cinentimiTrtine在也列可停臂时同ri&fwatqg-uiBiHCIMstifleftEAiJp»p3:u:1rs:S:2BIwItISEflri*n*«tAt#Uiri!|4mtIfW产tin4在弓邨木卬statequeuentimsrtixie在用片可停留时间Ep4luiiISEfltltp4lu11ISIM12拉其他任索辘烈金安定au_.HNEfMtwiiane音相i,进程FF,等中1当前正任运节的/程是:曲运程:用H.1znonestate<111cu

26、e»tif»etin录在“k输入灰件益。3;g;R:3:E:4!4面入渤矍塔行时再当前就绪限例优惠为,Fffcfrit&Ke-fzMtncEUr-S-*-WT-'k小="壬31AIt-M-JCTF-,imn1_j_£_三:ri-in串里:工namestate<|UCUCntimrtine'Eft-a:'tiiqueuttneXmo-廿七1_40:HlwS3tsS4i电Mel3R:1,I3:3DsziKmr当riitPLF;优二为工Md阳wstAteq_ij也iiBoC.£nefCImFLl'Lmv&

27、#171;¥-tngi.in-xftH1n.Em*+r*荏1认广!pllw1419!8JDsvaawI1学1WISqi.eiucn>tim«rmtipw"八国.statequcuciotirwrtInc在队22:4:jLO:足:83p2Fh14(IBIflBrB-Bmc与七鼻七:4iqueiAB-n4?Xmof-ti_m«iJ5IISyMH源代码#include<stdio.h>#include<stdlib.h>#definegetjch(type)(type*)malloc(sizeof(type)#defineN10s

28、tructjcb/*定义作业控制块PCB*/charname10;floatneedtime;/*运行时间*/floatarrivetime;/*提交时刻*/floatstorageN;/*系统资源*/structjcb*link;*ready=NULL,*pb=NULL,*p;typedefstructjcbJCB;floatTc,Ti,Wi,T=0;/*完成时刻,周转时间,带权周转时间,时间量*/floatTiSum=0,WiSum=0;/*平均周转时间,带权a平均周转时间*/floatsourceN;intn;voidinput();/*输入作业信息*/intspace();/*返回就绪

29、队列中作业的数目*/voidfcfs();/*先来先服务算法*/voiddisp(JCB*pr);/*显示相应的作业*/voidrunning。;/*运行作业组*/voiddestroy。;/*撤销彳业*/voidinput()/*建立作业控制块函数*/inti,k,num;printf("请输入所拥有的资源种类:");scanf("%d",&n);printf("输入系统所拥有资源数:n");for(i=0;i<n;i+)printf("资源%d:",i);scanf("%f",

30、&sourcei);printf("n输入作业数量:");scanf("%d",&num);for(i=0;i<num;i+)printf("n作业号%d:n",i);p=getjch(JCB);printf("输入作业名:”);scanf("%s”,p->name);printf("输入提交时间:");scanf("%f",&p->arrivetime);printf("输入运行时间:");scanf("

31、;%f",&p->needtime);printf("输入所需资源数:n");for(k=0;k<n;k+)printf("资源%d:",i);scanf("%f",&p->storagek);printf("n");p->link=NULL;fcfs();intspace()intl=0;JCB*pr=ready;while(pr!=NULL)l+;pr=pr->link;return(l);voiddisp(JCB*pr)/*建立作业显示函数用于显示当前作

32、业*/inti;printf("n%6st%6st%6st","作业名","运行时间",”提交时刻)for(i=0;i<n;i+)printf("资源%dt",i);printf("n%6st%6.2ftt%6.2ft",pr->name,pr->needtime,pr->arrivetime);for(i=0;i<n;i+)printf("t%6.2f",pr->storagei);printf("n");voidde

33、stroy。/*建立作业撤消函数(作业运彳T结束,撤消彳业)*/free(p);voidcheck()JCB*first,*fir,*p;intflag=0,i,test=0;first=pb;while(first&&(T>=first->arrivetime)&&(flag=0)for(i=0;i<n;i+)if(sourcei>=first->storagei)sourcei=sourcei-first->storagei;elsetest=1;if(test=0)p=first;first=first->link

34、;p->link=NULL;if(ready=NULL)ready=p;elsefir=ready;while(fir->link!=NULL)fir=fir->link;fir->link=p;elseflag=1;pb=first;voidfcfs()JCB*first,*second;intins=0;if(pb=NULL)|(p->arrivetime<pb->arrivetime)p->link=pb;pb=p;word可编辑.专业.专注.elsefirst=pb;second=first->link;while(second!=

35、NULL)if(p->arrivetime<second->arrivetime)p->link=second;second=NULL;first->link=p;ins=1;elsefirst=first->link;second=second->link;if(ins=0)first->link=p;voidrunning。JCB*pr;inti;printf("正在运行的作业是:%s'n",p->name);disp(P);if(ready!=NULL)printf("就绪队列如下:n"

36、);pr=ready;while(pr!=NULL)disp(pr);pr=pr->link;elseprintf("就绪队列为空队列!n");if(pb!=NULL)printf("后备队列如下:n");pr=pb;while(pr!=NULL)disp(pr);pr=pr->link;elseprintf("后备队列为空队列!n");printf("作业%s的开始运行时刻T:%4.2fn",p->name,T);Tc=T+p->needtime;T=Tc;Ti=Tc-p->arri

37、vetime;Wi=Ti/(p->needtime);for(i=0;i<n;i+)sourcei=sourcei+p->storagei;printf("完成时刻Tc:%4.2fn",Tc);printf("周转时间Ti:%4.2fn",Ti);printf("带权周转时间Wi:%4.2fn",Wi);TiSum+=Ti;WiSum+=Wi;destroy。;main()主函数intlen;charch;input();T=pb->arrivetime;check();len=space();while(le

38、n!=0)&&(ready!=NULL)system("pause");p=ready;ready=p->link;p->link=NULL;running。;if(pb!=NULL)if(ready=NULL)word可编辑.专业.专注.if(T<pb->arrivetime)T=pb->arrivetime;check();len=space();printf("n该作业组的平土!周转时间:4.2fn",TiSum/len);printf("该作业组的带权平均周转时间:4.2fn",W

39、iSum/len);ch=getchar();实验项目:PV操作-生产者与消费者实验学时:2实验日期:2014-3-14实验要求:实验内容:1 .由用户指定要产生的进程及其类别,存入就绪队列。2 .调度程序从就绪队列中提取一个就绪进程运行。如果申请的资源被阻塞则进入相应的等待队列,调度程序调度就绪队列中的下一个进程。进程运行结束时,会检查对应的等待队列,激活队列中的进程进入就绪队列。运行结束的进程进入over链表。重复这一过程直至就绪队列为空。3 .输入两个进程,分别为生产者和消费者,按照先生产后消费顺序输入,观察并记录运行结果;调整输入进程的顺序,观察并记录运行结果4 .输入多个进程,随机分

40、配为生产者和消费者,按(1)两种进程数量相同、(2)生产者多于消费者、(3)生产者少于消费者三种情况,观察并记录运行结果5 .多次输入多个进程,随机分配为生产者和消费者,使缓冲区中产品最后都被消费完,观察并记录运行结果输入两个进程,分别为生产者和消费者,按照先生产后消费顺序输入,观察并记录运行结果调整输入进程的顺序,先消费后生产,观察并记录运行结果输入多个进程,随机分配为生产者和消费者,按不同情况观察并记录运行结果(1)两种进程数量相同word可编辑(2)生产者多于消费者(3)生产者少于消费者观察并记录运多次输入多个进程,随机分配为生产者和消费者,使缓冲区中产品最后都被消费完行结果Em-r学t

41、hifit.,-.-.-法蕊耳H一他奥中 TH.&1宴 M=_-l期靶:;二,那. 黄&-二二.,力券土上 .引船/MT - /伙+H J产£凡!丁-二尸鼻W “磅券一言Z-胃WW无畸四将三 ? p 1 te-:1/;$义工-T.二 FT?二学 我冲严自虚虚亡虎后升旗»=FQi-抬r府 丁引丁书 用1-刃-I引二罚-Tt上:彳一可一一引才罚,-工工B- 制_IJ ±-43®51- 38-3 三二二二二F 蛙 9.EX七 Fyts-'HS=WF.近源代码:#include"stdio.h"#include<

42、stdlib.h>#include<conio.h>#include"iostream.h"#defineNULL0#defineOK1#defineERROR0#definebuffersize3#definegetpch(type)(type*)malloc(sizeof(type)intproductnum=0;/产品数量intprocessnum=0;进程计数器intfull=0;intempty=buffersize;/semaphorecharbufferbuffersize;/缓冲区intbufferpoint=0;/缓冲区指针structp

43、cb/*定义进程控制块PCB*/intflag;/flag=1表示生产者;flag=2表示消费者intnumlabel;/进程编号charproduct;/产品charstate;/进程状态structpcb*processlink;*exe=NULL,*over=NULL;/over链表typedefstructpcbPCB;PCB*readyhead=NULL,*readytail=NULL;/就绪队歹UPCB*consumerhead=NULL,*consumertail=NULL;/消费者队列PCB*producerhead=NULL,*producertail=NULL;/生产者队列

44、intInitQueue(PCB*head,PCB*tail)/初始化队列if(!head)exit(0);head->processlink=NULL;returnOK;boolhasElement(PCB*pro)/判断队列是否为空if(pro->processlink=NULL)returnfalse;elsereturntrue;voidlinkqueue(PCB*process,PCB*tail)/把就绪队列里的进程放入生产者队列的尾(*tail)->processlink=process;(*tail)=process;return;voidfreelink(PC

45、B*linkhead)/清除队列PCB*p;while(linkhead!=NULL)p=linkhead;linkhead=linkhead->processlink;free(p);return;PCB*getq(PCB*head,PCB*tail)/出队PCB*p;p=head->processlink;if(p!=NULL)head->processlink=p->processlink;p->processlink=NULL;if(head->processlink=NULL)(*tail)=head;elsereturnNULL;returnp;

46、voidlinklist(PCB*p,PCB*listhead)PCB*cursor=listhead;while(cursor->processlink!=NULL)cursor=cursor->processlink;cursor->processlink=p;intprocessproc()/给PCB分配内存。inti,f,num;charch;PCB*p=NULL;cout<<endl<<endl;printf(":)请输入进程个数:");cin>>num;for(i=0;i<num;i+)产生相应的的进程

47、:cout<<":)输入1生产者进程"<<endl;cout<<":)输入2消费者进程"<<endl;scanf("%d",&f);getchar();p=(PCB*)malloc(sizeof(PCB);if(!p)cout<<":)内存分配失败"<<endl;returnfalse;p->flag=f;/进程标志,1为生产者,2为消费者processnum+;/进程计数器加1p->numlabel=processnum;

48、/进程编号记为进程计数器p->state='w'置为等待p->processlink=NULL;if(p->flag=1)/输入1为生产者进程;个进程"<<endl;cout<<":)您要产生的进程是生产者,它是第"<<processnum<<"cout<<":)请输入您要该进程产生的字符"<<endl<<endl;scanf("%c",&ch);getchar();p->produc

49、t=ch;productnum+;cout<<":)该进程产生的内容是"<<p->product<<endl;else/输入2为消费者进程;cout<<":)产生的进程是消费者,它是第"<<p->numlabel<<"个进程"<<endl;linkqueue(p,&readytail);并把这些进程放入就绪队列中。returntrue;boolwaitempty()/如果缓冲区满,该进程进入生产者等待队列;if(empty<=

50、0)cout<<":)进程"<<exe->numlabel<<"缓冲区存数,该进程进入生产者等待队列"<<endl;linkqueue(exe,&producertail);/缓冲区满,进程压入生产者等待队列队尾returnfalse;elseempty-;/缓冲区未满,则进行生产操作returntrue;voidsignalempty()/将等待中的生产者进程进入就绪队列PCB*p;if(hasElement(producerhead)p=getq(producerhead,&pro

51、ducertail);linkqueue(p,&readytail);"<<p->numlabel<<endl;cout<<":)等待中的生产者进程进入就绪队列,它的进程号empty+;boolwaitfull()linkqueue(exe,&consumertail);/if(full<=0)/如果缓冲区空cout<<":)进程"<<exe->numlabel<<"缓冲区取数,缓冲区空队列"<<endl;linkqu

52、eue(exe,&consumertail);/进程进入消费者等待队列returnfalse;elsefull-;returntrue;voidsignalfull()/将等待中的消费者进程进入就绪队列PCB*p;if(hasElement(consumerhead)p=getq(consumerhead,&consumertail);linkqueue(p,&readytail);cout<<":)等待中的消费者进程进入就绪队列,它的进程号是full+;,该进程进入消费者等待<<p->numlabel<<endl;v

53、oidproducerrun()/进程运行if(!waitempty()/缓冲区为空return;/缓冲区不为空,执行消费者进程cout<<":)进程"<<exe->numlabel<<"开始向缓冲区存数"<<exe->product<<endl;bufferbufferpoint=exe->product;放入缓冲区bufferpoint+;/缓冲区指针后移cout<<":)进程"<<exe->numlabel<<

54、"向缓冲区存数操作结束"<<endl;signalfull();等待的消费队列进入就绪队列linklist(exe,over);voidcomsuerrun()if(!waitfull()/缓冲区不为空return;cout<<":)进程"<<exe->numlabel<<"开始向缓冲区取数"<<endl;exe->product=bufferbufferpoint-1;bufferpoint-;cout<<":)进程"<&l

55、t;exe->numlabel<<"向缓冲区取数操作结束,取数是"<<exe->product<<endl;signalempty();linklist(exe,over);voiddisplay(PCB*p)p=p->processlink;while(p!=NULL)printf(":)进程%d,它是一个",p->numlabel);p->flag=1?cout<<"生产者"<<endl:cout<<"消费者"

56、<<endl;p=p->processlink;voidmain()charc,ch;boolelement;intFlag=1;cout<<"tt*欢迎光临*"<<endl;readyhead=readytail=getpch(PCB);/初始化就绪队列指针if(!readyhead)return;InitQueue(readyhead,readytail);/初始化就绪队列consumerhead=consumertail=getpch(PCB);初始化消费者指针if(!consumerhead)return;InitQueue

57、(consumerhead,consumertail);初始化消费者队歹Uproducerhead=producertail=getpch(PCB);/初始化生产者指针if(!producerhead)return;InitQueue(producerhead,producertail);/初始化生产者队列exe=(PCB*)malloc(sizeof(PCB);/初始化执行if(exe=NULL)return;over=(PCB*)malloc(sizeof(PCB);/初始化执行完进程队列if(over=NULL)return;over->processlink=NULL;while(Flag)if(!processproc()/给PCB分配空间break;element=hasElement(readyhead);while(element)exe=getq(re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论