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

当前位置:首页 >> 博客文章精选 >> 嵌入式系统-博客 >> VxWorks编程方法(2)
VxWorks编程方法(2)
作者:   来源: 发表时间:2006-12-08  字号:  

VxWorks编程方法(2)

任务间的同步和进程间协调
信号量作为任务间同步和互斥的机制。在 wind 核中有几种类型的信号量,它们分别针对不同的应用需求:二进制信号量、计数信号量、互斥信号量和 POSIX 信号量。所有的这些信号量是快速和高效的,它们除了被应用在开发设计过程中外,还被广泛地应用在VxWorks 高层应用系统中。对于进程间通信,wind 核也提供了诸如消息队列、管道、套接字和信号等机制。
任务间的同步和进程间协调的几种方式:
内存共享(Shared Memory),对简单的数据共享而言.
信号量(Semaphore),基本的互斥和同步.
消息队列(Message queues)和管道(Pipe),单个CPU中,任务间的信息传递.
套结字(Socket)和远程调用(Remote procedure calls),相对于网络任务间的通信.
信号(Signals),出错处理(Exception handling).
互斥(Mutual Exclusion)
互斥是用来控制多任务对共享数据进行串行访问的同步机制。在多任务应用中,当两个或多个任务同时访问共享数据时,可能会造成数据破坏。互斥使它们串行地访问数据,从而达到保护数据的目的.
解决互斥的几种方法:
1. 关闭中断的方法(intLock): 能解决任务和中断ISR之间产生的互斥.
funcA ()
{ int lock = intLock();
. . critical region that cannot be interrupted .
intUnlock (lock); }
但在实时系统中采取这个办法会影响系统对外部中断及时响应和处理的能力.
2. 关闭系统优先级(taskLock): 关闭系统优先级,这样在当前任务执行时,除了中断外,不会有其他优先级高的任务来抢占CPU,影响当前程序运行.
funcA ()
{ taskLock ();
. . critical region that cannot be interrupted .
taskUnlock (); }
这种方法阻止了高优先级的任务抢先运行,在实时系统中也是不适合的,除非关闭优先级的时间特别短.


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

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