- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vxworks入门实验课
实验三 信号量
1 实验目的
1.学习使用信号量实现共享资源的保护
2 实验内容
在实验一建立的project 中,创建2 个任务,一个任务将全局变量设为1;一
个任务将全局变量设为0 。观察运行结果。
3 实验设备及工具
1.硬件:
a) PC 机
2 .软件:
a) PC 机操作系统Windows2000 或windowsXP
b) Tornado2.2
4 实验原理
信号量允许多个任务相互协调其活动。任务间最直接的通信方式就是共享各
种各样的数据结构。由于 VxWorks 使用单地址空间,所有任务存在于一个单一
的线性地址空间中,共享数据结构也就非常容易实现。全局变量、各类缓冲、链
表和指针都可以被运行在不同任务上下文的代码直接引用。
然而,对于共享的数据,需要保证对其的互斥访问。VxWorks 提供了许多实
现共享临界区互斥访问的机制,信号量就是其中一种。
VxWorks 内核Wind 提供三种类型的信号量用于解决不同类型的问题:
二进制信号量(binary ):可以用于实现同步和互斥。
互斥信号量(mutual exclusion ):一种特殊的信号量,适于解决具有内在
互斥的问题:优先级继承、删除安全和递归。
计数信号量(counting ):适用于保护具有多个数据的资源。
4.1 信号量的控制
Wind 内核为上述三类信号量提供不同的创建函数:semBCreate() 、
semMCreate()和semCCreate(),但提供统一的控制函数:semDelete()、semTake()、
semGive()、semFlush() 。它们的原型分别为:
SEM_ID semBCreate ( int options, SEM_B_STATE initialState);
/* create and initialize a binary semaphore*/
SEM_ID semMCreate ( int options);
/* create and initialize a mutual-exclusion semaphore*/
SEM_ID semCCreate ( int options, int initialCount);
/* create and initialize a counting semaphore*/
STATUS semDelete ( SEM_ID semId); /* delete a semaphore */
STATUS semGive ( SEM_ID semId); /* give a semaphore*/
STATUS semTake ( SEM_ID semId, int timeout); /* take a semaphore*/
STATUS semFlush ( SEM_ID semId); /* unblock every task pended on a semaphore*/
下面的例子使用二进制信号量。二进制信号量可以作为资源可用或不可用的
标志。任务使用 semTake()取一个信号量,其结果取决于调用时该二进制信号量
是否可用。如果可用,信号量将变得不可用,而任务继续执行。如果信号量不可
用,任务被挂起到任务阻塞队列,直到该信号量可用。
当任务释放一个二进制信号量时要调用 semGive(),其结果也要依赖于调用
时刻该信号量是否可用。如果可用,本次释放信号量不起任何作用;如果信号量
不可用,而且没有任务在等待该信号量,那么信号量变为可用;如果信号量不可
用,并且有一个或多个任务等待该信号量,那么阻塞队列中的第一个任务解除阻
塞,而信号量仍不可用。
例中,两个任务(taskOne 和taskTwo )竞争修改一个全局变量global 的值,
任务taskOne 将Global 修改为1,而任务taskTwo 则将其修改为0 。
5 实验步骤
1.编程(假设编写的源文件为s3_sem.c )
2 .将s3_sem.c 添加到project 中
3
您可能关注的文档
- SX1212支持单点唤醒的433M无线模块E33-TTL-20用户手册.pdf
- the 黎曼可积函数列的极限理论及应用3 guide download.pdf
- tonggou同构.ppt
- Unit5: 视图、序列、索引 、 约束.docx
- Unix awk手册.pdf
- V2视频会议分辨率与带宽参考.doc
- Vague集及其相似度量.pdf
- VC6.0 Microsoft Word 文档.doc
- Verilog常用分频器的实现.pdf
- TKR150单边带电台试验器使用说明书.pdf
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)