CN112068945B - 一种优化嵌入式系统中优先级反转方法 - Google Patents

一种优化嵌入式系统中优先级反转方法 Download PDF

Info

Publication number
CN112068945B
CN112068945B CN202010974392.7A CN202010974392A CN112068945B CN 112068945 B CN112068945 B CN 112068945B CN 202010974392 A CN202010974392 A CN 202010974392A CN 112068945 B CN112068945 B CN 112068945B
Authority
CN
China
Prior art keywords
register
external
priority
pair
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.)
Active
Application number
CN202010974392.7A
Other languages
English (en)
Other versions
CN112068945A (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.)
Xiamen Shituo Yuneng Technology Co ltd
Original Assignee
Xiamen Shituo Yuneng Technology Co ltd
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 Xiamen Shituo Yuneng Technology Co ltd filed Critical Xiamen Shituo Yuneng Technology Co ltd
Priority to CN202010974392.7A priority Critical patent/CN112068945B/zh
Publication of CN112068945A publication Critical patent/CN112068945A/zh
Application granted granted Critical
Publication of CN112068945B publication Critical patent/CN112068945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及计算机信息处理技术领域,特别涉及一种优化嵌入式系统中优先级反转方法,所述优化嵌入式系统中优先级反转方法为将被访问时带有锁定功能的对外寄存器更改为可重复访问的对外寄存器,以使所述对外寄存器可以同时被多个任务访问;且所述对外寄存器仅在资源更新的特定时段会被锁定。采用本发明提供的优化嵌入式系统中优先级反转方法,可以有效避免因多核系统存在的各个内核的优先级机制不同导致无法确认最高优先级的情况,同时避免了因更新任务导致的数据资源长期被霸占使得其他任务无法快速运行下去的弊端,具有广泛的市场应用前景。

Description

一种优化嵌入式系统中优先级反转方法
技术领域
本发明涉及计算机信息处理技术领域,特别涉及一种优化嵌入式系统中优先级反转方法。
背景技术
在多任务并发的环境里,从概念上看,是有多个任务在同时执行,但是,事实上,任何时刻只能有一个任务处于执行状态,因此,操作系统需要识别哪些任务需要优先执行、哪些任务暂时等待,这也是本领域中经常出现的有关任务调度的问题。
在嵌入式系统中,为防止程序重复访问,关键变量资源等都带有锁定功能,也就是说,当有任务访问该变量时,该变量不允许其他任务访问。低优先级任务可能会占据变量资源,使得高优先级任务进入持续等待现象,这种现象叫做优先级反转,也因此造成许多高优先级任务被许多较低有相机任务阻塞,实时性难以得到保障;
例如:如图1所示,存在任务A,B,C,其中A任务优先级最高,B任务次高,C任务最低。由于C任务在执行时,锁定了资源,使得其他任务不得调度此任务。A任务虽然打断C任务,但是由于资源被锁定,只能退出任务。使得B任务优于A任务被执行,直到C任务调度后,才执行A任务。虽然A任务的优先级比较高,但是在本例中,其优先级程度反而不如B任务和C任务。
申请号为201710501881.9的《任务的优先级处理方法和处理装置》公开了一种任务的优先级处理方法和处理装置,其公开日为2019年1月3日,该任务的优先级处理方法中,所述任务包括第一任务、第二任务和第三任务,所述的第一任务的优先级高于所述第二任务和所述第三任务;所述方法包括:当所述第一任务由于访问第一临界区失败而被阻塞时,提升与所述第一任务共享第一临界区且正在访问所述第一临界区的第二任务的优先级;判断是否存在与第二任务共享第二临界区且正在访问所述第二临界区的第三任务;当存在所述第三任务时,提升所述第三任务的优先级。本申请实施例提供的方案避免了优先级低的第三任务拖延第二任务的执行,从而避免优先级高的第一任务延迟执行造成的优先级反转;
但是,事实上,在多核系统中,由于运算内核不止一个,各内核的优先级机制不同,某一运算内核中较低优先级任务的优先级并不能确定是所有内核中允许的最高优先级,由此导致的优先级反转问题,并未得到很好的解决。
发明内容
为解决上述背景技术中提及的多任务处理中存在优先级反转的问题,本发明提供一种优化嵌入式系统中优先级反转方法,将被访问时带有锁定功能的对外寄存器更改为可重复访问的对外寄存器,以使所述对外寄存器可以同时被多个任务访问;
且所述对外寄存器仅在更新的特定时段会被锁定。
在上述方案的基础上,进一步地,所述对外寄存器上设有影子寄存器,所述影子寄存器的内容为当前所述对外寄存器的值或者更新后所述对外寄存器的值。
在上述方案的基础上,进一步地,所述更新任务对所述对外寄存器更新的特定时段,依据对外寄存器的访问情况设定。
在上述方案的基础上,进一步地,当所述对外寄存器未被其他更高优先级的任务占用时,所述对外寄存器锁定,并直接对对外寄存器的数据进行更新。
在上述方案的基础上,进一步地,当所述对外寄存器被其他优先级高于所述更新任务的任务占用时,所述更新任务则锁定所述影子寄存器,并对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内。
在上述方案的基础上,进一步地,当更新任务访问所述对外寄存器时,存在其他更高优先级的任务需要访问所述对外寄存器时,所述更新任务被中断,并改为访问所述对外寄存器的影子寄存器,以使更高优先级的任务不会因更新任务锁定对外寄存器而无法访问,同时对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内。
在上述方案的基础上,进一步地,当访问的任务需要改写寄存器时,以绝对变量形式存储于其他单元;所述绝对变量在更新任务对影子寄存器或者对外寄存器进行更新时会对更新的值进行修订。
在上述方案的基础上,进一步地,有且只有1个用于更新所述对外寄存器内资源的第一函数。
在上述方案的基础上,进一步地,存在1个或多个用于针对所述第一函数的值进行修订的第二函数,所述第二函数无法对第一函数进行修改。
在上述方案的基础上,进一步地,所述特定时段的时间周期少于5-6个指令周期。
在上述方案的基础上,进一步地,所述系统为单核或者多核系统。
本发明提供的优化嵌入式系统中优先级反转方法与现有的技术相比,具有以下的效果:
可以有效避免多核系统中,由于运算内核不止一个,各内核的优先级机制不同,某一内核中的较低优先级任务的优先级无法确定是允许的最高优先级,同时也能适用于单核系统,避免出现优先级反转的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种优先级翻转示例的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种优化嵌入式系统中优先级反转方法,将被访问时带有锁定功能的对外寄存器更改为可重复访问的对外寄存器,以使所述对外寄存器可以同时被多个任务访问;
且所述对外寄存器仅在资源更新的特定时段会被锁定。
具体实施时,在嵌入式系统中,为防止程序重复访问,关键变量资源等都带有锁定功能,也就是说,当有任务访问该变量时,该变量不允许其他任务访问,由此导致低优先级任务可能会占据变量资源,使得高优先级任务进入持续等待现象,这种现象叫做优先级反转。
然而,本发明中被访问时带有锁定功能的对外寄存器更改为可重复访问的对外寄存器,从而提升访问效率,尤其在多核系统中,可允许其他内核访问该变量资源,缩短访问时间;
与此同时,为了避免由此导致的无法对所述对外寄存器进行数据更新,由此设定某一特定时段可以对所述对外寄存器进行数据或资源的更新;
需要说明的是,所述特定时段需根据所述对外寄存器的被访问或修改频率,在某个被访问或修改几率较低的时段进行更新;亦或者,根据更新任务的进度来判断。
优选地,所述对外寄存器上设有影子寄存器,所述影子寄存器的内容为当前所述对外寄存器的值或者更新后所述对外寄存器的值。
具体实施时,在系统中,将在对外寄存器上增设一个影子寄存器,同时将对外寄存器内的变量或值放在可访问地址中,影子寄存器内容为当前或更新的所述对外寄存器的值;在特殊时段,对所述对外寄存器的值进行更新,而这个时间点一般不会超过一定的指令周期,所述指令周期优选为5-6个。这样,在非更新的时间点,任何内核和程序均可以访问所述对外寄存器,并且都是安全的,而且所述对外寄存器也无需锁定,从而提升系统的运行效率。
优选地,包括更新任务,所述更新任务对所述对外寄存器更新的特定时段,依据对外寄存器的访问情况设定。
具体实施时,设定一个或若干个更新任务,所述更新任务则对所述对外寄存器进行更新,当然,具体更新的情况需跟进对外寄存器的访问情况而定;其中一种所述依据对外寄存器的访问情况设定的方式的实施方案,具体如下:
S1、在该资源需要更新时,启用更新任务,更新任务在执行过程中,可被所有高于它的优先级进行打断。
其中,需要说明的是,当其他任务在访问资源1时,访问的都是可对外寄存器值,而更新任务不进行对外寄存器的锁定功能,它只会锁定该对外访问寄存器的影子寄存器。因此,其他任务无法访问所述对外寄存器的影子寄存器;
S2、当存在优先级高于更新任务的其他任务需要访问所述对外寄存器时,所述对外寄存器的访问变量加1,第一任务执行完毕后,访问变量减1;
S3、在更新任务对对外寄存器进行更新前,需判断访问变量是否为0;
若访问变量为0,则关闭内核总中断,进行所述对外寄存器的数据更新;
S4、更新完成后,恢复是内核总中断。
优选地,当所述对外寄存器未被其他更高优先级的任务占用时,所述对外寄存器锁定,并直接对对外寄存器的数据进行更新。
具体实施时,当所述对外寄存器未被其他更高优先级的任务占用/调用时,关闭内核总中断,进行所述对外寄存器的数据更新,更新完成后,恢复是内核总中断。
优选地,当所述对外寄存器被其他优先级高于所述更新任务的任务占用时,所述更新任务则锁定所述影子寄存器,并对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内。
具体实施时,当所述对外寄存器被其他优先级高于所述更新任务的任务占用时,所述更新任务则锁定所述影子寄存器,并对所述影子寄存器内的值进行更新;待所述对外寄存器未被其他更高优先级的任务占用/调用时,关闭内核总中断,进行所述对外寄存器的数据更新,即将影子寄存器内的值更新至对外寄存器中,更新完成后,恢复是内核总中断。
优选地,当更新任务访问所述对外寄存器时,存在其他更高优先级的任务需要访问所述对外寄存器时,所述更新任务被中断,并改为访问所述对外寄存器的影子寄存器,以使更高优先级的任务不会因更新任务锁定对外寄存器而无法访问,同时对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内。
具体实施时,当更新任务访问所述对外寄存器时,存在其他更高优先级的任务需要访问所述对外寄存器时,所述更新任务被中断,并改为访问所述对外寄存器的影子寄存器,以使更高优先级的任务不会因更新任务锁定对外寄存器而无法访问,同时对所述影子寄存器内的值进行更新,待所述对外寄存器未被其他更高优先级的任务占用/调用时,关闭内核总中断,进行所述对外寄存器的数据更新,即将影子寄存器内的值更新至对外寄存器中,更新完成后,恢复是内核总中断。
优选地,当访问的任务需要改写寄存器时,以绝对变量形式存储于其他单元;所述绝对变量在更新任务对影子寄存器或者对外寄存器进行更新时会对更新的值进行修订。
具体实施时,所述其他单元可以为增量寄存器等。
所述结构体变量如下:(以C语言为例);
所述变量更新执行方案:
步骤1关所有中断(包括其他内核);
步骤2打开变量busy标志位,设置为禁止读取该寄存器状态;
步骤3将影子寄存器中的数值加上增量值送入寄存器中;
步骤4解锁busy标志位;
步骤5使能所有中断。
优选地,有且只有1个用于更新所述对外寄存器内资源的第一函数。
具体实施时,所述第一函数可以为:update_variblenum()。
所述第二函数可以为:
优选地,存在1个或多个用于针对所述第一函数的值进行修订的第二函数,所述第二函数无法对第一函数进行修改(只影响增量)。
优选地,所述特定时段的时间周期少于5-6个指令周期。
优选地,所述系统为单核或者多核系统。
具体实施时,方式不单可以工作在多核系统中,同时也可以工作在单核系统中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (5)

