第四章 消息队列

第四章 消息队列

ID:14160884

大小:932.00 KB

页数:6页

时间:2018-07-26

第四章      消息队列_第1页
第四章      消息队列_第2页
第四章      消息队列_第3页
第四章      消息队列_第4页
第四章      消息队列_第5页
资源描述:

《第四章 消息队列》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二篇实时操作系统第四章消息队列4.1引言本章讨论如下内容:.定义消息队列;.消息队列状态;.消息队列内容;.典型的消息队列操作;.典型的消息队列使用。4.2定义消息队列消息队列是一个类似于缓冲区(buffer–like)的对象;通过它,任务和ISR发送和接收消息,实现带数据的通信和同步。当首次建立一个消息队列时,分配一个相关的队列控制块QCB(QueueControlBlock)、一个消息队列名、一个惟一的ID、存储器缓冲区、一个队列长度、一个最大消息长度和一个或多个任务等待列表。图4.1消息队列及其相关的参数和支持的数据结构4.3消息队列状态图4.2消息队列的状态图4.4

2、消息队列内容消息队列可以用来发送和接收多种数据。一种克服消息长度限制的方法是发送一个指向数据的指针,而不是数据本身。图4.3发送和接收消息的消息拷贝和内存使用4.5消息队列存储所有队列的消息存储在一个大的共享内存区域。对每个消息队列使用分开的内存区域,私有缓冲区。4.5.1系统池4.5.2私有缓冲区4.6典型的消息队列操作.创立和删除消息队列;.发送和接收消息;.获取消息队列信息。4.6.1创立和删除消息队列表4.1消息队列创立和删除操作操作描述Create创立一个消息队列Delete删除一个消息队列4.6.2发送和接收消息表4.2发送和接收消息操作描述Send给消息队列发送

3、一个消息Receive从消息队列接收消息Broadcast广播消息1.发送消息给一个消息队列发送消息,应按下列各种方式:.无阻塞(notblocking)(ISR和任务);.带时限的阻塞(blockwithatimeout)(仅仅对任务);.永远阻塞(blockforever)(仅仅对任务)。图4.4FIFO或LIFO次序的发送消息2.接收消息无阻塞、带时限的阻塞或永远阻塞。图4.5FIFO和基于优先权的任务等待列表以两种方式从消息队列的头读取消息,即.破坏性读(destructiveread);.非破坏性读(not–destructiveread)。在破坏性读中,当一个任务

4、成功地从一个队列接收一个消息时,任务永久地从消息队列的存储器缓冲区内将消息删除。在非破坏性读中,接收任务从队列的头上窥视一个消息,但并不删除它。两种读消息的方式都是很有用的。然而,并不是所有的内核实现都支持非破坏性读。4.6.3获得消息队列信息表4.3得到消息队列信息操作操作描述Showqueueinfo得到消息队列的信息Showqueue’stask–waitinglist得到队列的任务等待列表中的任务列表4.7典型的消息队列使用在应用中使用消息队列的典型方式:.非互锁的(non–interlocked)单向数据通信;.互锁的(interlocked)单向数据通信;.互锁的

5、双向数据通信;.广播通信4.7.1非互锁的单向数据通信图4.6非互锁的单向数据通信4.7.2互锁的单向数据通信图4.7互锁的单向数据通信4.7.3互锁的双向数据通信图4.8互锁的双向数据通信4.7.4广播通信图4.9广播消息4.8本章要点.消息队列是类似于缓冲区(buffer–like)的内核对象,用做两个任务之间或一个ISR和一个任务之间的数据通信和同步。.消息队列具有相关的消息队列控制块(QCB)、一个名字、一个惟一的ID、内存缓冲区、一个消息队列长度、一个最大的消息长度和一个或多个任务等待列表。.消息队列的开始和结束分别称为头和尾,每个能保持一个消息的缓冲区称为一个消息

6、队列元素。.消息队列创立的时候是空的;当所有的消息队列元素都含有消息时是满的。.给满的消息队列发送消息将引起发送任务的阻塞,而接收来自一个空的消息队列的消息将引起一个接收任务的阻塞。.经由无阻塞、带时限的阻塞或永远阻塞,任务可以发送到消息队列和从消息队列接收。一个ISR只能无阻塞地发送消息。.与一个消息队列相关的任务等候队列,可以按FIFO或基于优先权的次序释放任务(不阻塞它们)。.数据本身可以作为消息,或者将指向数据的指针作为消息。.消息队列操作:创立和删除消息队列、发送和从消息队列接收消息以及获得消息队列信息。.如果消息队列实现上支持紧急消息,则紧急消息插入队列的头上。.

7、使用消息队列进行基于数据通信的方法包括:提供单向或双向数据通信的非互锁和互锁队列。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。