CN108009015B - 实时嵌入式操作系统的事件处理方法 - Google Patents
实时嵌入式操作系统的事件处理方法 Download PDFInfo
- Publication number
- CN108009015B CN108009015B CN201810020581.3A CN201810020581A CN108009015B CN 108009015 B CN108009015 B CN 108009015B CN 201810020581 A CN201810020581 A CN 201810020581A CN 108009015 B CN108009015 B CN 108009015B
- Authority
- CN
- China
- Prior art keywords
- event
- group control
- control block
- waiting
- event group
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明是一种实时嵌入式操作系统的事件处理方法。包括创建事件组控制块、获取事件和发送事件三个基本操作。发送事件时,如果事件等待结点中的等待方式指定了消耗事件标志,则马上在事件组控制块的事件值中清除掉已获取到的事件,并且在下一个事件等待结点的处理中使用更新后的事件组控制块的事件值。将事件组控制块区分为源事件组控制块和目标事件组控制块。目标事件组控制块通过在源事件组控制块上关联一个事件聚集结点,从而对源事件组控制块进行聚集,以扩大任务能同时使用的事件组控制块数目。
Description
技术领域
本发明涉及一种实时嵌入式操作系统的事件处理方法,属于实时嵌入式系统领域。
背景技术
实时嵌入式操作系统在工业自动化、航空航天等很多领域广泛应用,包括时间正确和功能正确两个方面。在变电站自动化领域,实时嵌入式操作系统的应用范围从最初的测控装置、自动装置一步步进入到了实时性要求苛刻的保护装置,表明了实时嵌入式操作系统的使用是实时嵌入式系统领域的发展趋势。事件组是实时嵌入式操作系统提供的一种中断服务程序和任务,以及任务间同步的重要机制。很多应用任务的运行方式就是基于时间组机制的,并且所需要的事件种类很多。现有事件组机制的实现存在以下问题:
1、没有很好地体现事件消耗的特点。任务获取事件在等待方式中可以选择消耗标志,并且事件的消耗方式相对于非消耗方式使用得更加普遍。对于事件等待结点链表中的消耗标志,现有实时嵌入式操作系统的处理方法如下:
现有方法一:由发送事件操作将事件等待结点链表中的阻塞任务唤醒,以后在获取事件操作中进行事件消耗。
现有方法二:在发送事件操作中以非消耗事件的方式对事件等待结点链表中的阻塞任务进行唤醒,并记录事件消耗位,当事件等待结点链表处理完后再统一清除掉消耗事件位。
现有方法一存在一个时间窗口,即在获取事件操作中进行事件消耗之前,其它应用任务有可能获取到这些即将清除的事件位,而这些事件位在逻辑上
已经被清除了,只是因实现方式的问题而导致暂时没有清除,从而造成逻辑上的混乱。
现有方法二也会导致与任务执行时序有关的问题,比如前一个事件等待结点已经消耗掉的事件位后一个事件等待结点仍然会继续使用。
2、一个事件组一般只提供16个或32个事件位,而应用任务往往需要更多的事件位。一种常见的方法是由应用任务扩展事件位,但扩展事件位的同步与互斥的处理比较麻烦,很难达到实时嵌入式操作系统对事件组的实现效果。另一方面,现有事件组机制也无法实现一个任务同时等待多个事件组的需求,而这种需求对应用任务来讲往往更利于解决实际问题。
发明内容
为解决现有技术存在的不足,本发明提出了一种实时嵌入式操作系统的事件处理方法,其目的是精确处理事件的消耗,避免逻辑上已消耗掉事件而实际上并未消耗掉事件所带来的时序问题;应用任务能够同时等待多个事件组控制块,扩大任务能够管理的操作系统内核级事件的数量。
为了实现上述目的,本发明采用了以下技术方案。
一种实时嵌入式操作系统的事件处理方法,其特征是:包括创建事件组控制块、获取事件和发送事件三个基本操作;
获取事件操作的参数包括事件组控制块标识、指定的位、等待方式和等待延时;等待方式包括“与”和“或”两种逻辑关系以及获取事件时是否消耗事件;获取事件操作包括两种情况:
(1)事件组控制块对指定的位和等待方式能满足条件,根据指定的消耗事件标志,在事件组控制块的事件值中清除掉已获取到的事件;
(2)事件组控制块对指定的位和等待方式不能满足条件,根据指定的等待延时,生成一个事件等待结点,将其链接到事件组控制块,任务切换到阻塞状态;事件等待结点包括阻塞的任务标识、指定的位、等待方式、等待延时以及获取事件操作最终返回结果和返回状态的保存;以后任务唤醒并被调度运行时,根据事件等待结点中保存的返回结果和返回状态进行返回;
发送事件操作包括两个阶段:
(1)对事件组控制块中的事件值按指定的位进行设置;
(2)遍历事件等待结点链表,针对事件组控制块中的事件值能满足指定的位和等待方式的事件等待结点,完成以下工作:
1)唤醒相应的阻塞任务;
2)在事件等待结点中填写返回结果和返回状态;
3)根据事件等待结点中的等待方式指定的消耗事件标志,马上在事件组控制块的事件值中清除掉已获取到的事件,并且在下一个事件等待结点的处理中使用更新后的事件组控制块的事件值。
进一步地,将事件组控制块区分为源事件组控制块和目标事件组控制块;目标事件组控制块通过在源事件组控制块上关联一个事件聚集结点,从而对源事件组控制块进行聚集,以扩大任务能同时使用的事件组控制块数目;事件聚集结点包括源事件组控制块指定的位,源事件组控制块的等待方式,目标事件组控制块标识以及目标事件组控制块指定的位;源事件组控制块的等待方式包括“与”和“或”两种逻辑关系;
当目标事件组控制块关联源事件组控制块或者向源事件组控制块发送事件时,如果源事件组控制块中的事件值能满足关联的事件聚集结点中源事件组控制块指定的位和源事件组控制块的等待方式,则对事件聚集结点中指定的目标事件组控制块设置指定的位,以表示源事件组控制块中的事件就绪了;如果不能满足,则不处理。
一个目标事件组控制块对应一个或多个源事件组控制块,一个源事件组控制块只对应一个目标事件组控制块。
源事件组控制块先处理事件等待结点链表,再处理事件聚集结点。
本发明的积极效果在于:当一个事件等待结点中的任务以消耗方式成功获取到事件后,该事件等待结点后续的任务将看不到该任务已消耗掉的事件,因此事件消耗时机的选择更加准确,能够避免逻辑上已消耗掉事件而实际上并未消耗掉事件所带来的时序问题。应用任务能够同时等待多个事件组控制块,扩大了任务能够同时管理的操作系统内核级事件的数量,并且每个事件组控制块可以使用不同的等待方式,非常灵活。
附图说明
图1是事件组控制块、事件等待结点和事件聚集结点的结构示意图。
图2是获取事件操作的流程示意图。
图3是发送事件操作的流程示意图。
具体实施方式
下面结合附图和具体实施例进一步说明本发明。
本发明包括创建事件组控制块、获取事件和发送事件三个基本操作。
先介绍主要的数据结构,如图1所示:
1、事件等待结点包括阻塞的任务标识、指定的位、等待方式、等待延时以及获取事件操作最终返回结果和返回状态的保存。
等待方式包括“与”和“或”两种逻辑关系以及获取事件时是否消耗事件。“与”逻辑关系表明指定的位全部为1才满足条件,“或”逻辑关系表明指定的位有一个为1即可满足条件。等待延时是指当获取事件操作不能满足条件时等待多长时间;如果不需等待,则不生成事件等待结点。
2、事件聚集结点包括源事件组控制块指定的位,源事件组控制块的等待方式,目标事件组控制块标识以及目标事件组控制块指定的位。
源事件组控制块的等待方式包括“与”和“或”两种逻辑关系。
3、事件组控制块包括事件值、事件聚集结点指针和事件等待结点链表首指针等。
获取事件操作的参数包括事件组控制块标识、指定的位、等待方式和等待延时。如图2所示,获取事件操作包括两种情况:
1、事件组控制块对指定的位和等待方式能满足条件,获取事件成功。如果指定了消耗事件标志,则在事件组控制块的事件值中清除掉已获取到的事件。
2、事件组控制块对指定的位和等待方式不能满足条件,如果指定了等待延时,则生成一个事件等待结点,将其链接到事件组控制块,任务切换到阻塞状态。以后当发送事件导致获取事件操作的条件满足或者超时时,任务唤醒并被调度运行,根据事件等待结点中保存的返回结果和返回状态进行返回。
如图3所示,发送事件操作包括两个阶段:
1、对事件组控制块中的事件值按指定的位进行设置。
2、遍历事件等待结点链表。如果事件组控制块中的事件值能满足事件等待结点中指定的位和等待方式,则完成以下工作:
(1)唤醒相应的阻塞任务;
(2)在事件等待结点中填写返回结果和返回状态;
(3)如果事件等待结点中的等待方式指定了消耗事件标志,则马上在事件组控制块的事件值中清除掉已获取到的事件,并且在下一个事件等待结点的处理中使用更新后的事件组控制块的事件值。
为了扩大任务能同时使用的事件组控制块数目,将事件组控制块区分为源事件组控制块和目标事件组控制块。目标事件组控制块通过在源事件组控制块上关联一个事件聚集结点,从而对源事件组控制块进行聚集。
当目标事件组控制块关联源事件组控制块或者向源事件组控制块发送事件时,如果源事件组控制块中的事件值能满足关联的事件聚集结点中源事件组控制块指定的位和源事件组控制块的等待方式,则对事件聚集结点中指定的目标事件组控制块设置指定的位,以表示源事件组控制块中的事件就绪了。此时应用任务应进一步调用获取事件操作来获取源事件组控制块中的事件值,并进行相应的事件处理。
一个目标事件组控制块对应一个或多个源事件组控制块,一个源事件组控制块只对应一个目标事件组控制块。
源事件组控制块先处理事件等待结点链表,再处理事件聚集结点。
引入事件组控制块聚集机制后,虽然一个应用任务还是在一个目标事件组控制块上悬挂等待事件,但是目标事件组控制块上的一个事件位对应一个源事件组控制块上的多个事件位,从而使得应用任务能管理的事件数量倍增,并且每个源事件组控制块的等待方式可以不同。
以下通过举例说明在消耗事件时本发明的方法相对于现有方法的改进。
有4个任务Task1、Task2、Task3和Task4,Task4的优先级最高,时序及运行情况如下:
1、在时间点T0,创建事件组控制块1,事件值的初始值全为0。
2、在时间点T1,任务Task1调用获取事件操作,指定的位为0x06,等待方式为“与”且消耗事件,不满足条件时无限等待。因为此时事件值全为0,不能满足条件,所以任务Task1阻塞。
3、在时间点T2,任务Task2调用获取事件操作,指定的位为0x03,等待方式为“与”且消耗事件,不满足条件时无限等待。因为此时事件值全为0,不能满足条件,所以任务Task2阻塞,且排在Task1之后。
4、在时间点T3,任务Task3调用发送事件操作,将事件位0、1和2全置为1。
运用现有方法一,任务Task1和Task2都成功获取到事件,都就绪,事件值为0x07;
运用现有方法二,任务Task1和Task2都成功获取到事件,都就绪,事件全部被消耗,因此事件值为0x00;
运用本发明的方法,任务Task1成功获取到事件,就绪,事件位2和1被消耗,事件值变为0x01,Task2不能满足条件,仍然处于事件等待结点链表中。
5、在时间点T4,任务Task4抢占任务Task1和Task2,调用获取事件操作,指定的位为0x04,且消耗事件,不满足条件时无限等待。
运用现有方法一,任务Task4能获取到事件,消耗后事件值为0x03;
运用现有方法二,任务Task4不能获取到事件,进入阻塞状态;
运用本发明的方法,任务Task4不能获取到事件,进入阻塞状态。
在本例中,现有方法一存在一个时间窗口,使得已经明确要消耗掉的事件又被任务Task4成功获取了,这表明现有方法一在特定条件下存在逻辑问题。另外,在发送事件后任务Task1已经将事件位1消耗掉了,这就应该破坏了任务Task2成功获取事件的要求,然而现有方法一和现有方法二都认为任务Task2能成功获取到事件,从而产生了逻辑问题。在各种情况下,本发明的方法其运行效果符合预期,充分体现了事件的消耗性特点。
Claims (4)
1.一种实时嵌入式操作系统的事件处理方法,其特征是:包括创建事件组控制块、获取事件和发送事件三个基本操作;
获取事件操作的参数包括事件组控制块标识、指定的位、等待方式和等待延时;等待方式包括“与”和“或”两种逻辑关系以及获取事件时是否消耗事件;获取事件操作包括两种情况:
(1)事件组控制块对指定的位和等待方式能满足条件,根据指定的消耗事件标志,在事件组控制块的事件值中清除掉已获取到的事件;
(2)事件组控制块对指定的位和等待方式不能满足条件,根据指定的等待延时,生成一个事件等待结点,将其链接到事件组控制块,任务切换到阻
塞状态;事件等待结点包括阻塞的任务标识、指定的位、等待方式、等待延时
以及获取事件操作最终返回结果和返回状态的保存;以后任务唤醒并被调度运行时,根据事件等待结点中保存的返回结果和返回状态进行返回;
发送事件操作包括两个阶段:
(1)对事件组控制块中的事件值按指定的位进行设置;
(2)遍历事件等待结点链表,如果事件组控制块中的事件值能满足事件等待结点中指定的位和等待方式,则完成以下工作:
1)唤醒相应的阻塞任务;
2)在事件等待结点中填写返回结果和返回状态;
3)根据事件等待结点中的等待方式指定的消耗事件标志,马上在事件组控制块的事件值中清除掉已获取到的事件,并且在下一个事件等待结点的处理中使用更新后的事件组控制块的事件值。
2.如权利要求1所述的一种实时嵌入式操作系统的事件处理方法,其特
征是将事件组控制块区分为源事件组控制块和目标事件组控制块;目标事件组控制块通过在源事件组控制块上关联一个事件聚集结点,从而对源事件组控制块进行聚集,以扩大任务能同时使用的事件组控制块数目;事件聚集结点包括源事件组控制块指定的位、源事件组控制块的等待方式、目标事件组控制块标识以及目标事件组控制块指定的位;源事件组控制块的等待方式包括“与”和“或”两种逻辑关系;
当目标事件组控制块关联源事件组控制块或者向源事件组控制块发送事件时,如果源事件组控制块中的事件值能满足关联的事件聚集结点中源事件组控制块指定的位和源事件组控制块的等待方式,则对事件聚集结点中指定的目标事件组控制块设置指定的位,以表示源事件组控制块中的事件就绪了;如果不能满足,则不处理。
3.如权利要求2所述的一种实时嵌入式操作系统的事件处理方法,其特征是一个目标事件组控制块对应一个或多个源事件组控制块,一个源事件组控制块只对应一个目标事件组控制块。
4.如权利要求2或3所述的一种实时嵌入式操作系统的事件处理方法,
其特征是源事件组控制块先处理事件等待结点链表,再处理事件聚集结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810020581.3A CN108009015B (zh) | 2018-01-10 | 2018-01-10 | 实时嵌入式操作系统的事件处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810020581.3A CN108009015B (zh) | 2018-01-10 | 2018-01-10 | 实时嵌入式操作系统的事件处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009015A CN108009015A (zh) | 2018-05-08 |
CN108009015B true CN108009015B (zh) | 2021-03-12 |
Family
ID=62050486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810020581.3A Active CN108009015B (zh) | 2018-01-10 | 2018-01-10 | 实时嵌入式操作系统的事件处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009015B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290588B (zh) * | 2008-03-07 | 2010-06-16 | 重庆邮电大学 | 一种微嵌入式实时任务调度器及调度方法 |
CN101751289B (zh) * | 2008-12-19 | 2013-07-17 | 深圳市民德电子科技有限公司 | 一种嵌入式实时操作系统的混合调度方法 |
US9104472B2 (en) * | 2013-02-04 | 2015-08-11 | Freescale Semiconductor, Inc. | Write transaction interpretation for interrupt assertion |
JP6135430B2 (ja) * | 2013-09-27 | 2017-05-31 | 富士通株式会社 | 情報処理装置、方法、プログラム、及びシステム |
CN103970603B (zh) * | 2014-05-21 | 2017-05-24 | 哈尔滨工程大学 | 一种基于多级反馈队列的事件注入引擎的任务调度方法 |
CN104102195B (zh) * | 2014-07-03 | 2016-08-17 | 西安交通大学 | 一种存在通信延时的离散事件系统分布式监督控制方法 |
CN104224219B (zh) * | 2014-08-11 | 2017-05-03 | 沈阳东软医疗系统有限公司 | 一种符合对的判定方法和设备 |
CN105204952B (zh) * | 2015-08-21 | 2018-03-09 | 北京控制工程研究所 | 一种多核操作系统容错管理方法 |
-
2018
- 2018-01-10 CN CN201810020581.3A patent/CN108009015B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108009015A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101258469B (zh) | 信息处理设备 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN101859260B (zh) | 用于操作系统中的定时器管理装置和管理方法 | |
US8713573B2 (en) | Synchronization scheduling apparatus and method in real-time multi-core system | |
US9104500B1 (en) | Lock-free job scheduler for multi-processor systems | |
CN101620527A (zh) | 图形处理中管理活动线程依赖关系 | |
US10861125B2 (en) | Preparing and executing command streams in data processing systems | |
EP2593862A1 (en) | Out-of-order command execution in a multimedia processor | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN102096603A (zh) | MapReduce系统中的作业分解控制方法及调度节点设备 | |
CN106886450A (zh) | 任务调度方法和系统 | |
CN102073572A (zh) | 用于多核处理器的监控方法及系统 | |
CN102270156A (zh) | 一种实时嵌入式系统定时器管理方法 | |
CN111240935B (zh) | 一种自动化智能运维系统及运维方法 | |
CN105573827A (zh) | 一种多机并行处理方法及装置 | |
WO2020015215A1 (zh) | 工作流引擎的管理方法及装置、存储介质、计算机设备 | |
CN104915254A (zh) | 一种嵌入式系统的多任务调度方法及系统 | |
CN103870330A (zh) | 一种基于dsp的任务调度方法和装置 | |
CN108009015B (zh) | 实时嵌入式操作系统的事件处理方法 | |
CN113010276A (zh) | 一种任务调度方法、装置、终端设备及存储介质 | |
JP2012516079A (ja) | リアルタイム分散型システムの同期方法およびデバイス | |
US20220300322A1 (en) | Cascading of Graph Streaming Processors | |
JP2002157279A (ja) | データ収集装置 | |
CN114518941A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
CN103106111B (zh) | 多任务操作系统中任务优先级反转的检测系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |