摘要:
祥细介绍了VxWorks内核中消息队列的工作原理,对消息队列的源码进行了流程分析。结合实例给出了消息队列API的使用方法。
关键词:VxWorks, 消息队列, IPC
消息队列是VxWorks 3种进程间通信机制之一。另外两种是信号量和共享内存。这些IPC机制使用共同的授权方法。只有通过系统调用将标志符传递给内核之后,进程才能存取这些资源。这种系统IPC对象使用的控制方法与文件系统非常类似,使用资源的引用标识符作为资源表的索引。
消息队列就是一个消息的链表。就是把消息看作一个记录,并且这个记录有特定的格式和特定的优先级。对消息队列有写权限的进程可以按照一定的规则添加新消息,对消息队列的读权限的进程可以从消息队列中读取消息。
1.msgQlib.h消息队列介绍
1.1 消息队列基本概念
VxWorks 采用消息队列的方式来实现消息传递。这种消息的传递方式是:发送方不必等待接收方检查它所接收到的消息就可以继续工作下去,而接收方如果没有收到消息也不需等待。这种通信机制相对简单,但应用程序使用起来就需要使用相对复杂的方式来进行了。新的消息总是放在队列的末尾,接收的时候并不一定总是从头来接收,也可以从中间接收。
消息队列是随内核【】进程相关,只有在内核重启或者显式删除一个消息队列时,该消息队列才会真正被删除。因此系统中记录消息的数据结构
struct ipc_ids msg_ids |
位于内核中,系统中的所有消息结构都可以在结构msg_ids中找到访问入口。
1.2 相关系统调用简介
消息队列的编程接口(API)共有4个:
(1)msgget():调用者提供一个消息队列的键标,
2.源码分析(图,文)
3.应用
4.结论
VxWorks中信号量实现任务间通信与同步机制分析
基于VxWorks的实时多任务程序设计机制分析