欢迎来到天天文库
浏览记录
ID:26479104
大小:66.00 KB
页数:10页
时间:2018-11-27
《实验一 进程管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一进程管理专业:计算机系班级:xx软件工程学号:xxx姓名:xxx实验地点:xxx实验时间:xxx指导教师:xxx【实验目的】1)加深对进程概念及进程管理各部分内容的理解。熟悉进程管理中主要数据结构的设计和进程调度算法、进程控制机构、同步机构、通讯机构的实施。【实验环境】具备Windows或MS-DOS操作系统、带有TurboC集成环境的PC机。【实验内容】一.阅读实验程序程序代码见【实验例程】。二.编译实验例程用TurboC编译实验例程。三.运行程序并对照实验源程序阅读理解实验输出结果的意义。【实验例程】#include#defineTRUE1#
2、defineFALSE0#defineMAXPRI100#defineNIL-1struct{intid;charstatus;intnextwr;intpriority;}pcb[3];struct{intvalue;intfirstwr;}sem[2];charsavearea[3][4],addr;inti,s1,s2,seed,exe=NIL;init(){intj;for(j=0;j<3;j++){pcb[j].id=j;pcb[j].status='r';pcb[j].nextwr=NIL;printf("process%dpriority?",j+1)
3、;scanf("%d",&i);pcb[j].priority=i;}sem[0].value=1;sem[0].firstwr=NIL;sem[1].value=1;sem[1].firstwr=NIL;for(i=1;i<3;i++)for(j=0;j<4;j++)savearea[i][j]='0';}floatrandom(){intm;if(seed<0)m=-seed;elsem=seed;seed=(25173*seed+13849)%65536;return(m/32767.0);}timeint(ad)charad;{floatx;x=random()
4、;if((x<0.33)&&(exe==0))return(FALSE);if((x<0.66)&&(exe==1))return(FALSE);if((x<1.0)&&(exe==2))return(FALSE);savearea[exe][0]=i;savearea[exe][1]=ad;pcb[exe].status='t';printf("timessilceinterrupt'process%denterintoready.",exe+1);exe=NIL;return(TRUE);}scheduler(){intpd;if((pd=find())==
5、NIL&&exe==NIL)return(NIL);if(pd!=NIL){if(exe==NIL){pcb[pd].status='e';exe=pd;printf("process%disexecuting.",exe+1);}elseif(pcb[pd].priority6、}}i=savearea[exe][0];addr=savearea[exe][1];return(exe);}find(){intj,pd=NIL,w=MAXPRI;for(j=0;j<3;j++)if(pcb[j].status=='r')if(pcb[j].priority7、;charad;{if(--sem[se].value>=0)return(FALSE);block(se);savearea[exe][0]=i;savearea[exe][1]=ad;exe=NIL;return(TRUE);}block(se)intse;{intw;printf("process%disblocked",exe+1);pcb[exe].status='w';pcb[exe].nextwr=NIL;if((w=sem[se].firstwr)==NIL)sem[se].firstwr=exe;else{while
6、}}i=savearea[exe][0];addr=savearea[exe][1];return(exe);}find(){intj,pd=NIL,w=MAXPRI;for(j=0;j<3;j++)if(pcb[j].status=='r')if(pcb[j].priority7、;charad;{if(--sem[se].value>=0)return(FALSE);block(se);savearea[exe][0]=i;savearea[exe][1]=ad;exe=NIL;return(TRUE);}block(se)intse;{intw;printf("process%disblocked",exe+1);pcb[exe].status='w';pcb[exe].nextwr=NIL;if((w=sem[se].firstwr)==NIL)sem[se].firstwr=exe;else{while
7、;charad;{if(--sem[se].value>=0)return(FALSE);block(se);savearea[exe][0]=i;savearea[exe][1]=ad;exe=NIL;return(TRUE);}block(se)intse;{intw;printf("process%disblocked",exe+1);pcb[exe].status='w';pcb[exe].nextwr=NIL;if((w=sem[se].firstwr)==NIL)sem[se].firstwr=exe;else{while
此文档下载收益归作者所有