CN105068877A - 一种多优先级任务间数据一致性传递方法 - Google Patents
一种多优先级任务间数据一致性传递方法 Download PDFInfo
- Publication number
- CN105068877A CN105068877A CN201510411269.3A CN201510411269A CN105068877A CN 105068877 A CN105068877 A CN 105068877A CN 201510411269 A CN201510411269 A CN 201510411269A CN 105068877 A CN105068877 A CN 105068877A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- buffer area
- output
- write
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种多优先级任务间数据一致性传递方法,通过给每个任务设定一定数量的输出缓存区,保证在最极限情况下,该任务仍然可以有一个缓存区用于写入输出数据;每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,在每个任务的起始,寻找其它任务当前标记为最新数据一致性输出状态的缓存区并从该缓存区中读取数据;同时从该缓存区中读取数据用于当前任务写入该周期产生的输出数据;在执行过程中保持其连贯性,从而保证多优先级任务间数据一致性的传递。
Description
技术领域
本发明涉及一种多优先级任务间数据一致性传递方法。
背景技术
不同任务间“数据一致性”数据是指其它任务用某一任务的数据时,所用数据都是该任务在同一个执行周期内产生的数据,这样的数据被定义为任务间具有“数据一致性”的数据。
一个处理器内有不同优先等级的任务,任务间有数据交换,在多优先级任务运行场合,经常会发生高优先级任务打断低优先级任务优先执行的情况,当这两个任务间有数据传递时有可能发生以下情形:
(1)假设低优先级任务向高优先级任务传递数列a[n],当高优先级任务打断低优先级任务时,数据a[0]至a[k]已经被当前执行周期的低优先级任务更新,而因为执行被打断,a[k]至a[n]的数据未被更新,也就是说它们存储的仍是上一运行周期的数据;高优先级任务获得执行权后读取低优先级传递的数列a[n],这时这个数列中,前k+1个数据是当前周期已更新的数据,后面n-k个数据是上一个运行周期更新的数据;如果数列a[n]的数据有关联的意义,则我们认为这时高优先级任务从低优先级任务读取的数列a[n]不具备数据一致性特性。
(2)同样,假设高优先级任务向低优先级任务传递数列b[n],在低优先级任务被高优先级任务打断前,计算所用的数据是高优先级任务前一个周期所产生的数据;打断后低优先级任务继续执行时,所用的数据是刚执行完成的高优先级任务所产生的数据;即在同一个低优先级任务的执行周期内,所用的高优先级任务传递的数据并不是高优先级任务在同一个执行周期内产生的数据,这样的数据我们认为对低优先级任务而言也不具备数据一致性特性。
以上所述的多优先级任务间数据传递的不一致性,会给对数据有严格关联性要求的处理带来的不可预测的问题。
发明内容
本发明的目的是提供一种多优先级任务间数据一致性传递方法,保证多优先级任务间数据传递的一致性。
为了实现以上目的,本发明所采用的技术方案是:一种多优先级任务间数据一致性传递方法,每个任务设定数量为N的输出缓存区,每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,每个任务执行以下每个步骤的过程均不被其他任务所中断:
(1)在每个任务起始,寻找其它任务当前标记为最新数据一致性输出状态的缓存区,置该任务的读取标记,当前任务从该缓存区中读取一致性数据;
(2)当任务读取完数据,清所被读取缓存区的读取标记;
(3)在每个任务起始,寻找该任务空闲状态的数据缓存区,置为写入状态,用于当前任务写入该周期产生的数据一致性输出数据;
(4)当任务完成数据一致性输出数据的写入工作后,标记最新写入的数据一致性数据的缓存区为最新数据一致性输出缓存区,并清旧的最新数据一致性输出标记。
输出缓存区N的取值范围为:N≥Tlow-prio+2,其中,Tlow-prio是指运行优先级比该任务低的有数据一致性传递需求的任务数量。
所述输出缓存区的空闲状态是指缓存区即不为最新数据一致性输出状态,也不为写入或读取状态;最新数据一致性输出是指该缓存区存放了该任务的最新数据一致性输出数据,可以被其它任务读取;写入状态是指该缓存区为当前任务在当前周期要写入数据的缓存区;所述读取状态是指其它任务被该任务读取的数据缓存区。
本发明多优先级任务间数据一致性传递方法通过给每个任务设定一定数量的输出缓存区,保证在最极限情况下,该任务仍然可以有一个缓存区用于写入输出数据;每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,在每个任务的起始,寻找其它任务当前标记为最新数据一致性输出状态的缓存区并从该缓存区中读取数据;同时从该缓存区中读取数据用于当前任务写入该周期产生的输出数据;在执行过程中保持其连贯性,从而保证多优先级任务间数据一致性的传递。
附图说明
图1是多优先级任务间数据一致性传递控制方法实施例的示意图。
具体实施方式
下面结合附图及具体的实施例对本发明进行进一步介绍。
本发明通过一种合理的任务间数据传递的机制实现多优先级任务间数据一致性的传递,这里的任务间数据传递的机制,包括内存区的设置和内存区的管理两部分。
内存区设置有如下特性:每个任务需要设置一定数量的输出缓存区,多缓存区的设置用于保证在最极限情况下,该任务仍然可以有一个缓存区用于写入输出数据;每个任务输出缓存区数量N决定于在执行的程序中有多少个比它优先级低的任务(Tlow-prio)从这个任务中读取数据。每个任务的输出缓存区数量(N)的设置原则如下:
N≥Tlow-prio+2
其中,Tlow-prio是指运行优先级比该任务低的有数据一致性传递需求的任务数量,即N大于等于从该任务读取数据的且优先级比它低的任务数量再加2个缓存区;
内存区管理有如下特性:每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,各种状态有以下具体解释:
本发明的多优先级任务间数据一致性传递方法,每个任务设定数量为N的输出缓存区,每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,每个任务执行以下每个步骤的过程均不被其他任务所中断:
(1)在每个任务起始,读取其它任务的一致性输出数据前,锁定其它任务当前标记为最新数据一致性输出状态的缓存区,标记为读取状态,当前任务从该缓存区中读取一致性数据;
(2)当任务完成对读取缓存区的数据读取后,释放读取标记;
(3)在每个任务起始,产生该任务具有数据一致性的数据前,寻找该任务空闲状态的数据缓存区,置为写入状态,用于当前任务写入该周期产生的数据一致性输出数据;
(4)当任务完成数据一致性输出数据的写入工作后,清写入标记,标记最新写入的数据一致性数据的缓存区为最新数据一致性输出缓存区,清旧的最新数据一致性输出标记。
以上每一步骤的执行,需要有完整的连贯性,执行过程不被其它任务打断。
以如图1所示的传递过程为例进行说明:假设在程序中有3个不同优先级的任务T1,T2,T3(优先级从高到低),这3个任务两两任务间均有需要数据一致性特性的数据传递,按任务开辟的输出缓存区数量设置原则,T1,T2,T3任务输出的缓存区数量可分别为(按最少数量设计):
T1:N=2+2=4;T2:N=1+2=3;T3:N=0+2=2;
若T1,T2,T3的运行关系如图1所示,T1任务周期为T0,T3在第1个T0启动,T2在第2个T0启动,T3在运行过程中被T1,T2中断。假设任务在起始时开始读写数据,任务结束时完成数据读写,那么数据一致性传递过程按如下步骤执行:
点,T1任务开始执行:
T1锁定其它任务,即T2,T3任务的最新数据一致性输出缓存区,标记为读取状态;T1寻找空闲缓存区,标记为写入状态,用于该运行周期的数据写入。
点,T1任务执行完成,T3任务开始执行:
T1任务释放对T2,T3任务的读取标记;T1任务标记缓存区2为最新数据一致性输出缓存区,清缓存区1的最新数据一致性输出缓存区标记;
T3任务锁定T1,T2任务的最新数据一致性输出缓存区,标记读取状态;T3任务寻找空闲缓存区,标记为写入状态,用于T3任务的数据写入。
点,T1任务打断T3任务优先执行,T3任务被挂起:
与点类似,T1锁定T2,T3任务当前最新数据一致性输出缓存区,标记为读取状态;同时寻找本任务的空闲缓存区,标记为写入状态;这时,T2任务的最新数据一致性输出缓存区同时被T1,T3任务锁定;T3任务被挂起,保持点状态。
点,T1任务执行完成,T2任务开始执行,T3任务依然被挂起:
T1任务释放对T2,T3任务的读取标记;T1任务标记缓存区1为最新数据一致性输出缓存区,清旧数据一致性缓存区标记;
T2任务锁定T1,T3任务的最新数据一致性输出缓存区,标记读取状态;T2任务寻找空闲缓存区,标记为写入状态;
T3任务被挂起,保持点状态。
点,T2任务执行完成,T3任务继续执行:
T2任务释放对T1,T3任务的读取标记;T2任务标记缓存区2为最新数据一致性输出缓存区,清旧数据一致性缓存区标记;
T3任务保持点状态。
点,T3任务执行完成:
T3任务释放对T1,T2任务的读取标记;T3任务标记缓存区2为最新数据一致性输出缓存区,清旧数据一致性缓存区标记。
点,T1任务开始执行:
与点类似,T1锁定T2,T3任务当前最新数据一致性输出缓存区,标记为读取状态;同时寻找本任务的空闲缓存区,标记为写入状态。
至此即完成了多优先级任务间数据一致性的传递过程。
以上实施例仅用于帮助理解本发明的核心思想,不能以此限制本发明,对于本领域的技术人员,凡是依据本发明的思想,对本发明进行修改或者等同替换,在具体实施方式及应用范围上所做的任何改动,均应包含在本发明的保护范围之内。
Claims (3)
1.一种多优先级任务间数据一致性传递方法,其特征在于:每个任务设定数量为N的输出缓存区,每个输出缓存区有空闲、最新数据一致性输出、写入及读取4种状态,每个任务执行以下每个步骤的过程均不被其他任务所中断:
(1)在每个任务起始,寻找其它任务当前标记为最新数据一致性输出状态的缓存区,置该任务的读取标记,当前任务从该缓存区中读取一致性数据;
(2)当任务读取完数据,清所被读取缓存区的读取标记;
(3)在每个任务起始,寻找该任务空闲状态的数据缓存区,置为写入状态,用于当前任务写入该周期产生的数据一致性输出数据;
(4)当任务完成数据一致性输出数据的写入工作后,标记最新写入的数据一致性数据的缓存区为最新数据一致性输出缓存区,并清旧的最新数据一致性输出标记。
2.根据权利要求1所述的多优先级任务间数据一致性传递方法,其特征在于:输出缓存区N的取值范围为:N≥Tlow-prio+2,其中,Tlow-prio是指运行优先级比该任务低的有数据一致性传递需求的任务数量。
3.根据权利要求1或2所述的多优先级任务间数据一致性传递方法,其特征在于:所述输出缓存区的空闲状态是指缓存区即不为最新数据一致性输出状态,也不为写入或读取状态;最新数据一致性输出是指该缓存区存放了该任务的最新数据一致性输出数据,可以被其它任务读取;写入状态是指该缓存区为当前任务在当前周期要写入数据的缓存区;所述读取状态是指其它任务被该任务读取的数据缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510411269.3A CN105068877B (zh) | 2015-07-14 | 2015-07-14 | 一种多优先级任务间数据一致性传递方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510411269.3A CN105068877B (zh) | 2015-07-14 | 2015-07-14 | 一种多优先级任务间数据一致性传递方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068877A true CN105068877A (zh) | 2015-11-18 |
CN105068877B CN105068877B (zh) | 2018-07-17 |
Family
ID=54498254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510411269.3A Active CN105068877B (zh) | 2015-07-14 | 2015-07-14 | 一种多优先级任务间数据一致性传递方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068877B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912478A (zh) * | 2016-04-06 | 2016-08-31 | 中国航空无线电电子研究所 | 基于双缓存机制的实时系统多任务数据共享方法 |
CN109933413A (zh) * | 2017-12-15 | 2019-06-25 | 北京嘀嘀无限科技发展有限公司 | 业务实现方法及装置、电子设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004742A (zh) * | 2006-01-17 | 2007-07-25 | 中兴通讯股份有限公司 | 嵌入式环境下内存数据库的一致性保护方法 |
US20100332696A1 (en) * | 2009-06-30 | 2010-12-30 | Muppirala Kishore Kumar | Managing I/O Request in Storage System |
CN102929832A (zh) * | 2012-09-24 | 2013-02-13 | 杭州中天微系统有限公司 | 基于非写分配的高速缓存一致性的多核处理器数据传输系统 |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
CN103297268A (zh) * | 2013-05-13 | 2013-09-11 | 北京邮电大学 | 基于p2p技术的分布式数据一致性维护系统和方法 |
-
2015
- 2015-07-14 CN CN201510411269.3A patent/CN105068877B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004742A (zh) * | 2006-01-17 | 2007-07-25 | 中兴通讯股份有限公司 | 嵌入式环境下内存数据库的一致性保护方法 |
US20100332696A1 (en) * | 2009-06-30 | 2010-12-30 | Muppirala Kishore Kumar | Managing I/O Request in Storage System |
CN102929832A (zh) * | 2012-09-24 | 2013-02-13 | 杭州中天微系统有限公司 | 基于非写分配的高速缓存一致性的多核处理器数据传输系统 |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
CN103297268A (zh) * | 2013-05-13 | 2013-09-11 | 北京邮电大学 | 基于p2p技术的分布式数据一致性维护系统和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912478A (zh) * | 2016-04-06 | 2016-08-31 | 中国航空无线电电子研究所 | 基于双缓存机制的实时系统多任务数据共享方法 |
CN105912478B (zh) * | 2016-04-06 | 2018-11-27 | 中国航空无线电电子研究所 | 基于双缓存机制的实时系统多任务数据共享方法 |
CN109933413A (zh) * | 2017-12-15 | 2019-06-25 | 北京嘀嘀无限科技发展有限公司 | 业务实现方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105068877B (zh) | 2018-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109787777B (zh) | 一种网卡模式切换方法、装置、电子设备及存储介质 | |
CN101320360B (zh) | 用于并行集成电路结构的消息排队系统和相关操作方法 | |
CN111124277B (zh) | 一种深度学习数据集缓存方法、系统、终端及存储介质 | |
CN104360967B (zh) | 存储器系统、主机控制器以及dma的控制方法 | |
CN104063186A (zh) | 一种电子设备的数据访问方法 | |
CN101178701B (zh) | 一种多处理器间通信的方法及系统 | |
CN103370691A (zh) | 管理缓冲器溢出状况 | |
JP2003044296A5 (zh) | ||
CN103810026A (zh) | 一种适用于实时系统周期任务的混合调度方法 | |
CN101477386B (zh) | 一种定时器实现方法和装置 | |
US10929332B2 (en) | USB transmission device and transmission method | |
CN102970202A (zh) | 基于抢占式策略的1553b总线通信方法 | |
US7945745B2 (en) | Methods and systems for exchanging data | |
CN103346902A (zh) | 数据采集调度的方法及系统 | |
CN113316772A (zh) | 用于启用具有指示符的部分数据传输的系统、方法和装置 | |
CN104985939A (zh) | 一种激光打标机控制方法和激光打标机 | |
CN105068877A (zh) | 一种多优先级任务间数据一致性传递方法 | |
CN102597972B (zh) | 虚拟计算机系统、区域管理方法 | |
CN104731651A (zh) | 电力自动化任务调度及触发机制的方法、系统和处理器 | |
CN112363812B (zh) | 基于任务分类的数据库连接队列管理方法及存储介质 | |
CN107832121B (zh) | 一种应用于分布式串行长事务的并发控制方法 | |
CN101620415B (zh) | 半导体工艺中光刻机台的控制方法及装置 | |
CN101625666B (zh) | 一种数据拷贝、参数信息写入的方法和系统 | |
CN106598708B (zh) | 一种时间触发的嵌入式任务通讯装置与方法 | |
US7873761B2 (en) | Data pipeline management system and method for using the system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |