千家信息网

VxWorks中多任务通信的示例分析

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,小编给大家分享一下VxWorks中多任务通信的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!VxWorks是一个典型的多任务操作系统。这多个任务之间不可能完全的彼此独立,它们
千家信息网最后更新 2025年01月31日VxWorks中多任务通信的示例分析

小编给大家分享一下VxWorks中多任务通信的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

VxWorks是一个典型的多任务操作系统。这多个任务之间不可能完全的彼此独立,它们需要一些系统机制来协调彼此的动作。这些机制就属于多任务通信,主要可以分为两类:事件通知、数据传递。

VxWorks系统提供了多种任务间通信机制:中断锁、任务锁、多种信号量、消息队列、管道、VxWorks事件(VxWorks Event)、消息通道。另外,同一内存空间里的任务(都在内核,或在同一RTP里)可以通过访问共享的数据结构,直接进行数据交换。不过,这些共享资源最好由互斥机制进行保护

  • 中断锁 - 可以关闭中断,阻止ISR抢占。这可不是通用机制,一定要谨慎使用

  • 任务锁 - 可以关闭其它任务的抢占。同样也不是通用机制,要谨慎使用

  • 信号量 - 任务同步与互斥的基本方法。VxWorks提供四种信号量,以及POSIX信号量。还可以将信号量创建为公共对象,用于进程间通信

  • 消息队列 - 直接在任务间传递消息(数据)的高级机制。也可以创建为公共对象,用于进程间通信

  • 管道 - 在消息队列上封装的另一种消息机制。通过标准I/O函数和select()来操作

  • VxWorks事件 - 可用于任务-任务、ISR-任务、信号量-任务、消息队列-任务之间的同步与通信

  • 消息通道 - 基于socket的通信机制,可用于任务间、进程间、处理器间通信


另外还有信号(Signal)可以在任务和进程间传递事件,不过一般不把它当作通信机制

共享数据结构

同一内存空间里(都在内核,或在同一RTP里)的任务之间,最显而易见的的通信方式就是访问共享的数据结构,因为它们使用单一线性地址空间

不同的任务可以直接访问全局变量、线性缓冲区、环形缓冲区、链表,以及指针。不过这些共享的数据结构,需要使用互斥机制(例如互斥信号量)来保护

中断锁

函数intLock()关闭中断,阻止ISR的抢占。在任务或ISR里都可以调用它。函数intUnLock()重新使能中断。这一对儿函数通常用于保护临界区域


当任务去访问ISR也会访问的数据结构时,就使用intLock()来阻止ISR的抢占。很显然,这种操作应该尽可能的简短,甚至不要调用任何函数。否则它直接影响到中断延时,导致系统的不确定性。如果还要阻止任务的抢占,那么同时要使用taskLock()

警告:使用中断锁时,再调用系统函数的话,可以导致中断不定期的重新使能,例如调用的函数发生阻塞,或者激活高优先级任务

任务锁

函数taskLock()关闭任务抢占,仅让当前任务执行,除非当前任务阻塞或挂起。当这个任务解除阻塞、恢复执行后,它会再次禁止任务抢占。函数taskUnlock()恢复其它任务的抢占。这一对儿函数也用于保护临界区域,不过不能在ISR中使用


任务锁可以嵌套使用,其内部有计数器,因此同等数量的taskUnlock()被调用后,才能真正的重新使能任务抢占

注意: 任务锁可能影响系统的实时响应时间,因为它阻止了高优先级任务的执行,通常互斥信号量是个更好的选择。另外,任务锁不会阻止中断。想要同时阻止中断抢占的话,就同时使用intLock()

看完了这篇文章,相信你对"VxWorks中多任务通信的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

任务 通信 机制 函数 信号 数据 消息 信号量 系统 数据结构 结构 事件 进程 队列 保护 之间 同时 空间 阻塞 示例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福州云间菡网络技术有限公司 服务器新装系统无法启动 取消服务器管理器开机启动 数据库以表格形式显示出来 什么棋牌软件开发比较好 戴尔服务器更换电池后不开机 安卓软件开发项目流程 a5m2数据库工具是免费的吗 丹路康网络技术 北京班信网络技术有限公 嵌入式软件开发区海边照片 云服务器内容会被泄露吗 戴尔720服务器安全模式 计算机三级网络技术一周能过吗 嵌入式好还是软件开发好 深圳天天惠网络技术 高性能网络技术教程 如何租用别人的服务器 甘肃gpu服务器租赁虚拟主机 软件开发工具的基础是 刷卡网络技术是什么 数据库中字段串是什么 石景山区特色软件开发设置 服务器主板必须搭配服务器内存吗 公司什么业务需要用到服务器 舟山网络安全和信息化委员会 计算机网络技术专业的认知 简述一下什么是数据库管理系统 档案信息数据库质量检测制度 采购需关注哪些数据库
0