CN113377517B - 基于实时操作系统的线程调度方法及系统 - Google Patents
基于实时操作系统的线程调度方法及系统 Download PDFInfo
- Publication number
- CN113377517B CN113377517B CN202110720620.2A CN202110720620A CN113377517B CN 113377517 B CN113377517 B CN 113377517B CN 202110720620 A CN202110720620 A CN 202110720620A CN 113377517 B CN113377517 B CN 113377517B
- Authority
- CN
- China
- Prior art keywords
- thread
- key
- priority
- scheduling
- key thread
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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
技术领域
本申请涉及计算机技术领域,特别涉及线程调度技术。
背景技术
目前的车辆总控平台上都会运行高端嵌入式实时操作系统,需要高实时性、高安全性和高可靠性,比如QNX、VxWorks等。但目前运行于车辆总控平台的操作系统都是传统嵌入式系统演变而来,并不是专为车辆总控而设计的。而传统嵌入式系统大部分都以宏内核架构为主。
现有宏内核架构操作系统存在如下问题:线程优先级有限,导致会有多个最高优先级线程同时等待执行,但实际线程所需的优先级仍然存在差别;多内核情况下,为了保证线程尽量执行在特定CPU减少CPU变量切换操作,只能保证最高优先级线程执行,不能保证其他高优先级的线程的执行次序;系统线程和用户线程都用统一时间片进行管理,内核调度时间较长。这些设置都是基于宏内核操作系统非实时性特点,线程只有系统线程和用户线程的区别,系统线程和用户线程都需要被执行,只是优先级不同;高优先级线程执行一段时间后会被调度出去,执行低优先级线程;在线程被执行后,会有把当前线程优先级下调的操作,保证低优先级线程也能得到执行。
如图1所示为现有操作系统的执行过程,图1中的这些处理与实时操作系统的实际需求不符合。以车辆总控为例,现有的操作系统会形成最高优先级任务排队的问题:电脑和司机抢方向盘,汽车撞在树上,方向盘仍然在电脑控制下左右转等。原本最高优先级的任务,在情况发生变化后,会有更高优先级的任务出现,因此原本操作系统中固定的0~63或0~255的优先级设置不能符合实时操作系统的需求。
发明内容
本申请的目的在于提供一种基于实时操作系统的线程调度方法及系统,实现实时操作系统中关键线程的优先有序地执行。
本申请公开了一种基于实时操作系统的线程调度方法,包括:
响应于与外设状态相关的关键数据改变,根据改变的关键数据计算对应线程的优先级;
如果所计算的优先级大于关键线程优先级阈值,则将所述线程确定为关键线程,其中所述关键线程优先级阈值大于系统线程和用户线程的优先级;
将所述关键线程与当前执行关键线程的优先级进行比较,若所述关键线程的优先级高于当前执行关键线程的优先级,则执行所述关键线程以剥夺所述当前执行关键线程。
在一个优选例中,还包括:
若所述关键线程的优先级低于所述当前执行关键线程的优先级,则将所述关键线程根据其优先级加入到关键线程队列中等待执行;
当前执行关键线程执行结束后,按照优先级由大到小调度所述关键线程队列中的关键线程执行。
在一个优选例中,还包括:
关键线程执行过程中,若检测到与其对应的外设状态相关的关键数据发生改变,则根据改变的关键数据重新计算该关键线程的优先级;
若重新计算的优先级降低,且小于当前关键线程队列中的最高优先级但大于所述关键线程优先级阈值,则将所述关键线程根据其优先级重新加入所述关键线程队列中,并按照优先级由大到小调度重新排序后的关键线程队列中的关键线程执行;
若重新计算的优先级降低且小于所述关键线程优先级阈值,则所述关键线程恢复为用户线程,并作为用户线程调度执行。
在一个优选例中,还包括:
若当前执行关键线程执行结束后关键线程队列为空,则恢复到系统线程和用户线程的调度。
在一个优选例中,所述关键数据为操作系统按照外设地址列表监控对外设地址的读写时保存的外设地址对应的最新读写数据;所述关键数据常驻内存,所述外设地址包含中断号。
在一个优选例中,还包括:
预先存储中断号和优先级计算公式的对应关系,所述终端号与外设地址一一对应;
所述根据改变的关键数据计算对应线程的优先级,进一步包括:
实时检测关键数据改变的外设地址的中断号,根据所述对应关系确定对应的优先权计算公式,根据所述改变的关键数据和所确定的优先级计算公式计算对应线程的优先级。
在一个优选例中,所述将所述关键线程根据其优先级加入关键线程队列时,还包括:
将与所述关键线程对应的进程上下文同时保存到所述关键线程队列中,用于所述关键线程队列中的线程切换。
在一个优选例中,所述实时操作系统为微内核操作系统。
本申请还公开了一种基于实时操作系统的线程调度系统包括:
优先级计算模块,用于响应于与外设状态相关的关键数据改变,调度程序根据改变的关键数据重新计算对应用户线程的优先级;
关键线程确定模块,用于若所计算的优先级大于关键线程优先级阈值,则将所述用户线程确定为关键线程,其中所述关键线程优先级阈值大于任何系统线程和用户线程的优先级;
关键线程调度模块,用于将所述关键线程与当前执行关键线程的优先级进行比较,若所述关键线程的优先级高于所述当前执行关键线程的优先级,则执行所述关键线程以剥夺所述当前执行关键线程。
在一个优选例中,所述关键线程调度模块还用于若所述关键线程的优先级低于所述当前执行关键线程的优先级,则将所述关键线程根据其优先级加入到关键线程队列中等待执行,当前执行关键线程执行结束后,按照优先级由大到小调度所述关键线程队列中的关键线程执行。
本申请还公开了一种设备包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行所述计算机可执行指令时实现如前文描述的方法中的步骤。
本申请还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本申请实施方式中,至少包括以下优点和有益效果:
设置关键线程并根据用户设置和关键数据动态计算其优先级,同时设置关键线程的调度机制,保证多CPU环境下,最高优先级关键线程优先执行,在没有更高优先级关键线程存在的情况下不被调度出去。
通过增加比系统线程和用户线程更高优先级阈值的关键线程队列,增加关键线程调度处理过程,减少高优先级关键线程等待相应时间,增加内存使用,保证实时操作系统中实际存在的关键任务有序执行的同时,提高优先级关键线程的调度效率。
微内核操作系统的内核是极其精简的,并和进程空间分离,导致即使是进程切换性能很好的QNX操作系统仍然需要8us左右的线程切换时间,关键线程队列中保存了线程对应的进程上下文(Process Context),可提高线程切换效率。
此外,基于上述优点,本申请的实施方式在性能上可以达到了微秒级(6微秒以内)的响应能力,满足例如车辆总控系统高实时性的要求;在芯片支持方面使用微内核的理念实现指令集支持,从而最大可能的实现芯片的全面兼容,为后续国产芯片的支持提供支撑和保障,实现国产芯片和国产高端操作系统的全产业链,突破国外高端操作系统的卡脖子;并且,能够兼容POSIX等规范,兼容现有的算法、逻辑等应用需求。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是一种现有操作系统的线程执行过程示意图;
图2是根据本申请第一实施方式的基于实时操作系统的线程调度方法流程示意图;
图3A和3B是根据本申请的一示例微内核架构操作系统;
图4是根据本申请的一个实施例的线程任务调度流程图;
图5是根据本申请实施方式的操作系统线程执行过程示意图;
图6是根据本申请第二实施方式的基于实时操作系统的线程调度系统结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
部分概念的说明:
系统进程,系统线程:操作系统为完成系统任务启动的进程为系统进程,其中的线程为系统线程。
用户进程,用户线程:按照《计算机科学技术名词》第三版,运行用户程序时创建的运行在用户态下的进程通常同时拥有用户空间和内核空间,通过系统调用陷入内核态执行操作系统功能,这样的进程被成为用户进程。其中的线程称为用户线程。
关键进程,关键线程:运行用户程序时创建的运行在用户态的,对于任意中断,注册软中断服务程序的用户进程,当这些进程的注册处理软中断服务程序的线程的优先级超过用户设定的关键线程优先级阈值后,整个进程被称为关键进程,这个进程中优先级超过用户设定关键线程优先级阈值的等待处理软中断的服务程序线程被称为关键线程。其中,关键线程是软中断服务线程的一种状态,指在动态计算的优先级超过用户设定阈值后,在没有更高优先级关键线程出现时,包括在关键数据改变后重新计算后的优先级没有低于其它关键线程优先级时,也没有出现线程阻塞时,需要保证其不被调度出去的软中断服务线程。关键线程优先级低于硬中断对应的中断服务程序(ISR)和操作系统调度程序的优先级。在此关键线程优先级低于其他关键线程优先级时,调度程序调度其他关键线程执行。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种基于实时操作系统的线程调度方法,其流程如图2所示,该方法包括以下步骤:
在步骤201中,响应于与外设状态相关的关键数据改变,根据改变的关键数据重新对应线程的优先级。
可选地,该关键数据为操作系统按照外设地址列表实时或定时监控对外设地址的读写时保存的外设地址对应的最新读写数据。
可选地,步骤201中可以按照用户预先设定的计算公式来计算与发生改变的关键数据相关的线程的优先级。例如,预先设置中断号和优先级计算公式对应表,中断号与外设地址一一对应,在与外设状态相关的关键数据发生改变时,基于检测到的对应中断号确定对应的优先级计算公式,进而计算出与发生改变的关键数据相关的线程的优先级。该关键数据优选地常驻内存。
之后,进入步骤202,如果所计算的优先级大于关键线程优先级阈值,则将该线程确定为关键线程,其中该关键线程优先级阈值大于系统线程和用户线程的优先级。一般地,系统线程的优先级高于用户线程的优先级。
例如,0~63为普通用户线程优先级范围,64~255为系统线程优先级范围,则关键线程优先级阈值可以为大于255的任意值;例如可以设置为300,当计算出的线程优先级数值为320,则该线程被确定为关键线程并且320作为该关键线程的优先级。并且关键线程的优先级数值在整数范围内不设置上限,例如可以用32位无符号整形数据记录,即用unsigned int类型数据记录,实际有整数溢出问题,但相对于0~255的常用优先级设置,本文认为符合计算出的优先级不设置上线的实际需求,但是需要满足该关键线程的优先级低于硬中断对应的中断服务程序和操作系统调度程序的优先级。
之后,进入步骤203,将该关键线程与当前执行关键线程的优先级进行比较,若该关键线程的优先级高于该当前执行关键线程的优先级,则执行该关键线程以剥夺该当前执行关键线程。
可选地,步骤203还包括以下步骤:
若该关键线程的优先级低于该当前执行关键线程的优先级,则将该关键线程根据其优先级加入到关键线程队列中等待执行;
当前执行关键线程执行结束后,按照优先级由大到小调度该关键线程队列中的线程执行。
可选地,该方法还包括以下步骤:
在关键线程执行过程中,若检测到与其对应的外设状态相关的关键数据发生改变,则根据改变的关键数据重新计算该关键线程的优先级;
若重新计算的优先级降低,且小于当前关键线程队列中的最高优先级但大于该关键线程优先级阈值,则将该关键线程根据其优先级重新加入该关键线程队列中,并按照优先级由大到小调度重新排序后的关键线程队列中的关键线程执行;
若重新计算的优先级降低且小于该关键线程优先级阈值,则该关键线程恢复为用户线程,并作为用户线程调度执行。
可选地,上述“将该关键线程根据其优先级加入关键线程队列”的步骤中,还包括以下步骤:
将与该关键线程对应的进程上下文保存到该关键线程队列中,用于该关键线程队列中的线程切换。
可选地,该实时操作系统为微内核操作系统。如图3A和3B所示为一示例微内核操作架构。如图3A所示,其内核核心充分实现了微内核的架构理念,在核心中我们只实现进程调度、进程间通信、中断处理、时钟和同步、信号服务、消息通道服务等最基本的服务,所有其它的系统服务,比如驱动程序、文件系统、协议栈、图形框架、多媒体应用等和用户的应用程序都作为进程运行在用户地址空间中,利用MMU实现完全的地址保护,从而在核心架构层面上提供第一层的可靠性保障和安全保障。整套内核只包括了:内核、内存管理、路径名管理、进程管理、进程、公共部分;内核部分提供不同指令集的部分和应用管理部分及其他;内存管理部分处理所有内存相关的操作和处理;路径名管理为系统提供路径名管理机制和服务;进程管理处理整个系统中的进程相关事务;进程模块提供整个系统中的多种系统服务及其他;公共部分处理不同指令集的相关部分、硬件相关部分、内核和系统相关部分等;整个架构设计极其精简,划分清晰,为后续的内核扩展和指令集扩展做好基础,同时又能达到高实时性能,我们最大中断延时(实时性)在6微秒,可以完全满足自动驾驶技术的高实时性要求;微内核架构本身的模块化设计可以提供更高的可靠性和安全性;微内核架构能够提供更好的扩展性和兼容性;能够快速适配行业认证的需求和通过行业的认证,比如ISO26262ASIL-D认证。如图3B所示,该微内核架构的设计将内核与外围部分充分隔离,内核只提供基本的内核服务,包括:调度、同步、时钟、IPC、中断、内存等基本的内核服务;所有的外围部分包括驱动程序、协议栈、文件系统、图形框架、应用程序等等都在自己的完全受保护的地址空间中运行,每个进程与进程之间通过消息传递的方式进行通信和交互,同时提供了多种调度算法和机制保证了高实时性能,每个进程出现异常不会导致整个系统异常,每个进程都可以动态的加载、修复和更新,可以实现系统级的OTA功能
如图4所示为根据第一实施方式的操作系统的线程执行过程示意图,从设计上,其相对于现有的操作系统的系统线程和用户线程之外,增加负责外设处理的“关键线程”,用于动态计算“关键线程”优先级,以及关键线程所使用的和外设相关的“关键数据”常驻内存,图中系统线程不包括中断处理内存管理程序和关键线程,图中的注释框中说明关键线程运行特点。
图5是根据本申请的一个实施例的基于实时操作系统的线程任务调度流程图。其中,实时操作系统存在不应被暂停执行的特定线程,本文中称为“关键线程”,这些关键线程执行的操作称为“关键任务”。同时,与传统操作系统不同,实时操作系统与外设直接相关,存在和外设状态相关的,用于计算关键任务优先级的“关键数据”。同样,当这种高优先级任务执行结束之前,低优先级的任务不应该执行,例如,汽车紧急情况时,如果有刹车防抱死等关键任务存在,需要先执行这些关键任务,类似播放音乐等用户进程应该不需要执行,中断处理程序等系统进程应该根据设备类型,确定是否执行。这些关键线程需要动态计算任务优先级,优先级不应设置上限;在存在关键任务时,多CPU时应首先满足高优先级关键任务执行;关键任务执行时,如果没有更高优先级关键任务出现,应该保持执行,而不能切换到低优先级任务。
本申请的第二实施方式涉及一种基于实时操作系统的线程调度系统,其结构如图6所示,该调度系统包括优先级计算模块、关键线程确定模块和关键线程调度模块。
具体的,该优先级计算模块用于响应于与外设状态相关的关键数据改变,调度程序根据改变的关键数据重新计算对应用户线程的优先级;该关键线程确定模块,用于若所计算的优先级大于关键线程优先级阈值,则将该用户线程确定为关键线程,其中该关键线程优先级阈值大于任何系统线程和用户线程的优先级;该关键线程调度模块,用于将该关键线程与当前执行关键线程的优先级进行比较,若该关键线程的优先级高于该当前执行关键线程的优先级,则执行该关键线程以剥夺该当前执行关键线程。
可选地,该关键线程调度模块还用于若该关键线程的优先级低于该当前执行关键线程的优先级,则将该关键线程根据其优先级加入到关键线程队列中等待执行,以及当前执行关键线程执行结束后,按照优先级由大到小调度该关键线程队列中的关键线程执行。
可选地,该关键线程调度模块还用于:关键线程执行过程中,若检测到与其对应的外设状态相关的关键数据发生改变,则根据改变的关键数据重新计算该关键线程的优先级;若重新计算的优先级降低,且小于当前关键线程队列中的最高优先级但大于该关键线程优先级阈值,则将该关键线程根据其优先级重新加入该关键线程队列中,并按照优先级由大到小调度重新排序后的关键线程队列中的关键线程执行;若重新计算的优先级降低且小于该关键线程优先级阈值,则该关键线程恢复为用户线程,并作为用户线程调度执行。
可选地,该关键线程调度模块还用于若当前执行关键线程执行结束后关键线程队列为空,则恢复到系统线程和用户线程的调度。
可选地,该关键数据为操作系统按照外设地址列表监控对外设地址的读写时保存的外设地址对应的最新读写数据;该关键数据常驻内存,该外设地址包含中断号。
可选地,内存或存储模块中预先存储中断号和优先级计算公式的对应关系,中断号与外设地址一一对应;该优先级计算模块还用于实时检测关键数据改变的外设中断号,根据该对应关系确定对应的优先权计算公式,根据该改变的关键数据和所确定的优先级计算公式计算对应线程的优先级。
可选地,该关键线程调度模块还用于将与该关键线程对应的进程上下文保存到该关键线程队列中,用于该关键线程队列中的线程切换。
需要指出:第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
本申请的实施方式可应用于车辆总控平台,下面基于车辆总控场景案例进行举例说明:
车身传感器检测到座舱温度升高到40度,调度程序重新计算后对“系统温度调节进程”调整优先级,“系统温度调节进程”成为关键进程;
调度程序进入关键线程调度状态,调度系统温度调节线程执行。
这时,雷达(探测举例150米)监测到有障碍物靠近,更新障碍物距离,调度程序重新计算“刹车管理进程”优先级,车速高于每小时100公里,障碍物距离小于50米后,“刹车管理进程”成为关键进程;刹车管理进程优先级高于“系统温度调节进程”,操作系统调度刹车管理线程执行;
刹车管理进程对车身ecu发出刹车指令,对发动机ecu发出离合指令,对座舱发出报警指令,对监控ecu发出日志消息;
刹车管理进程读取车速寄存器数据和雷达障碍物距离数据后,当前操作执行结束,进入idle状态,调度程序重新计算优先级,刹车管理线程优先级降低,作为用户线程等待调度;
调度程序调度系统温度调节线程执行,“系统温度调节进程”对车身ecu下发开启空调指令,等待车身ecu对处理结果返回值,并读取温度传感器温度数据;
温度调节线程执行后,读取温度传感器地址数据,温度恢复为25度,当前操作执行结束,进入idle状态,调度程序重新计算优先级,温度调节线程优先级降低,作为用户线程等待调度。
调度程序若检查关键线程队列为空,恢复调度状态。
下面基于结合具体的优先级计算过程对线程调度过程进行举例说明:
设计传感器地址列表:
R1 座舱温度传感器温度寄存器 地址 0x10001010
R2 雷达障碍物距离传感器寄存器 地址 0x10005020
R3 车速传感器寄存器 地址 0x10007060
中断号:
车身状态物理中断号 25
雷达传感器物理中断号 31
中断和优先级计算公式:
TEMPERATURE_SOFTIRQ(R1-20)*(R1-20)*2
DISTANCE_SOFTIRQ(R3>100)?(150-R2)*(150-R2)/10:(150-R2)*3
设置关键线程优先级阈值为:300
车身ecu通过车身状态物理中断25,定时汇报传感器数据,包括温度寄存器R10x10000010地址最新数据为40度,车速寄存器R3 0x10007060地址最新数据为每小时100公里。雷达没有探测到障碍物,雷达障碍物距离传感器寄存器R2 0x10005020最新数据为150公里。
CPU检查到中断25后,调用硬中断服务程序read读取传感器数据,检查到包括温度寄存器R1数据,抛出TEMPERATURE_SOFTIRQ中断。
操作系统执行read操作比较操作目的地址列表,确定地址为0x10000010数据被读取,更新关键数据R1状态,定地址为0x10007060数据被读取,更新关键数据R3状态。
调度程序在上一个时间片之后,调度下一个线程前,检查关键数据状态位,温度寄存器R1地址数据有修改,调度程序检查用户设置,服务于TEMPERATURE_SOFTIRQ中断的线程的优先级和温度寄存器R1相关最新温度数据为40度,计算优先级为(40-20)*(40-20)*2=800超过关键线程优先级阈值300,调度程序检查“系统温度调节进程”中的线程注册对软中断TEMPERATURE_SOFTIRQ提供服务系统温度调节进程优先级提升成为关键进程,进程数据调度进入内存,注册服务TEMPERATURE_SOFTIRQ的系统温度调节线程成为关键线程,向车身ecu发出开启空调指令;这时雷达探测到障碍物,设置中断位31,CPU检查到中断31后,调用硬中断服务程序读取雷达障碍物距离传感器寄存器地址0x10005020,50米外有障碍物。
操作系统执行read操作比较操作目的地址列表,确定地址为0x10005020数据被读取,更新关键数据R2状态;调度程序在上一个时间片之后,调度下一个线程前,检查关键数据状态位,雷达障碍物距离寄存器R2数据有修改,调度程序检查用户设置,服务于DISTANCE_SOFTIRQ中断的线程的优先级和雷达障碍物距离寄存器R2相关最新障碍物距离数据为50米,计算优先级为(150-50)*(150-50)/10=1000超过关键线程优先级阈值300,调度程序检查“刹车管理进程”中的线程注册对软中断DISTANCE_SOFTIRQ提供服务“刹车管理进程”优先级提升成为关键进程,进程数据调度进入内存,注册服务DISTANCE_SOFTIRQ的刹车管理线程成为关键线程;
按照优先级,“刹车管理线程”插入关键线程队列;
调度程序检查关键线程优先级队列,调度“刹车管理线程“执行,向车身ecu发出开启刹车指令,向发动机ecu发出离合指令,向座舱发出报警指令,向日志ecu发出日志消息;
没有其他更高优先级,“刹车管理线程”执行,并读取车速寄存器R3和雷达障碍物寄存器R2数据,车速寄存器R3数据降为50,雷达障碍物寄存器R2增加为100;刹车管理线程当前操作完成进入idle状态,交出执行权限;
调度程序检查关键数据R2 R3改变,重新计算优先级,刹车管理线程优先级为(150-100)*3=150,小于关键线程优先级阈值,刹车管理线程优先级改为63,作为用户线程等待调度执行;
调度程序检查关键线程优先级队列,调度“系统温度调节线程”执行,系统温度调节线程读取温度寄存器R1数据,温度降为25度,系统温度调节线程当前操作完成进入idle状态,交出执行权限;
调度程序检查关键数据R1改变,重新计算优先级,系统温度调节线程优先级为(25-20)*(25-20)*2=50,小于关键线程优先级阈值,系统温度调节线程优先级改为63,作为用户线程等待调度执行。
需要说明的是,上述各案例中罗列的细节主要是为了便于理解,不作为对本申请保护范围的限制。
需要说明的是,本领域技术人员应当理解,上述线程调度系统的实施方式中所示的各模块的实现功能可参照前述线程调度方法的相关描述而理解。上述线程调度系统的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本申请实施例上述线程调度系统如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于,相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本申请实施方式还提供一种线程调度系统,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(CentralProcessing Unit,简称“CPU”),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,简称“DSP”)、专用集成电路(Application Specific IntegratedCircuit,简称“ASIC”)等。前述的存储器可以是只读存储器(read-only memory,简称“ROM”)、随机存取存储器(random access memory,简称“RAM”)、快闪存储器(Flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
Claims (11)
1.一种基于实时操作系统的线程调度方法,其特征在于,包括:
响应于与外设状态相关的关键数据改变,根据改变的关键数据计算对应线程的优先级,所述关键数据为操作系统按照外设地址列表监控对外设地址的读写时保存的外设地址对应的最新读写数据;
如果所计算的优先级大于关键线程优先级阈值,则将所述线程确定为关键线程,其中所述关键线程优先级阈值大于系统线程和用户线程的优先级;
将所述关键线程与当前执行关键线程的优先级进行比较,若所述关键线程的优先级高于当前执行关键线程的优先级,则执行所述关键线程以剥夺所述当前执行关键线程;
关键线程执行过程中,若检测到与其对应的外设状态相关的关键数据发生改变,则根据改变的关键数据重新计算该关键线程的优先级;
若重新计算的优先级降低,且小于当前关键线程队列中的最高优先级但大于所述关键线程优先级阈值,则将所述关键线程根据其优先级重新加入所述关键线程队列中,并按照优先级由大到小调度重新排序后的关键线程队列中的关键线程执行;
若重新计算的优先级降低且小于所述关键线程优先级阈值,则所述关键线程恢复为用户线程,并作为用户线程调度执行。
2.如权利要求1所述的方法,其特征在于,还包括:
若所述关键线程的优先级低于所述当前执行关键线程的优先级,则将所述关键线程根据其优先级加入到关键线程队列中等待执行;
当前执行关键线程执行结束后,按照优先级由大到小调度所述关键线程队列中的关键线程执行。
3.如权利要求1或2所述的方法,其特征在于,还包括:
若当前执行关键线程执行结束后关键线程队列为空,则恢复到系统线程和用户线程的调度。
4.如权利要求1所述的方法,其特征在于,所述关键数据常驻内存。
5.如权利要求4所述的方法,其特征在于,还包括:
预先存储中断号和优先级计算公式的对应关系,所述中断号与外设地址一一对应;
所述根据改变的关键数据计算对应线程的优先级,进一步包括:
实时检测关键数据改变的外设地址的中断号,根据所述对应关系确定对应的优先权计算公式,根据所述改变的关键数据和所确定的优先级计算公式计算对应线程的优先级。
6.如权利要求1所述的方法,其特征在于,将所述关键线程根据其优先级加入关键线程队列时,还包括:
将与所述关键线程对应的进程上下文同时保存到所述关键线程队列中,用于所述关键线程队列中的线程切换。
7.如权利要求1所述的方法,其特征在于,所述实时操作系统为微内核操作系统。
8.一种基于实时操作系统的线程调度系统,其特征在于,包括:
优先级计算模块,用于响应于与外设状态相关的关键数据改变,调度程序根据改变的关键数据重新计算对应用户线程的优先级;
关键线程确定模块,用于若所计算的优先级大于关键线程优先级阈值,则将所述用户线程确定为关键线程,其中所述关键线程优先级阈值大于任何系统线程和用户线程的优先级,所述关键数据为操作系统按照外设地址列表监控对外设地址的读写时保存的外设地址对应的最新读写数据;
关键线程调度模块,用于将所述关键线程与当前执行关键线程的优先级进行比较,若所述关键线程的优先级高于所述当前执行关键线程的优先级,则执行所述关键线程以剥夺所述当前执行关键线程,以及关键线程执行过程中,若检测到与其对应的外设状态相关的关键数据发生改变,则根据改变的关键数据重新计算该关键线程的优先级;若重新计算的优先级降低,且小于当前关键线程队列中的最高优先级但大于所述关键线程优先级阈值,则将所述关键线程根据其优先级重新加入所述关键线程队列中,并按照优先级由大到小调度重新排序后的关键线程队列中的关键线程执行;若重新计算的优先级降低且小于所述关键线程优先级阈值,则所述关键线程恢复为用户线程,并作为用户线程调度执行。
9.如权利要求8所述的线程调度系统,其特征在于,所述关键线程调度模块还用于若所述关键线程的优先级低于所述当前执行关键线程的优先级,则将所述关键线程根据其优先级加入到关键线程队列中等待执行,当前执行关键线程执行结束后,按照优先级由大到小调度所述关键线程队列中的关键线程执行。
10.一种线程调度设备,其特征在于,包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行所述计算机可执行指令时实现如权利要求1至7中任意一项所述的方法中的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如权利要求1至7中任意一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110720620.2A CN113377517B (zh) | 2021-06-28 | 2021-06-28 | 基于实时操作系统的线程调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110720620.2A CN113377517B (zh) | 2021-06-28 | 2021-06-28 | 基于实时操作系统的线程调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377517A CN113377517A (zh) | 2021-09-10 |
CN113377517B true CN113377517B (zh) | 2023-02-28 |
Family
ID=77579438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110720620.2A Active CN113377517B (zh) | 2021-06-28 | 2021-06-28 | 基于实时操作系统的线程调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377517B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113925519B (zh) * | 2021-10-13 | 2022-09-30 | 郑州市中心医院 | 一种基于微内核的便携式肌电检测设备及系统 |
CN115327252B (zh) * | 2022-06-27 | 2023-08-08 | 上海轩田工业设备有限公司 | 一种高低温微波性能测试调度优化方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627264A (zh) * | 2003-07-24 | 2005-06-15 | 国际商业机器公司 | 延迟的优先级增强的系统和方法 |
CN102341780A (zh) * | 2009-03-17 | 2012-02-01 | 高通股份有限公司 | 实时多线程调度器及调度方法 |
CN104915256A (zh) * | 2015-06-05 | 2015-09-16 | 惠州Tcl移动通信有限公司 | 一种任务的实时调度实现方法及其系统 |
CN109918141A (zh) * | 2019-03-15 | 2019-06-21 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
CN111367652A (zh) * | 2020-01-07 | 2020-07-03 | 苏州大学 | 一种嵌入式实时操作系统的任务调度处理系统和方法 |
CN111813520A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1273890C (zh) * | 2004-04-30 | 2006-09-06 | 浙江大学 | Arm处理器架构的微内核设计方法 |
EP1605354A1 (en) * | 2004-06-10 | 2005-12-14 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for improved synchronization of a processing unit for multimedia streams in a multithreaded environment |
CN101770398A (zh) * | 2008-12-26 | 2010-07-07 | 罗侍田 | 一种操作系统内核 |
US9311149B2 (en) * | 2012-12-21 | 2016-04-12 | International Business Machines Corporation | Processor provisioning by a middleware processing system |
CN109117260B (zh) * | 2018-08-30 | 2021-01-01 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、设备和介质 |
CN111538580B (zh) * | 2020-04-23 | 2024-01-05 | 苏州大学 | 一种嵌入式实时操作系统的线程信号操作方法与系统 |
-
2021
- 2021-06-28 CN CN202110720620.2A patent/CN113377517B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627264A (zh) * | 2003-07-24 | 2005-06-15 | 国际商业机器公司 | 延迟的优先级增强的系统和方法 |
CN102341780A (zh) * | 2009-03-17 | 2012-02-01 | 高通股份有限公司 | 实时多线程调度器及调度方法 |
CN104915256A (zh) * | 2015-06-05 | 2015-09-16 | 惠州Tcl移动通信有限公司 | 一种任务的实时调度实现方法及其系统 |
CN109918141A (zh) * | 2019-03-15 | 2019-06-21 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
CN111367652A (zh) * | 2020-01-07 | 2020-07-03 | 苏州大学 | 一种嵌入式实时操作系统的任务调度处理系统和方法 |
CN111813520A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113377517A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113377517B (zh) | 基于实时操作系统的线程调度方法及系统 | |
KR100934533B1 (ko) | 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 | |
US6006247A (en) | Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system | |
US7287135B2 (en) | Adapting RCU for real-time operating system usage | |
US6052632A (en) | Network system for vehicle-mounted electronic devices and vehicle-mounted operating system used therein | |
CN103458036B (zh) | 一种集群文件系统的访问装置和方法 | |
CN106415575B (zh) | 硬件配置报告系统 | |
US10120713B2 (en) | Hardware controlled instruction pre-fetching | |
CN110196766B (zh) | 任务调度和处理方法及装置、存储介质和处理器 | |
EP3758311A1 (en) | Techniques to facilitate a hardware based table lookup | |
JP2015067107A (ja) | 車両用制御装置 | |
JP2019114173A (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN111831639B (zh) | 一种全局唯一id生成方法及装置、车辆管理系统 | |
US7117496B1 (en) | Event-based synchronization | |
CN116521341A (zh) | 中断任务处理方法、装置、芯片、存储介质 | |
US8793423B2 (en) | Servicing interrupt requests in a computer system | |
JP4047783B2 (ja) | タスク制御方法とタスク切替装置 | |
CN115221506B (zh) | 一种防止堆栈溢出的保护方法及相关设备 | |
JPH07311686A (ja) | コンピュータシステム、およびその中でシステム管理割込を発生し処理するための方法 | |
JP6349444B2 (ja) | 車両用制御装置 | |
US20240078128A1 (en) | Control device, control system, and control method | |
CN117971407A (zh) | 一种微内核用户态系统服务层的域间通信方法及车机 | |
CN115145687B (zh) | 一种用户态虚拟机任务的调度方法及装置 | |
US20240308533A1 (en) | Vehicle control modules including containerized orchestration and resource management for mixed criticality systems | |
US6820154B2 (en) | System and method for servicing interrupts |
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 |