CN100351799C - 嵌入式实时操作系统中基于消息对象的任务间通信方法 - Google Patents

嵌入式实时操作系统中基于消息对象的任务间通信方法 Download PDF

Info

Publication number
CN100351799C
CN100351799C CNB2005100607320A CN200510060732A CN100351799C CN 100351799 C CN100351799 C CN 100351799C CN B2005100607320 A CNB2005100607320 A CN B2005100607320A CN 200510060732 A CN200510060732 A CN 200510060732A CN 100351799 C CN100351799 C CN 100351799C
Authority
CN
China
Prior art keywords
message
message object
data
formation
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2005100607320A
Other languages
English (en)
Other versions
CN1779646A (zh
Inventor
赵民德
厉蒋
郁利吉
孟晓楠
孙洁
吴朝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CNB2005100607320A priority Critical patent/CN100351799C/zh
Publication of CN1779646A publication Critical patent/CN1779646A/zh
Application granted granted Critical
Publication of CN100351799C publication Critical patent/CN100351799C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及一种嵌入式实时操作系统中基于消息对象的任务间通信方法,主要由发送消息对象、接收消息对象、过滤机制和通知机制四大模块组成,消息传递由消息发送部分和消息接收部分两个过程组成。发送消息的过程如下:任务指明发送消息对象和需要传送的消息数据;遍历与发送消息对象进行通信的接收消息对象,根据过滤算法对消息进行过滤;如果是队列接收消息对象,消息数据将被存入该接收消息对象中消息队列的尾部,如果是非队列接收消息对象,消息数据将被存贮到该接收消息对象的数据存储区。本发明优点是:支持任务间的多种通信方式,任务可以使用消息对象以达到多种方式通信的目的。提供过滤机制,主动通知机制,同时支持消息的队列接收和非队列接收。

Description

嵌入式实时操作系统中基于消息对象的任务间通信方法
技术领域
本发明涉及计算机领域的嵌入式实时操作系统,特别涉及一种嵌入式实时操作系统中基于消息对象的任务间通信方法。
背景技术
在多任务的嵌入式实时操作系统中运行着多个不同的任务,一个任务就是一个运行的程序,任务间不可避免的要进行数据的交换,这种任务间的数据交换过程被称为任务间通信,任务间通信是嵌入式实时操作系统中不可缺少的功能。目前在多任务嵌入式实时操作系统中常用的任务间通信方式有消息邮箱和消息队列两种。
消息邮箱是大多数多任务操作系统任务间通信的一种方式,一个邮箱是公认的  块内存区域。一个任务通过内核服务把一则消息放到邮箱里去,一个或多个任务可以通过内核服务接收这则消息。消息队列实际上是邮箱阵列。任务可以通过内核提供的服务把一则消息放到消息队列里去,一个或多个任务可以通过内核服务从消息队列中接收这则消息。通常,先进入消息队列的消息先被传递给任务,即先进先出原则。
消息邮箱和消息队列有其共同的缺点:首先,在某些嵌入式实时操作系统中,如在开放源代码的μC/OS中,一个消息邮箱或消息队列只能为一个任务发送消息,多个任务不能使用同一个邮箱或队列发送消息。当有许多任务需要发送消息时就需要为每个任务新建一个邮箱或队列,这样会消耗很多内存空间。其次,接收消息的任务等待一则消息的时候需要不断查询邮箱或队列的状态知道该消息的出现,反复的查询浪费了系统的资源,降低了系统的效率。最后,消息邮箱和消息队列只负责消息传输而不关心消息的内容,接收消息的任务需要自行判断消息是否有用,也就是说,任务可能花大量时间用于过滤无用的消息,这样就大大降低了任务执行的效率。由于嵌入式实时系统要求很高的内存利用率和很高的系统效率,所以需要一种更好的任务间通信方法。
发明内容
本发明为了解决上述缺陷,提供了一种嵌入式实时操作系统中基于消息对象的任务间通信方法。
本发明解决其技术问题所采用的技术方案如下:这种嵌入式实时操作系统中基于消息对象的任务间通信方法,该方法主要由发送消息对象、接收消息对象、过滤机制和通知机制四大模块组成,整个消息传递由消息发送部分和消息接收部分这两个主要过程组成:
1)、消息发送部分中发送消息的过程,具体步骤如下:
1.1)、任务指明发送消息对象和需要传送的消息数据;
1.2)、遍历与发送消息对象进行通信的接收消息对象,根据用户设定的过滤算法对消息进行过滤,未通过的消息被丢弃,通过过滤的消息进入下一步;
1.3)、如果是队列接收消息对象,消息数据将被存入该接收消息对象中消息队列的尾部,如果队列已满,该操作无法进行,消息将被丢弃并队列状态将被设置为“溢出”,如果是非队列接收消息对象,消息数据将被存贮到该接收消息对象的数据存储区;
1.4)、更新用于过滤机制的实时参数;
1.5)、遍历下一个接收消息对象,按步骤1.3)~1.5)进行;
1.6)、遍历与发送消息对象进行通信的接收消息对象,根据用户设定的通知机制执行通知内容;
2)、消息接收部分中接收消息的过程,具体步骤如下:
2.1)、任务指明接收消息对象以及存放消息数据的缓存;
2.2)、如果该接受消息对象为队列接受消息对象,则查询队列中是否存在消息,如果队列中无消息进行错误处理并退出,否则进入下一步;
2.3)、从接受消息对象中获取消息数据,如果为队列接受消息对象,则从队列的头部获取消息,并将其消息从队列中移出,如果此时的消息队列为空,设置队列状态为“队空”,如果队列状态为“溢出”,则返回状态表明获取该消息前已经发生过队列数据溢出;如果为非队列接受消息对象,则直接从其缓存中获得消息。
本发明具有如下优点:
1.支持任务间的多种通信方式,包括一对一、一对多、多对一及多对多通信。本发明使用消息对象传送消息,任务可以灵活使用消息对象以达到多种方式通信的目的。比如多个任务可以使用同一个发送消息对象发送消息,而一个发送消息对象可以有一个或多个接受消息对象,所以一条消息可以被一个或多个任务接受。
2.提供过滤机制。传统的进程间通信方式只提供传递消息的功能,本发明在消息传递过程中提供了消息过滤功能,可以根据用户的需求过滤无用的消息,接收消息的任务只接收有用的消息而不需要花费时间处理无用的消息。
3.提供主动通知机制。传统的进程间通信方式中,任务需要主动查询消息发送和接受的状态,反复的查询降低了任务运行的效率,本发明提供通过多种方式主动通知消息传输状态的功能从而提高了任务运行的效率。
4.同时支持消息的队列接收和非队列接收。本发明同时支持消息的队列接收和非队列接收,使得用户可以更具不同的需求使用其中一种或同时使用这两种消息接收方式,提高了本发明的适用性。
附图说明
图1基于消息对象的任务间通信的模型;
图2利用发送消息对象发送消息的具体流程;
图3利用接受消息对象接收消息的流程;
图4基于消息对象的任务间通信实例。
具体实施方式
下面结合附图和实例对本发明作进一步介绍,图1是这种嵌入式实时操作系统中基于消息对象的进程间通信方法的模型,该方法主要由发送消息对象、接收消息对象、过滤机制和通知机制四大模块组成,整个消息传递由以下两个主要过程组成:
一.消息发送部分
发送消息的过程如图2所示,具体如下:
1.任务指明发送消息对象和需要传送的消息数据。
2.遍历与发送消息对象进行通信的接收消息对象。根据用户设定的过滤算法对消息进行过滤,未通过的消息被丢弃,通过过滤的消息进入下一步。
3.如果是队列接收消息对象,消息数据将被存入该接收消息对象中消息队列的尾部,如果队列已满,该操作无法进行,消息将被丢弃并队列状态将被设置为“溢出”。如果是非队列接收消息对象,消息数据将被存贮到该接收消息对象的数据存储区。
4.更新用于过滤机制的实时参数。
5.遍历下一个接收消息对象,按步骤3~5进行。
6.遍历与发送消息对象进行通信的接收消息对象,根据用户设定的通知机制执行通知内容。
二.消息接收部分
由于在发送消息时已经将数据复制到了接收消息对象中,此时只需将数据从接收消息对象复制到接收数据区即可。
图3说明了接收消息的过程。接收队列消息过程如下:
1.任务指明接收消息对象以及存放消息数据的缓存。
2.如果该接受消息对象为队列接受消息对象,则查询队列中是否存在消息,如果队列中无消息进行错误处理并退出,否则进入下一步。
3.从接受消息对象中获取消息数据,如果为队列接受消息对象,则从队列的头部获取消息,并将其消息从队列中移出,如果此时的消息队列为空,设置队列状态为“队空”。如果队列状态为“溢出”,则返回状态表明获取该消息前已经发生过队列数据溢出。如果为非队列接受消息对象,则直接从其缓存中获得消息。
本发明的嵌入式实时操作系统中的任务间通信方法是基于消息对象的。消息对象分为发送消息对象和接收消息对象,发送消息对象用户消息的发送、过滤以及触发通知机制。用户为每一个发送消息对象指定一个或多个接收消息对象,当一个任务把消息发送给发送消息对象时,这个发送消息对象负责把消息数据传递到这些指定的接收消息对象中,使得另一个任务能够从接收消息对象中获取该消息。
本发明中的接收消息对象用于消息的接受,一个接受消息对象只能指定一个发送消息对象与之通信,从而保证了数据的一致性。接受消息对象可以被分为队列接收消息对象和非队列接收消息对象两种。
队列接收消息对象中有一个先进先出(FIFO)队列。当队列为空时,消息对象不为任务提供消息。当队列不空时任务可以从消息对象中接收消息,这时任务将从消息队列的头部获取最先进入队列的消息,该消息被读取后将从队列中删除,也就是说,一条队列消息只能被读取一次。每个队列接收消息对象中的消息队列可以被配置成不同的大小,新消息到达未满的队列时,它将被存储到队列的尾部,而当新消息到达已满队列时,消息将被丢弃,下一个试图获取消息的任务将被告知一个消息被去弃了。
非队列消息不使用FIFO机制。任务在接收消息时非队列接收消息对象不删除该消息,也就是说,非队列消息可以被任务多次读取。每当新的消息被非队列接收消息对象接收,新的消息数据将覆盖原有的消息数据,非队列消息有个用户配置的初始值,如果非队列接收消息对象在初始化后没有接收任何消息,任务将从该消息对象中获取该初始值。
本发明还提供了一套过滤机制,当发送消息对象将消息发送时,必须通过用户设置的过滤算法。每一个过滤算法根据消息数据的内容对消息进行过滤并丢弃某些的消息。在接收端每个接收消息对象可以指定使用一种过滤算法,当发送消息对象试图传送消息数据到该接收消息对象的时候过滤算法被执行,只有未被过滤掉的消息能被传送到接收消息对象中,用户可以自定义不同的过滤算法,一般可以使用如下几种类型的过滤算法:
1.根据接收到的消息数据值进行过滤。消息数据的值在一定范围内的消息被接收,不在这一范围内的消息被丢弃。
2.根据消息数据变化趋势进行过滤。比较新接收到的消息数据值和上次接收到的消息数据值,只接收符合一定变化趋势的消息。比如:只接收数据值增长的消息或只接收数据值减少的值。
3.根据消息传输次数。比如可以指定只接收偶数次传输的数据而丢弃奇数次传输的数据。
此外,本发明还提供了一种通知机制使得任务可以确定消息发送和接受的状态。当消息发送成功后,接受消息的任务会立即被通知消息已到达,从而避免了查询消息发送和接受状态而带来的开销。用户可以给每个接收消息对象指定一种通知方式,当未被过滤的消息数据被传送到该接收消息对象时指定的通知机制将立即被引发,而被过滤的消息以及由于队列数据溢出而被丢弃的消息不会引发通知机制。本发明支持几种不同的通知方式,但一个接受消息对象只能使用一种通知方式。本发明支持如下几种通知方式:
1)回调程序。通知机制运行任务提供的回调程序,回调程序是由用户提供的在任务层上运行的一段程序,通过回调程序,用户可以让通知机制执行用户自定的操作。
2)设置标志。通知机制设置一个标志,其它任务可以通过检查该标志来获取消息传递状态。
3)激活任务。通知机制激活一个用户指定的任务。
下面通过一个在AXIOM CME555评估板上运行的实例说明本发明的工作过程。如图4所示,本实例中操作系统上运行着三个任务:任务A、任务B、任务C。其中任务A负责从外部传感器中接收数据并把数据传递给任务B和任务C,任务B负责记录这一系列数据中的最大值,而任务C负责记录这一系列数据在特定范围内的变化情况。本例中使用一个发送消息对象、一个非队列接收消息对象和一个队列接收消息对象进行消息传递。
任务A把从外部传感器中接收的数据发送给发送消息对象,发送消息对象把消息数据传递给非队列接收消息对象和队列接收消息对象。
非队列接收消息对象使用过滤算法过滤掉比旧的数据值小的数据,这样只有新的最大值出现的时候该数据才会被传送到非队列接收消息对象,一旦该非队列接收消息对象接收到数据就引发通知机制激活任务B,任务B一旦被激活就从非队列接收消息对象获取最新的数据最大值。
队列接收消息对象使用过滤算法只接收特定范围内的数据,一旦数据被发送到队列中就引发通知机制激活任务C,任务C一旦被激活就队列接收消息对象中获取数据。

Claims (8)

1、一种嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:该方法主要由发送消息对象、接收消息对象、过滤机制和通知机制四大模块组成,整个消息传递由消息发送部分和消息接收部分这两个主要过程组成:
1)、消息发送部分中发送消息的过程,具体步骤如下:
1.1)、任务指明发送消息对象和需要传送的消息数据;
1.2)、遍历与发送消息对象进行通信的接收消息对象,根据用户设定的过滤算法对消息进行过滤,未通过的消息被丢弃,通过过滤的消息进入下一步;
1.3)、如果是队列接收消息对象,消息数据将被存入该接收消息对象中消息队列的尾部,如果队列已满,该操作无法进行,消息将被丢弃并队列状态将被设置为“溢出”,如果是非队列接收消息对象,消息数据将被存贮到该接收消息对象的数据存储区;
1.4)、更新用于过滤机制的实时参数;
1.5)、遍历下一个接收消息对象,按步骤1.3)~1.5)进行;
1.6)、遍历与发送消息对象进行通信的接收消息对象,根据用户设定的通知机制执行通知内容;
2)、消息接收部分中接收消息的过程,具体步骤如下:
2.1)、任务指明接收消息对象以及存放消息数据的缓存;
2.2)、如果该接受消息对象为队列接受消息对象,则查询队列中是否存在消息,如果队列中无消息进行错误处理并退出,否则进入下一步;
2.3)、从接受消息对象中获取消息数据,如果为队列接受消息对象,则从队列的头部获取消息,并将其消息从队列中移出,如果此时的消息队列为空,设置队列状态为“队空”,如果队列状态为“溢出”,则返回状态表明获取该消息前已经发生过队列数据溢出;如果为非队列接受消息对象,则直接从其缓存中获得消息。
2、根据权利要求1所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:用户为每一个发送消息对象指定一个或多个接收消息对象,一个接受消息对象只能指定一个发送消息对象与之通信。
3、根据权利要求1所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:非队列消息中任务在接收消息时非队列接收消息对象不删除该消息,也就是说,非队列消息可以被任务多次读取,每当新的消息被非队列接收消息对象接收,新的消息数据将覆盖原有的消息数据,非队列消息有个用户配置的初始值,如果非队列接收消息对象在初始化后没有接收任何消息,任务将从该消息对象中获取该初始值。
4、根据权利要求1所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:所述的过滤算法是根据接收到的消息数据值进行过滤,消息数据的值在一定范围内的消息被接收,不在这一范围内的消息被丢弃。
5、根据权利要求1所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:所述的过滤算法是根据消息数据变化趋势进行过滤,比较新接收到的消息数据值和上次接收到的消息数据值,只接收符合一定变化趋势的消息。
6、根据权利要求1所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:所述的通知机制使得任务可以确定消息发送和接受的状态,当消息发送成功后,接受消息的任务会立即被通知消息已到达,用户给每个接收消息对象指定一种通知方式,当未被过滤的消息数据被传送到该接收消息对象时指定的通知机制将立即被引发,而被过滤的消息以及由于队列数据溢出而被丢弃的消息不会引发通知机制。
7、根据权利要求6所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:所述的通知方式采用回调程序,回调程序是由用户提供的在任务层上运行的一段程序,通过回调程序,用户可以让通知机制执行用户自定的操作。
8、根据权利要求6所述的嵌入式实时操作系统中基于消息对象的任务间通信方法,其特征在于:所述的通知方式采用设置标志,通知机制设置一个标志,其它任务可以通过检查该标志来获取消息传递状态。
CNB2005100607320A 2005-09-12 2005-09-12 嵌入式实时操作系统中基于消息对象的任务间通信方法 Expired - Fee Related CN100351799C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100607320A CN100351799C (zh) 2005-09-12 2005-09-12 嵌入式实时操作系统中基于消息对象的任务间通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100607320A CN100351799C (zh) 2005-09-12 2005-09-12 嵌入式实时操作系统中基于消息对象的任务间通信方法

