车辆死锁问题.doc

车辆死锁问题.doc

ID:56715360

大小:56.50 KB

页数:5页

时间:2020-07-05

车辆死锁问题.doc_第1页
车辆死锁问题.doc_第2页
车辆死锁问题.doc_第3页
车辆死锁问题.doc_第4页
车辆死锁问题.doc_第5页
资源描述:

《车辆死锁问题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验目的(1)理解死锁产生的原因,掌握预防和预防死锁的方法,以及死锁的检测方法。(2)通过车辆行驶死锁问题的设计与实现掌握解决死锁的方法。实验内容车辆行驶死锁问题,在Linux下用C语言完成下面模型:设有一个T型路口,其中A,B,C,D各处可容纳一辆车,车型方向如图所示。是找出死锁并用有序分配法消除之,要求资源编号合理。ABE:左转W:直行DCS:左转T型路口模拟图根据上述介绍,编写车辆行驶死锁问题的程序,要求如下:(1)在Linux下用C语言编程,利用信号量操作实现进程同步;(2)假设3个方向的车辆数目相等,数只有用户输入,并动态显示称量形式的状态,每个车辆

2、行驶所用的时间可以预先设定。准备知识(1)了解进程死锁的原理。(2)掌握自然有序分配法。实验原理死锁是指在一组进程中的各个进程占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于一种永久等待的状态。死锁的4个必要条件:(1)互斥条件:资源不能被共享,只能由一个进程使用。(2)请求与保持条件:已经得到资源的进程可以再次申请新的资源。(3)非剥夺条件:已经分配的资源不能从相应的进程再次申请新的资源。(4)循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程已占用的资源。死锁预防的基本思想是对进程在申请有关申请资源的时候规定某种策略

3、,如果所有进程都遵守这一策略,则系统就不会进入死锁状态。预防死锁的策略有两种:资源预先分配策略,和资源有序分配策略。本实验主要使用资源有序分配策略来预防死锁。实验指导死锁的可能性有两种:(1)E方向两辆车分别位于A和B,S方向一辆车位于C,W方向一辆车位于D。(2)S方向两辆车分别位于B和C,E方向一辆车位于A,W方向一辆车位于D。位置资源编号:f(C)=1,f(B)=2,f(A)=3,f(D)=4.管理C,B,A,D四个位置的信号量分别为s1,s2,s3,s4,初始值均为1。控制的PV源于,如表所示。利用PV源于解决死锁算法Semaphores1=1,s2=

4、1,s3=1,s4=1;VoidS(){P(s1);驶入C;P(s2);驶入B;V(s1);P(s3);驶入A;V(s2);驶出A;V(s3);}VoidE(){P(s2);驶入B;P(s3);驶入A;V(s2);P(s4);驶入D;V(s3);驶出D;V(s4);}VoidW(){P(s1);//按序申请P(s4);驶入D;驶入C;V(s4);驶出C;V(s1);}本实验的程序流程图,如图所示。结束动态显示车辆行驶情况创建三个方向上的线程提示输入错误输入是否大于Max开始实验截图附录:源代码#include#include

5、td.h>#include#include#includeintmain(){intd1[2];intd2[2];intd3[2];intr,j,k;charbuff[200];printf("Pleaseinputastring:");scanf("%s",buff);r=pipe(d1);if(r==-1){printf("chuangjianguandaoshibai1");exit(1);}r=pipe(d2);if(r==-1){printf("chuangjianguandaoshiba

6、i2");exit(1);}r=pipe(d3);if(r==-1){printf("chuangjianguandaoshibai3");exit(1);}r=fork();if(r){close(d1[1]);read(d1[0],buff,sizeof(buff));if(strlen(buff)%2==1){j=fork();if(j){close(d2[1]);read(d2[0],buff,sizeof(buff));printf("P3pipe2oddlengthstring:%s",buff);close(d2[0]);exit(0

7、);}else{close(d2[0]);write(d2[1],buff,strlen(buff));printf("P2finisheswritingtopipe2.");close(d2[1]);exit(0);}}else{k=fork();if(k){close(d3[1]);read(d3[0],buff,sizeof(buff));printf("P4pipe3evenlengthstring:%s,buff");close(d3[0]);exit(0);}else{close(d3[0]);write(d3[1],buff,strlen

8、(buff));printf("P2f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。