实验四车辆行驶死锁问题

实验四车辆行驶死锁问题

ID:22282092

大小:71.78 KB

页数:9页

时间:2018-10-28

实验四车辆行驶死锁问题_第1页
实验四车辆行驶死锁问题_第2页
实验四车辆行驶死锁问题_第3页
实验四车辆行驶死锁问题_第4页
实验四车辆行驶死锁问题_第5页
资源描述:

《实验四车辆行驶死锁问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

2、状态,每个车辆行驶所用的时间可以预先设定。准备知识(1)了解进程死锁的原理。(2)掌握自然有序分配法。实验原理死锁是指在一组进程中的各个进程占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于一种永久等待的状态。死锁的4个必要条件:(1)互斥条件。(2)请求与保持条件。(3)非剥夺条件。(4)循环等待条件。死锁预防的基本思想是对进程在申请有关申请资源的时候规定某种策略,如果所有进程都遵守这一策略,则系统就不会进入死锁状态。本实验主要使用资源有序分配策略来预防死锁。实验指导死锁的可能性有两种:(1)E方向两辆车分别位于A

3、和B,S方向一辆车位于C,W方向一辆车位于D。(2)S方向两辆车分别位于B和C,E方向一辆车位于A,W方向一辆车位于D。位置资源编号:f(C)=l,f(B)=2,f(A)=3,f(D)=4.管理C,B,A,D四个位置的信号量分别为si,s2,s3,s4,初始值均为1。控制的PV源于,如表所示。利用PV源于解决死锁算法本实验的程序流程图,如图所示。实验截图附录:参考源代码程序源代码:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#includ

4、e<semaphore.h>//死锁#defineMax5pthread_tE[Max];pthread_tW[Max];pthread_tS[Max]pthread—mutex一tsi;pthread_mutex_ts2;pthread_mutex_ts3;pthread_mutex一ts4;inti;void*s(void*al){pthread_mutex_lock(&sl);sleep(2);pthread_mutex_lock(&s2);sleep(2);pthread_mutex_unlock(

5、&sl);pthread_mutex_lock(&s3);sleep(2);pthread_mutex_unlock(&s2);printf(H!!!SfinishedoneH);sleep(2);pthread_mutex_unlock(&s3);void*e(void*a2){pthread_mutex」ock(&s2);printfC'S%denterCH,i+l);printf("S%denterB"zi+1);printf("S%denterAN,i+l);printf

6、("S%dleaveA",i+1};printf("E%denterBH,i+l);//车辆最人数目//E方向的线程//W方向的线程//S方向的线程//C处的互斥信号//B处的互斥信号//A处的互斥信号//D处的互斥信号//用于方便动态敁示行驶信息的//S方向//相当于PV原语中的P操作//方便观察//相当于PV原语中的V操作//一辆S方向上的车已经通过"E方向sleep(2);pthread_mutex」ock(&s3);printf("E%denterA"J+l);sleep(2);pthread_mutex_

7、unlock(&s2);pthread_mutex」ock(&s4);printfC'E%denterD",i+1);sleep(2);pthread_mutex_unlock(&s3);printf(HE%dleaveDn,i+1);printf("!!!Efinishedone");sleep⑵;pthread_mutex_unlock(&s4);}void*w(void*a3)pthread_mutex_lock(&sl);pthread_mutex_lock(&s4)

8、;printf("W%denterDn,i+1);sleep(2);printf("W%denterC",i+1);sleep(2);pthread_mutex_unlock(&s4);printf(HW

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

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

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