Publications (2)

Publication Number Publication Date
CN1779646A CN1779646A (zh) 2006-05-31
CN100351799C true CN100351799C (zh) 2007-11-28

Family

ID=36769984

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100607320A Expired - Fee Related CN100351799C (zh) 2005-09-12 2005-09-12 嵌入式实时操作系统中基于消息对象的任务间通信方法

Country Status (1)

Country Link
CN (1) CN100351799C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101137079B (zh) * 2007-09-27 2011-10-05 腾讯科技(深圳)有限公司 一种基于移动终端融合网页浏览与即时通信的方法及设备
CN104506948B (zh) * 2014-12-25 2018-10-23 深圳市九洲电器有限公司 一种中间件与用户界面之间的消息传递方法和系统
CN110825536B (zh) * 2019-10-31 2022-08-12 深圳移航通信技术有限公司 嵌入式实时操作系统中任务间的通信方法及装置
CN111240828A (zh) * 2019-12-30 2020-06-05 苏州大学 一种嵌入式实时操作系统的同步通信系统和方法
CN112527522A (zh) * 2020-12-04 2021-03-19 中国航空工业集团公司成都飞机设计研究所 一种基于两级数据池的分区消息订阅、发布方法
CN115080258A (zh) * 2021-03-11 2022-09-20 华为技术有限公司 数据传输系统及相关设备
CN114979260B (zh) * 2022-05-12 2023-09-15 深圳市绿联科技股份有限公司 一种基于协议的通信方法、装置、电子设备和存储介质
CN115396387B (zh) * 2022-08-30 2024-04-12 上海航天电子通讯设备研究所 基于VxWorks消息队列的数据记录方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0592117A2 (en) * 1992-09-24 1994-04-13 AT&T Corp. Asynchronous inter-process communications arrangement
WO2002008897A1 (fr) * 2000-07-24 2002-01-31 Cp8_Technologies Protocole d'echange de messages entre applications implantees sur un systeme embarque, et systeme embarque correspondant
CN1595363A (zh) * 2003-05-09 2005-03-16 太阳微系统公司 在操作系统分区内的进程间通信

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0592117A2 (en) * 1992-09-24 1994-04-13 AT&T Corp. Asynchronous inter-process communications arrangement
WO2002008897A1 (fr) * 2000-07-24 2002-01-31 Cp8_Technologies Protocole d'echange de messages entre applications implantees sur un systeme embarque, et systeme embarque correspondant
CN1595363A (zh) * 2003-05-09 2005-03-16 太阳微系统公司 在操作系统分区内的进程间通信

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
实时控制系统中的多任务通信 张云生.计算机应用,第4期 1994 *
实时操作系统中任务间通信的一种方法 郭鹏,罗浩,廖明宏.哈尔滨商业大学学报(自然科学版),第19卷第5期 2003 *

