ImageVerifierCode 换一换
格式:PPT , 页数:22 ,大小:98.50KB ,
资源ID:13335970      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13335970.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(进程管理实验-C语言版.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

进程管理实验-C语言版.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,支持多个进程并发运行的简单进程管理模拟系统,本系统的同步机构采用信号量上的,P,、,V,操作的机制;控制机构包括:,(,1),阻塞和唤醒操作;,(,2),时间片中断处理程序模拟时间片中断;,(,3),进程调度程序负责为各进程分配处理机。,系统中涉及了,3,个并发进程。它们之间的关系是:,(,1)3,个进程需要互斥使用临界资源,S2,。,(,2),进程,1,和进程,2,又需互斥使用临界资源,S1,本系统在运行过程中随机打印出各进程的状态变换过程,系统的调度过程及公共变量的变化情况。,题目,系统为进程设置了,5

2、种运行状态:,e,执行态;,r,高就绪态;,t,低就绪态(执行进程因时间片到限而转入);,w,等待态;,c,完成态。各进程的初始状态均设置为,r.,系统分时执行各进程,并规定,3,个进程的执行概率均为,33,。通过产生随机数,x,来模拟时间片。当进程,process1,访问随机数,x,时,若,x=0.33,;,当进程,process2,访问,x,时,若,x=0.66;,当进程,process3,访问,x,时,若,xnum=,snum,;,申请消息块,写入缓冲,p-next=NULL;,下一指针置空,p-pro=sender;,置发送者,printf(“send,message to proc

3、ess%d”,receiver);,printf(“process,%d already run%d,times”,sender,snum,);,void,send(int,sender,int,receiver,int,snum,),发送,q=,pcbreceiver.mess,;,q,指向接收者消息等待队列首,if(q,=NULL),pcbreceiver.mess,=p;,q,空则,p,插入队首,else,while(q,-next!=NULL),q=q-next;,q,移到队尾,q-next=p;,将,p,链接到队尾,void,send(int,sender,int,receiver,

4、int,snum,),发送,message,p,q,;,工作指针,p=,pcbreceiver.mess,;,p,指向接收者消息等待队列首,while(p,!=NULL),显示发送者和接收者信息,printf(“receive,message from process%,d”,p,-pro);,printf(“process,%d is already run%d,times”,p,-pro,p-num);,q=p;,陆续将接收过的的消息块删除并释放,p=p-next;,free(q,);,pcbreceiver.mess,=NULL;,接收完后消息等待队列置空,void,receive(in

5、t,receiver),接收,int,j;,for(j,=1;j=3;j+),初始化各进程控制块,pcbj.id,=j;,pcbj.status,=r;,进程号,进程状态,pcbj.nextwr,=NIL;,pcbj.mess,:=NULL;,等待、消息指针,printf(“process,%d priority?”,j);,scanf(“%d”,&pcbj.priority,);,读入优先数,pcbj.inum,=0;,pcbj.addr,=0;,运行次数,地址,sem1.value=1;sem1.firstwr=NIL;,对信号量初始化,sem2.value=1;sem2.firstwr=

6、NIL;exe=NIL;,当前执行进程号置为空,void init(),初始化,func,random:real;,proc,eexit(n:integer,);,float random(),产生,01,之间的随机数,int,m;,seed,为,int,型,实际值在,-32768,到,32767,之间,if seed0 m=-seed;else m=seed;seed=(,25171,*seed+,13841,)%65536;return(m/32767.0);,void,eexit(int,n);,退出,pcbn.status,=c;,本进程置为完成态,printf(process,%d

7、is completed,n,n,);,exe=NIL;,当前执行进程号置空,int,find(),选进程,int,j,pd,w,;,pd=NIL;,w=MAXPRI;,for(j,=1;j=3;j+),先在高就绪态中找优先数最小的进程,if(,pcbj.status,=r),if(,pcbj.priority,w),w=,pcbj.priority,;,pd=j;,if(pd=NIL),for(j,=1;j=3;j+),再在低就绪态中找优先数最小的进程,if(,pcbj.status,=t),if(pcbj.priority,w),w=,pcbj.priority,;,pd=j;,retur

8、n pd;,返回进程号,int,scheduler,(),调度,int pd;,pd=find();,找优先进程,if(pd=NIL),else,if(pd!=NIL),若有就绪进程则,if(exe=NIL),若当前没有进程执行则,pcbpd.status=e;,新进程置执行态,exe=pd;,printf(“process%d is executingn”,exe);,else if(pcbpd.priority=0 return false,;,有资源不等待,else block(se);,阻塞到,se,等待队列,pcbexe.inum,=i;,pcbexe.addr,=ad;,保护现场,

9、exe=NIL;return true;,执行进程置空,等待标志置真,int,v(int,se,,,char ad),signal,操作,semse.value,=semse.value+1;,信号量加,1,if,semse.value,0 return false;,无等待不重新调度,else,wakeup(se,);,有等待唤醒,se,等待队列的进程,pcbexe.inum,=i;,pcbexe.addr,=ad;,保护现场,return true;,要重新调度,int,timeint(char,ad),模拟时间片中断,float x;,x,为,01,之间的随机数,x=random();,

10、if(x,0.33)&(exe=0),return false;,若在各自的时间片不产生中断,else,if(x,0.66)&(exe=1),return false;,else,if(x,1.00)&(exe=2),return false;,else,否则产生时间片中断,pcbexe.inum,=i;,保护现场,pcbexe.addr,=ad;,pcbexe.status,=t;,置为低就绪态,printf(time,slice interrupt.n);,printf(process,%d enter into ready,n,exe,);,exe=NIL;,执行进程置空,return

11、true;,中断标志置真,void process1(int s1,int s2),模拟并发进程,1,if,addr,=a then,goto,a1,;if,addr,=b then,goto,b1,;if,addr,=c then,goto,c1,;if,addr,=d then,goto,d1,;if,addr,=e then,goto,e1,;if,addr,=f then,goto,f1,;,while(i=5)eexit(1);,5,次循环后本进程结束,printf(“process1 calls p on sem1”);,if p(1,a),goto,stop1,;,对,信号量,1

12、进行,P,操作返回,a,地址,a1:,printf(“process1 is execution on its,cretical,section 1.”);,入临界区,if,timeint(b,),goto,stop1,;,若时间片到则重新调度,b1:,s1:=s1+1;printf(“s1=%d”,s1);,s1,是,临界资源不是信号量,printf(“process1 calls v on sem1 and quit,cretical,section 1”);,if v(1,c),goto,stop1,;,对信号量,1,进行,V,操作,出临界区,c1:,printf(“process1

13、calls p on sem2”);,if p(2,d),goto,stop1,;,对信号量,2,进行,P,操作返回,d,地址,d1:,printf(“process1 is execution on its,cretical,section 2.”);,if,timeint(e,),goto,stop1,;,e1:,s2=s2+1;printf(“s2=%d”,s2);,s2,是临界资源不是信号量,printf(“process1 calls v on sem1 and quit,cretical,section 2.”);,if v(2,f),goto,stop1,;,对信号量,2,进行,

14、V,操作,出临界区,f1,:printf(“process1,cyclen,count=%d”,i+1);i=i+1;send(1,2,i);send(1,3,i);,循环次数加,1,发消息,void process2(int s1,int s2),模拟并发进程,2,if(addr,=a),goto,a2;,if(addr,=b),goto,b2;,if(addr,=c),goto,c2;,if(addr,=d),goto,d2;,if(addr,=e),goto,e2;,if(addr,=f),goto,f2;,while(i,5)receive(2);,printf(process1 ca

15、lls P on semaphore1.n);,if(p(1,a),goto,stop1;,a2,:printf(process1 is executing on its,cretical,section1.n);,if(,timeint(b,),goto,stop1;,b2,:s2=s2+1;,printf(s2=%d,s2);,printf(process,1 calls V on semaphore1 and quit,cretical,section1.n);,if(v(1,c),goto,stop1;,c2:,printf(process,1 calls P on semaphore

16、0.n);,if(p(0,d),goto,stop1;,d2:,printf(process,1 is,excecuting,section0.n);,if(timeint(e,),goto,stop1;,e2:,s1=s1+1;,printf(s1=%d,s1);,printf(pcocess,1 calls V on semaphore0 and quit section0.n);,if(v(0,f),goto,stop1;,f2:,printf(process,1,cyclen,count=%dn,i+1);,i=i+1;,send(1,0,i);send(1,2,i);,printf(

17、n,);,stop1:,if(i,5),goto,end1;,eexit(1);,end1:;,void process3(int s1,int s2),模拟并发进程,3,if,addr,=a,goto,a3,;,if,addr,=b,goto,b3;,if,addr,=c,goto,c3,;,while(i=5)eexit(3);,void main(),主程序,int,k,s1,s2;,s1,s2,是临界资源公用计数器,printf(“C.O.S,.Example one”);,init();,s1=0;s2=0;printf(“s1=%d,s2=%d”,s1,s2);printf(“p1,p2,p3 are all in ready!”);,100:,k=scheduler();,调用调度程序返回选中进程号,if(k!=NIL),switch(k)case 1:process1(s1,s2);,goto,100,;case 2:process2(s1,s2);,goto,100,;case 3:process3(s1,s2);,goto,100,;,default:,printf(process,identifer,error.n);printf,(“s1,=%d,s2=%d”,s1,s2);,printf,(“COMPLETED!”);,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服