繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 嵌入式系统-博客 >> vxworks任务通信机制(信号量)
vxworks任务通信机制(信号量)
作者:   来源: 发表时间:2006-12-08  字号:  

任务间通信机制
任务间通信机制是多任务间相互同步和通信以协调各活动的主要手段,VxWorks提供的任务问通信手段按其速度由 快到慢排列为信号量、消息队列、管道到网络透明的套接字。 本例子中,主要采用了共享内存、信号量和消息队列等手段实现任务间通信。任务间通信最直接、最明显的方法是访问共享内存数据结构,VxWorks操作系统采用的是 32位平滑内存地址空间,所有任务共存于单一的地址空间,任一程序定义的各种类型的全局变量都可以被任务直接访问。本系统中所有的全局控制参数数组都采用这种方法来访问,虽然这种方法不是最好的,但是却减少了函数调用时传递很多参数的 环节,对于实时控制系统来说是可取的。信号量是任务间通信同步互斥的最优选择,VxWorks提供3种信号量:二进制,互斥和计数器信号量。常用的是二进制信号量和互斥信号量。在本例子资源分配任务中就采用二进制信号量的同步方法。
//在主任务中创建二进制信号量
STATUS mainTask(void){…
if(dtmfcSem="SemBSmCreate"(SEM_Q_FIFO,SEM_FULL)==NULL)return(ERROR);

//在 20ms中断程序中给出该信号量
LOCAL STATUS inq20ms(void){
. . . SemGive(dtmfcSere);

/在资源管理与分配程序中取得该信号量
STATUS Managetask(c0umster1inktab1e ptr… .){…
SemTake(dtmfcSem。WATT_FOREVER);
//将该资源分配给ptr指向的用户。

}
通过信号量的同步实现中断、资源分配和管理任务的同步,减少了中断服务程序中的执行时间,有助于提高系统的实时性。


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: vxworks6.0实时保护进程RTP
  • 下一篇: 为arm,51与优盘进行串口通信的东东

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网