Also Published As

Publication number Publication date
CN1779646A (zh) 2006-05-31

Similar Documents

Publication Publication Date Title
CN100351799C (zh) 嵌入式实时操作系统中基于消息对象的任务间通信方法
CN1230737C (zh) 一种设备数据轮询调度方法
CN1606301A (zh) 一种共享资源访问的调度控制方法及装置
CN1702623A (zh) 一种微内核嵌入式实时操作系统的任务级资源管理方法
CN100343826C (zh) 一种实现内存管理的方法
CN1512370A (zh) 基于构件的用户自定义事件机制
CN101035130A (zh) 一种基于浏览器/服务器结构的信息分配方法及系统
CN1208939C (zh) 一种网络呼叫处理方法
CN1852131A (zh) 一种定时器调度方法
CN1873613A (zh) 均衡负载的文件预装系统及方法
CN1941702A (zh) 一种发布博客文章的方法和系统
CN101043446A (zh) 数据转发处理的方法和装置
CN100341270C (zh) 基于消息的分布式平台的客户端反映任务进度的方法
CN1286277C (zh) 网络处理器中核心处理器与微引擎之间的通信方法
CN1222882C (zh) 一种任务间通信的实现方法
CN1129281C (zh) 利用缓存技术提高ip报文转发速度的方法
CN1780254A (zh) 网络处理器中使用缓冲区的方法
CN1503152A (zh) 处理多网络连接上的定序记录的设备和方法
CN1165841C (zh) 一种自动加载打印机驱动程序的方法
CN1924817A (zh) 一种数据结构传输方法
CN1913448A (zh) 一种网管对网元进行同步操作的方法及其系统
CN1592337A (zh) 实现短消息群发业务的方法及系统
CN1228726C (zh) 基于多通道存储设备的海量存储系统及其系统控制方法
CN1859251A (zh) 一种实现通信单元互连的方法
CN1206304A (zh) 在无线选择呼叫接收机中的消息管理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071128

Termination date: 20170912