1.一种优化嵌入式系统中优先级反转方法,其特征在于:将被访问时带有锁定功能的对外寄存器更改为可重复访问的对外寄存器,以使所述对外寄存器可以同时被多个任务访问;
且所述对外寄存器仅在资源更新的特定时段会被锁定;
所述对外寄存器上设有影子寄存器,所述影子寄存器的内容为当前所述对外寄存器的值或者更新后所述对外寄存器的值;
更新任务对所述对外寄存器更新的特定时段,依据对外寄存器的访问情况设定:
当所述对外寄存器未被其他更高优先级的任务占用时,所述对外寄存器锁定,并直接对对外寄存器的数据进行更新;
当所述对外寄存器被其他优先级高于所述更新任务的任务占用时,所述更新任务则锁定所述影子寄存器,并对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内;
当更新任务访问所述对外寄存器时,存在其他更高优先级的任务需要访问所述对外寄存器时,所述更新任务被中断,并改为访问所述对外寄存器的影子寄存器,以使更高优先级的任务不会因更新任务锁定对外寄存器而无法访问,同时对所述影子寄存器内的值进行更新,以便后续直接将所述影子寄存器内更新后的值直接更新至所述对外寄存器内。
2.根据权利要求1任一项所述的优化嵌入式系统中优先级反转方法,其特征在于:当访问的任务需要改写寄存器时,以绝对变量形式存储于其他单元;所述绝对变量在更新任务对影子寄存器或者对外寄存器进行更新时会对更新的值进行修订。
3.根据权利要求2所述的优化嵌入式系统中优先级反转方法,其特征在于:有且只有1个用于更新所述对外寄存器内资源的第一函数。
4.根据权利要求3所述的优化嵌入式系统中优先级反转方法,其特征在于:存在1个或多个用于针对所述第一函数的值进行修订的第二函数,所述第二函数无法对第一函数进行修改。
5.根据权利要求1所述的优化嵌入式系统中优先级反转方法,其特征在于:所述特定时段的时间周期少于5-6个指令周期。
CN202010974392.7A 2020-09-16 2020-09-16 一种优化嵌入式系统中优先级反转方法 Active CN112068945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010974392.7A CN112068945B (zh) 2020-09-16 2020-09-16 一种优化嵌入式系统中优先级反转方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010974392.7A CN112068945B (zh) 2020-09-16 2020-09-16 一种优化嵌入式系统中优先级反转方法

