- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多任务通信概要
实验2 多任务通信
实验目的
1、熟悉VxWorks进程间通信机制,并通过实验了解资源冲突的原因和解决方法。
实验要求
1、设计两个任务tHigh和tLow,分别访问两个共享资源,达到下图的死锁效果,死锁效果,并解决该死锁问题,用windview分析。
实验原理
1、VxWorks的信号量
(1)二进制信号量:最快和常用的信号量,提供阻塞方式,用于实现同步或互斥。
(2)互斥信号量:用于实现互斥问题的特殊的二进制信号量,解决具有互斥、优先级继承、删除安全和递归等情况。
(3)计数信号量:类似于二进制信号量,记录信号量被释放的次数。适合于一个资源的多个实例需要保护的情况。
2、互斥信号量的创建、获取和释放
(1)semMCreate( ):分配并初始化一个互斥信号量,函数原型为:
SEM_ID semBCreate
(
int options, /*信号量选项*/
SEM_B_STATE initialState /*信号量初始化状态值*/
);
(2)semTake( ):占有一个信号量,函数原型为:
STATUS semTake
(
SEM_ID semId /*所要得到的信号量ID号*/
int timeout /*等待时间*/
);
(3)semGive( ):释放一个信号量,函数原型为:
STATUS semGive
(
SEM_ID semId /*所给出的信号量ID号*/
);
(4)创建任务
int taskSpawn( name, priority, options, stackSize, entryPt, arg1,…,arg10)
Name任务名,如果是NULL系统就给一个默认的名字;
Priority 任务优先级,值从0-255;
Options 任务选项,如VX_UNBREAKABLE;
stackSize 所分配的以字节为单位的堆栈大小;
entryPt 开始执行的代码的地址;
arg1…arg10 entryPt总共可以有10个参数;
如果函数执行成功,则返回任务标识(id), 否则返回错误号。
3、产生死锁的原因
(1) 竞争资源引起进程死锁 进程推进顺序不当引起死锁 resource++;
}
解决死锁:useResource1()函数主体不变,useResource2()的代码改为如下所示。
//解决死锁
semTake(mutex1, WAIT_FOREVER);
semTake(mutex2, WAIT_FOREVER);
semGive (mutex2);
semGive (mutex1);
(3)任务函数tLow()和tHigh()
tLow()和tHigh()分别表示任务1和任务2。
(4)入口函数vxmain()
vxmain()用于启动任务1和任务2。
运行结果
1、死锁情况下windview产生的图
2、解决死锁情况下windview产生的图
总结
通过本次实验,实现死锁以及解决死锁,本人了解了VxWorks进程间的通信机制,死锁产生原因以及解决死锁的方法,熟悉了对VxWorks互斥信号量的操作以及windview的使用。
附录
deadlock.cpp
#include vxWorks.h
#include semLib.h
#include taskLib.h
#include stdio.h
void tLow();
void tHigh();
int resource;
SEM_ID mutex1;
SEM_ID mutex2;
int initResource(void)
{
/*保护共享资源的互斥信号量创建*/
mutex1 = semMCreate (SEM_Q_PRIORITY|SEM_INVERSION_SAFE);
mutex2 = semMCreate (SEM_Q_PRIORITY|SEM_INVERSION_SAFE);
if ((NULL == mutex1)||(NULL == mutex2)) return ERROR;
resource = 0; /*共享资源初始化*/
return OK;
}
void useResource1()
{
您可能关注的文档
- 外出学习汇报材料.ppt
- 夏辉辉:突出核心目标,培养核心素养——2016历史中考备考漫谈.ppt
- 外墙保温涂料施工方案.doc
- 夏季生产总结概要.doc
- 外墙板渗漏工程的修复方法概要.pptx
- 外墙整治专项施工方案概要.doc
- 外墙涂料工程施工组织设计概要.doc
- 外墙抹灰施工方案概要.docx
- 外周动脉解剖简明图概要.ppt
- 外墙涂料施工技术交底-045概要.doc
- 2025年榆林学院单招笔试职业适应性测验试题库含答案解析(5套共100道单选合辑).docx
- 南开大学25年春季新学期《服装美学(麦课)》在线作业三.docx
- 吉林省长春市宽城区2024-2025学年八年级下学期期末考试语文试卷(含答案).docx
- 2025年钟山职业技术学院单招笔试职业适应性测验试题库含答案解析(5套共100道单选合辑).docx
- 科技与互联网产业报告:5G通信技术在智慧城市安防监控中的应用.docx
- 2025年苏州经贸职业技术学院单招笔试职业能力测验试题库含答案解析(5套共100道单选合辑).docx
- 2025年注册会计师-经济法(官方)-第十一章反垄断法律制度历年参考试题库答案解析(5套合计百道单选.docx
- 2025年无锡城市职业技术学院单招笔试综合素质试题库含答案解析(5套共100道单选合辑).docx
- 科技与互联网产业报告:5G通信技术在智慧城市智慧医疗中的应用.docx
- 2025年综合类-卫生监督员考试-传染病防治卫生监督历年真题摘选带答案(5套合计100道单选).docx
文档评论(0)