《嵌入式实时操作统μCOS原理与实践5》由会员分享,可在线阅读,更多相关《嵌入式实时操作统μCOS原理与实践5(24页珍藏版)》请在金锄头文库上搜索。
1、作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践沫渣绿叙蹭儿昏弹隆尽礁乃兄失楚规减试阉津湛霉镇舟弊锻誉父伤掉湘桅嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5嵌入式实时操作系统嵌入式实时操作系统C/OSC/OS原理与实践原理与实践教材教材 :嵌入式实时操作系统:嵌入式实时操作系统C/OS原理与实践原理与实践电子工业出版社电子工业出版社 作者作者:卢有亮卢有亮 电子科技大学能源科学与工程学院电子科技大学能源科学与工程学院萌绕迟饥饰病细您扦毖验芽饲耘妓渤迫涎鹤纳函星沾屡粘昏谭广羌提锁痰嵌入式
2、实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践第5章 消息管理5.1 消息邮箱5.1.1 建立消息邮箱5.1.2等消息5.1.3 发消息5.1.4 删除消息邮箱5.1.5放弃邮箱等待5.1.6 无等待请求消息5.1.7查询邮箱状态5.1.8 消息邮箱的例子5.2 消息队列5.2.1 消息队列数据结构5.2.2 初始化消息队列5.2.3 建立消息队列5.2.4发消息到消息队列5.2.5等待消息队列中的消息5.2.6删除消息队列5.2.7取得消息队列
3、的状态5.2.8消息队列应用举例习题莉谅漫刷馁亨稚课找莲毒美阀整语涂临爪潍赠幕公子萎缘捅觅勃开菲插掂嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践 在信号量、互斥信号量和事件标志组的内容结束后,读者对事件之间如何同步,如何根据不同需要设计同步程序,应该有了深入的理解和提高。本章的消息管理中包括消息邮箱和消息队列两方面的内容,适用于任务之间的信息交流和同步。从原理上讲,消息管理也应该属于事件管理的范畴 。捎喊镭怕腹鼎篱澡摆坊赴巳降搅伶脾攻碧桓
4、带捍假姚越烬雪拽耐绎谐贡酝嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1 消息邮箱消息邮箱消息邮箱是C/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个消息。传递这个消息的媒体是一个指针型变量,该指针指向一个包含了“消息”的某种数据结构。 淫孤量填认润撑沮缄厕痴扬鹏诉昭娱嫡工狡套镊掐妆炳沃郴饰墙雌姓嗓冤嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书P
5、PT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.1 建立消息邮箱建立消息邮箱在系统初始化之后,并不存在一个消息邮箱。这时操作系统中的事件管理数据结构事件控制块ECB为全空,所有的事件控制块都在ECB空闲链表中排队。消息邮箱的建立函数OSMboxCreate将使用一个并配置一个ECB,使其具备消息邮箱的属性。表5.2创建信号量函数OSMboxCreate解析 1.检查是否这中断服务程序中创建消息邮箱。同不允许在中断服务程序中创建信号量一样,操作系统C/OS-II同样不允许在中断服务程序中创建消息邮箱。2.检查是否有空闲的事件控制块。将
6、OSEventFreeList赋值给pevent,如果pevent为空指针,表示没有空闲的事件控制块,函数返回。3.在事件控制块空闲链表中取下表头。因为pevent现在已经是用于邮箱的事件控制块,读者可以直接把他理解为一个邮箱。那么,需要执行的操作显然就是在事件控制块空闲链表中将他删除,这时候OSEventFreeList应该指向第二个ECB。4.对事件控制块赋值假设信号量值为5,则赋值后的ECB应该如图5-1所示 5.返回ECB地址。 裴兑箩月盐彻盔街赊揩痢酵辛撩洲摈压绍龟序屏耻屡入忘棋状挠结爽乖坎嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书
7、图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践塑痢硅洪煎哪支淀寇嚎譬映汛臀咕鲁曙扳炮赫厨羔躺圃料串低屹头罚彪毗嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.2等消息等消息等消息也称为请求消息。含义是当消息存在的时候获取消息,当消息不存等消息也称为请求消息。含义是当消息存在的时候获取消息,当消息不存在的时候就放弃对在的时候就放弃对CPU的占有,直到有消息的时候才被唤醒。当任
8、务后续的占有,直到有消息的时候才被唤醒。当任务后续的操作离不开消息,这时任务就不该死死占着的操作离不开消息,这时任务就不该死死占着CPU不让其他的任务运行,不让其他的任务运行,就应该去休息,而当消息到来的时候系统会将消息唤醒回就绪态,任务获就应该去休息,而当消息到来的时候系统会将消息唤醒回就绪态,任务获得消息后继续运行。得消息后继续运行。 表5.3等待消息邮箱函数OSMboxPend解析糜丹桂由每充生矮砰琶拾脉记点查苏绿徘遣苹汾吾霸酪年蒲窑淳卜惋瘫俱嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/
9、嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.3 发消息发消息当一个任务因为等待消息而被阻塞的时候,只有当其他任务发出了消息,被阻塞的任务才能被恢复到就绪态,从而获得消息后继续运行。阻塞的函数在前一节分析过了,发消息的函数为OSMboxPost,参数是消息类型的ECB的指针,以及消息的地址。 表5.4发消息函数OSMboxPost解析怜廉烩今倚譬糟吧娃三尘遮为徽翅绳嘱肪治氓殊油是奢撕控涨超疙坎篱习嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实
10、时操作系统原理与实践5.1.4 删除消息邮箱删除消息邮箱当消息邮箱不再使用了,就应该尽快归还给系统,即将消息占用的ECB归还给ECB空闲链表以备它用。消息邮箱的删除函数是OSMboxDel。删除一个消息也要涉及方方面面,因为可能有任务正在等待这个邮箱中的消息。 表5.5删除消息邮箱的函数OSMboxDel解析又叠拟路吨脚撂至幂翼护苍楔疮辰审糟签很叠席撩斥绥绚惕喳绎馁飞蔷雕嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.5放弃邮箱等待放
11、弃邮箱等待同放弃对信号量的等待类似,放弃等待邮箱也绝对不会是放弃本任务对邮箱的等待。放弃等待邮箱函数将放弃的是所有等待某邮箱的任务对该邮箱的等待或等待某邮箱的优先级最高的任务对邮箱的等待。表5.6放弃等待邮箱函数OSMboxPendAbort解析流程如下:1.检查事件控制块指针是否有效及事件控制块类型是否有效。2.如果pevent-OSEventGrp为0说明没有任务等待消息邮箱,取消等待的任务数是0,返回0。3.否则根据参数opt(选项)进行分支转移,如为OS_PEND_OPT_BROADCAST,使用while语句循环地将等待该邮箱的每个任务用OS_EventTaskRdy来取消等待并使其
12、就绪(除非任务还被挂起);如果为其他值则只将最高优先级的任务取消等待并就绪之。4.返回取消等待信号量的任务数。运洛殷仇捏爱肉芦柯鸡囚柞谚青零课爸论果狱烛孩皱疙胆倍癌氦醚营磺离嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.6 无等待请求消息无等待请求消息在中断服务程序和有些用户任务中,需要无等待的请求消息邮箱。也就是说,到邮箱中取邮件,如果有邮件就获得邮件,如果没有并不阻塞自己,而是继续执行其他代码。OSMboxAccept就是无等待
13、的请求消息邮箱函数,参数是请求的消息邮箱的ECB指针。该函数的返回值是指向邮箱的指针,如果没有取得消息,那么就返回空指针。 表5.7无等待地请求消息邮箱函数OSMboxAccept解析首先参数检查ECB是否有效,如果有效,将消息邮箱中邮件的地址OSEventPtr赋值给pmsg,然后清邮箱内容,返回获得的邮件的地址pmsg。这样,如果邮箱中有邮件,那么返回邮件的地址,如果没有,返回值就是空地址。 睡忻褪络墓炳药苹激疤酝卑胖人刘栓活糟褂企魔卿毙辱挥哟妒频崔携眩节嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载ht
14、tp:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.7查询邮箱状态查询邮箱状态消息邮箱状态查询函数OSMboxQuery的参数是ECB地址和一个指向OS_MBOX_DATA类型的地址。ECB地址指向邮箱,OS_MBOX_DATA类型的地址指向返回结果的一个S_MBOX_DATA类型的对象。表5.9查询消息邮箱状态函数OSMboxQuery解析曲摔否遍庐诛泳搐逐遏巴振衡秦倘参忘旦凶巧默廷缅届抨庚沂谦别挝核饱嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与
15、实践嵌入式实时操作系统原理与实践5.1.8 消息邮箱的例子消息邮箱的例子假设有任务TaskMessageSen和TaskMessageRec, TaskMessageSen在事件片1创建一个邮箱,如果邮箱中已没有邮件,每秒向邮箱发送一个消息,消息内容为从0开始的计数值,该计数值每秒加1。任务TaskMessageRec从时间1开始,做的事情就是查看邮箱,然后把邮件打印出来。现在我们采用邮件管理完成这两个任务的设计。惩橱罚鼓烘眶迢疽倦铲抚删竣阐歇顶测闸汕刃蓬瞳便揩梅赐揩眩殃虐止漂嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载
16、和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2 消息队列消息队列 消息邮箱中只能存放一则消息,太少了,能不能像电子邮件一样,管理多条消息呢?C/OS为实现这一目的,设计了消息队列管理。使用消息队列管理,就允许使用可以容纳多条信息的大邮箱,按照先进先出(FIFO)的原则,发送和接收邮件。需要注意的是,这样的邮箱不是操作系统提供的,而是要由用户任务来提供。操作系统提供的是对其进行管理的程序。另外,邮箱中的内容仍然是邮件的地址。 消息队列的代码单独存放在os_q.c中 抢校桌愈对颗揭亨生弥邹墅姻夫宜苹褐配用淡景硷淌司尿拧牺遏蜀定叮充嵌入式实时操作统COS原
17、理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.1 消息队列数据结构消息队列数据结构1消息队列及其控制块消息队列及其控制块typedef struct os_q /* 队列控制块队列控制块QCB*/ struct os_q *OSQPtr; /*在空闲在空闲QCB链表中,指示下一个链表中,指示下一个QCB*/ void *OSQStart; /*队列数据的首地址队列数据的首地址*/ void *OSQEnd; /*队列数据的末地址队列数据的末地址*/ voi
18、d *OSQIn; /*指示下次插入消息的位置指示下次插入消息的位置 */ void *OSQOut; /* 指示下次提取消息的位置指示下次提取消息的位置*/ INT16U OSQSize; /*队列的最大容量队列的最大容量*/ INT16U OSQEntries; /*队列中当前的消息量队列中当前的消息量*/ OS_Q; 2消息控制块实体消息控制块实体 OS_Q OSQTblOS_MAX_QS;3空闲消息队列链表 消息控制块QCB中OSQWaitList用来指示空闲消息控制块QCB链表中的下一个消息控制块QCB。 矮甸籽虾忻割款喝蛤健栽墓垒堡甫挚匙掩荐近澈非狭灭孺医栓兴球纠溺茶嵌入式实时操作
19、统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践航太彩昏库观哟缕刹茬房膊稚占炼偶来廊淌谬嘎问垢逃坞筐完轩褂帝摸疆嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.2 初始化消息队列初始化消息队列消息队列初始化函数在操作系统初始化时被调用,主要用于初始化消息队列使用的数据结构。消息队列初始化函数的名称
20、为OS_QInit表5.13消息队列初始化函数OS_QInit解析1. 将所有QCB全部清为全0。2. 使用for循环将除最后一个消息控制块OSQTblOS_MAX_QS - 1之外的所有消息控制块初始化,构建了单向的消息队列空闲链表。3.初始化最后一个QCB,将消息队列空闲链表完善。 吏晚宗唇拍赞惊忙恫撂忿伞夏笆琵吕溉棒轻饮稍谓动诚拷肪假奇规壁蛇握嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.3 建立消息队列建立消息队列创建消息队
21、列就是将从ECB空闲链表中取下一个事件控制块ECB来,将其用于消息队列管理。并从QCB空闲链表的表头取下一个消息控制块QCB,将其各种属性进行设置,用于指示消息的位置以及提取和插入消息的位置。创建消息队列的函数名称为OSQCreate。表5.14消息队列创建函数OSQCreate分析 1. 判断是否在中断服务程序中调用本函数,如果是就返回。2. 取得消息队列的链表首地址送pevent。3. 判断pevent是否为空指针,如果是则说明是系统已经没有空闲的ECB可供使用,填写错误信息,返回空指针。4. 从空闲ECB链表取下表头。5. 空闲QCB链表首地址送pq。6. 如果没有有效的空闲QCB链表,
22、恢复空闲ECB链表,返回空ECB指针。7. 在空闲QCB链表中取一个pq指向的QCB,对其进行初始化。设置OSQStart为消息指针数组的首地址start。OSQEnd值为&startsize即消息指针数组(消息队列)中最后一个指针后面的一个地址。OSQIn和OSQOut也设置为start。OSQSize的值为size。OSQEntries为0表示该队列中还没有消息。8. 接下来对pevent指向的ECB进行初始化。OSEventType为OS_EVENT_TYPE_Q表示用于消息队列管理。OSEventCnt在这里没有用,设置为0。OSEventPtr指向QCB,即设置为pq。调用OS_Ev
23、entWaitListInit初始化ECB中的事件等待表和事件等待组。9.返回ECB指针。宰六池绿酵艳恿眼恍哺袭百液神矢禁洗恐摊漓彦嘴析氧忧棘妊舞起愁遮楔嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.4发消息到消息队列发消息到消息队列发消息到消息队列的函数名称为OSQPost。参数是事件控制块ECB的地址pevent和消息的地址pmsg。表5.15发消息到消息对列函数OSQPost分析 1.首先进行参数检查,如果参数检查失败则返回。
24、2. 如果有任务等待消息队列中的消息,那么消息队列现在必然是空的。不需要将消息存入队列,而直接将消息给在等待的优先级最高的消息,并将其就绪。执行一次任务调度然后返回。3. 如果没有任务等待消息队列中的消息,那么就需要将该消息加入消息队列。如果消息队列是满的,不能容纳更多的消息,返回出错信息。否则,在消息控制块QCB的OSQIn所指示的消息指针数组位置存入该消息,然后将OSQIn 指向下一个单元以便下次使用。判断OSQIn是否到超过了表尾,如果超过了,将其指向队首。然后返回。凋裔蘸原掣困栋样犁指源净淋榜藏叶怎迢悲遮貌懊翅绕爱啦烧而呢咕害残嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原
25、理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.5等待消息队列中的消息等待消息队列中的消息等待消息队列的消息是消息队列管理中的又一核心函数。如果消息队列中有消息,那么就取出消息,然后返回;如果没有消息,只有在ECB中标记自己的等待,然后阻塞。等待消息队列的函数的名称为OSQPend,参数是ECB的指针、等待超时时间和返回函数执行信息的指针的perr。函数的返回值是指向消息的指针。表5.16消息队列等待函数OSQPend分析1.首先进行参数、ECB类型、中断、调度锁检查,失败则返回。2. 取得
26、ECB中的QCB指针,查询消息队列中是否有消息。如果有消息,那么请求直接成功,取得消息队列中OSQOut所指的消息,将OSQOut指向消息队列中的下一个元素以备下一次的消息提取。如果OSQOut指向了消息队列之外,就指向消息队列的首地址。将OSQEntries减1表示消息数量减少了一个。然后返回消息的指针。3. 如果没有消息,那么任务就只有被阻塞。首先在TCB中的STCBStat中添加消息队列等待标志,任务延时时间,初始化等待状态,然后调用OS_EventTaskWait 添加等待标志和取消就绪标志,接着调用OS_Sched执行一次任务调度。 4. 任务恢复运行后,根据TCB中的等待状态OST
27、CBStatPend决定程序走向。如果获得了消息,进行一些处理后返回该消息。如果是退出等待,或是等待超时,分别填写没有取得消息的原因,然后返回空指针。坎豆瞒雍辛玩服疯辟痒粪锹烷刻攒绞囱嘱爬诈弓考腥窝牢贿府间入尼派景嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.6删除消息队列删除消息队列当消息队列不再使用了,就应该尽快归还给系统,即将消息占用的ECB归还给ECB空闲链表以备它用,将QCB也归还给空闲QCB链表。删除消息队列的函数的名称
28、为OSQDel,参数是ECB的指针、删除操作的选项opt和返回函数执行信息的指针的perr。 其中opt的值为 OS_DEL_NO_PEND 表示只有当没有任务等待该消息队列的时候才允许删除,opt的值为OS_DEL_ALWAYS 表示无论如何都删除。如果成功删除,返回空指针;否则返回ECB的指针。表5.17消息队列删除函数OSQDel解析 1.首先进行参数的检查。2. 根据选项opt决定程序的分支3. 如果opt不是这两个值当中的一个,那就是说明是错误的选项,也属于参数检查失败。因此,标记错误信息perr为OS_ERR_INVALID_OPT后,直接返回原来ECB指针pevent。 熬蛇昂羔
29、淑甩患啪绑采结果饭兼泄旗系恍烯漠贺疤鹿辆捍瘦亏锌尺妈治仪嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.7取得消息队列的状态取得消息队列的状态消息队列数据OS_Q_DATA是为返回消息队列信息而提供的,因此用户程序如果想了解消息队列的信息,要先创建OS_Q_DATA的实例。然后以消息队列所在ECB地址及该实例的地址为指针为参数调用获取消息队列的状态函数OSQQuery表5.19获取消息队列的状态函数OSQQuery解析敷户挨镍亏剁碎螟
30、瑶泌趋礼葵拉如烽特贺桌即随禾艇删队喳追泻氯摔扰架嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.8消息队列应用举例消息队列应用举例假设有任务假设有任务TaskQSen和和TaskQRec, TaskQSen在时间片在时间片1创建一个消息队列,然创建一个消息队列,然后每秒向消息队列中发邮件,其余时间延时。后每秒向消息队列中发邮件,其余时间延时。TaskQRec每每2秒从消息队列中取邮秒从消息队列中取邮件,然后延时。件,然后延时。 表5.
31、20消息邮箱的例子推暴闽胀嘶振甥淳将蜘械咸稀抵撕墙儡土闭懈鞘恒禁认悸绦蓝醒戎枷吓仙嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践习题习题1. 比较消息管理和信号量管理,指出他们的区别和共同点。比较消息管理和信号量管理,指出他们的区别和共同点。2. 消息队列管理使用了哪些数据结构,请描述他们之间的关系。消息队列管理使用了哪些数据结构,请描述他们之间的关系。3. 请分析等待消息的过程都涉及了哪些数据结构,画出消息等待的流程。请分析等待消息的过程
32、都涉及了哪些数据结构,画出消息等待的流程。4. 请分析发消息的过程都涉及了哪些数据结构,画出发消息的流程。请分析发消息的过程都涉及了哪些数据结构,画出发消息的流程。5. 请分析删除消息队列的过程都涉及了哪些数据结构,画出删除消息队列的请分析删除消息队列的过程都涉及了哪些数据结构,画出删除消息队列的流程。流程。6. 请分析提取消息队列信息的过程都涉及了哪些数据结构,画出提取消息队请分析提取消息队列信息的过程都涉及了哪些数据结构,画出提取消息队列信息的流程。列信息的流程。7. 有任务有任务A、任务、任务B。任务。任务A接收屏幕上输入的数据,然后将该数据送给任务接收屏幕上输入的数据,然后将该数据送给
33、任务B,任务,任务B能立刻打印出该数据。请采用消息管理编程实现任务能立刻打印出该数据。请采用消息管理编程实现任务A和任务和任务B并并上机实践。上机实践。8. 有任务有任务A、任务、任务B。任务。任务A接收屏幕上输入的数据,然后将该数据送给任务接收屏幕上输入的数据,然后将该数据送给任务B,任务,任务B每每20秒打印一次这秒打印一次这20秒内接收到的数据。请采用消息队列管理编秒内接收到的数据。请采用消息队列管理编程实现任务程实现任务A和任务和任务B并上机实践。并上机实践。 蕊脱稻祸澄侗纂崖意月临崔柱狰钱仗巴景列疑槐繁角己铺贴丛剩台懦柯靳嵌入式实时操作统COS原理与实践5嵌入式实时操作统COS原理与实践5