Publications (2)

Publication Number Publication Date
CN112068945A CN112068945A (zh) 2020-12-11
CN112068945B true CN112068945B (zh) 2024-05-31

Family

ID=73696559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010974392.7A Active CN112068945B (zh) 2020-09-16 2020-09-16 一种优化嵌入式系统中优先级反转方法

Country Status (1)

Country Link
CN (1) CN112068945B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005173643A (ja) * 2003-12-05 2005-06-30 Toshiba Corp コンピュータシステム及びそのオペレーティング方法
CN1851677A (zh) * 2005-11-25 2006-10-25 华为技术有限公司 嵌入式处理器系统及其数据操作方法
CN101145113A (zh) * 2007-09-10 2008-03-19 中兴通讯股份有限公司 一种多线程访问间接寄存器的调度方法
JP2010020683A (ja) * 2008-07-14 2010-01-28 Nec Electronics Corp スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム
CN101894045A (zh) * 2010-06-18 2010-11-24 阳坚 一种实时Linux操作系统
CN103559085A (zh) * 2013-10-21 2014-02-05 福建升腾资讯有限公司 一种嵌入式系统中进行中断以及临界事件管理操作的方法
CN106959931A (zh) * 2017-03-14 2017-07-18 深圳航天科技创新研究院 实现中断控制器组件的方法及系统
CN107003921A (zh) * 2014-12-22 2017-08-01 英特尔公司 具有有限状态机控制的可重配置测试访问端口
CN107329810A (zh) * 2016-04-28 2017-11-07 飞思卡尔半导体公司 用于多核处理器的信号机
CN109144682A (zh) * 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 任务的优先级处理方法和处理装置
CN110519016A (zh) * 2019-09-03 2019-11-29 积成电子股份有限公司 一种基于实时优先级动态调整的三网合一数据发送方法
CN111209046A (zh) * 2019-12-25 2020-05-29 北京时代民芯科技有限公司 一种面向多任务处理的嵌入式sparc处理器操作系统设计方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005173643A (ja) * 2003-12-05 2005-06-30 Toshiba Corp コンピュータシステム及びそのオペレーティング方法
CN1851677A (zh) * 2005-11-25 2006-10-25 华为技术有限公司 嵌入式处理器系统及其数据操作方法
CN101145113A (zh) * 2007-09-10 2008-03-19 中兴通讯股份有限公司 一种多线程访问间接寄存器的调度方法
JP2010020683A (ja) * 2008-07-14 2010-01-28 Nec Electronics Corp スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム
CN101894045A (zh) * 2010-06-18 2010-11-24 阳坚 一种实时Linux操作系统
CN103559085A (zh) * 2013-10-21 2014-02-05 福建升腾资讯有限公司 一种嵌入式系统中进行中断以及临界事件管理操作的方法
CN107003921A (zh) * 2014-12-22 2017-08-01 英特尔公司 具有有限状态机控制的可重配置测试访问端口
CN107329810A (zh) * 2016-04-28 2017-11-07 飞思卡尔半导体公司 用于多核处理器的信号机
CN106959931A (zh) * 2017-03-14 2017-07-18 深圳航天科技创新研究院 实现中断控制器组件的方法及系统
CN109144682A (zh) * 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 任务的优先级处理方法和处理装置
CN110519016A (zh) * 2019-09-03 2019-11-29 积成电子股份有限公司 一种基于实时优先级动态调整的三网合一数据发送方法
CN111209046A (zh) * 2019-12-25 2020-05-29 北京时代民芯科技有限公司 一种面向多任务处理的嵌入式sparc处理器操作系统设计方法

Also Published As

Publication number Publication date
CN112068945A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
US11803380B2 (en) High performance synchronization mechanisms for coordinating operations on a computer system
US7353346B2 (en) Read-copy-update (RCU) operations with reduced memory barrier usage
US8375390B2 (en) Scheduling method and scheduling apparatus
US8930907B2 (en) Concurrency software testing with probabilistic bounds on finding bugs
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
US7818306B2 (en) Read-copy-update (RCU) operations with reduced memory barrier usage
US5287521A (en) Method and apparatus for releasing and obtaining shared and exclusive locks
US8239871B2 (en) Managing timeout in a multithreaded system by instantiating a timer object having scheduled expiration time and set of timeout handling information
CN112306699B (zh) 访问临界资源的方法及装置、计算机设备及可读存储介质
CN113205417B (zh) 一种面向联盟链的交易并行处理方法及系统
JPH02187825A (ja) コンピュータ
CN112068945B (zh) 一种优化嵌入式系统中优先级反转方法
CN110825734B (zh) 平衡树的并发更新方法及读写系统
CN112948136A (zh) 一种嵌入式操作系统异步日志记录的实现方法
US9354890B1 (en) Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
CN103995743B (zh) 基于资源预约的两级混合任务调度方法
CN115576671A (zh) 一种单线程多任务执行方法、装置、设备及介质
US20130185727A1 (en) Method for managing tasks in a microprocessor or in a microprocessor assembly
US7996848B1 (en) Systems and methods for suspending and resuming threads
JP7042105B2 (ja) プログラム実行制御方法および車両制御装置
CN110764880B (zh) 一种基于原子操作的三态控制方法
CN109976675B (zh) 一种数据更新、读取方法、装置、设备及存储介质
US10158580B2 (en) Utilizing access control data structures for sharing computing resources
CN114327828A (zh) 一种共享数据的并发访问方法、装置、设备及介质
CN117290118A (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