CN117931412A - 一种双内核实时操作系统及任务调度方法 - Google Patents
一种双内核实时操作系统及任务调度方法 Download PDFInfo
- Publication number
- CN117931412A CN117931412A CN202410324706.7A CN202410324706A CN117931412A CN 117931412 A CN117931412 A CN 117931412A CN 202410324706 A CN202410324706 A CN 202410324706A CN 117931412 A CN117931412 A CN 117931412A
- Authority
- CN
- China
- Prior art keywords
- thread
- priority
- kernel
- real
- time
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000004044 response Effects 0.000 claims abstract description 29
- 230000006870 function Effects 0.000 claims description 21
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 claims description 19
- 230000000903 blocking effect Effects 0.000 claims description 14
- 230000009977 dual effect Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 5
- 238000005538 encapsulation Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- AZUYLZMQTIKGSC-UHFFFAOYSA-N 1-[6-[4-(5-chloro-6-methyl-1H-indazol-4-yl)-5-methyl-3-(1-methylindazol-5-yl)pyrazol-1-yl]-2-azaspiro[3.3]heptan-2-yl]prop-2-en-1-one Chemical compound ClC=1C(=C2C=NNC2=CC=1C)C=1C(=NN(C=1C)C1CC2(CN(C2)C(C=C)=O)C1)C=1C=C2C=NN(C2=CC=1)C AZUYLZMQTIKGSC-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算机技术领域,公开了一种双内核实时操作系统及任务调度方法。该系统应用于星务计算机,包括:内核接口、通用内核及实时内核;内核接口,用于接收目标任务发起的系统调用请求并生成中断,根据目标任务是否具有实时响应需求,将中断分发到实时内核或通用内核;通用内核,用于抽象系统的硬件资源,并共享给实时内核;在目标任务不具有实时响应需求的情况下,作为目标内核执行系统调用;实时内核,用于通过内核接口,使用通用内核共享的硬件资源;在目标任务具有实时响应需求的情况下,作为目标内核执行系统调用。采用本申请的操作系统,能够提高星务计算机实时操作系统的安全性,同时向用户提供丰富的应用程序与服务。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种双内核实时操作系统及任务调度方法。
背景技术
实时操作系统(Real Time Operating System,RTOS)在卫星的星务计算机中应用广泛,随着商业航天活动的增长和小型卫星的普及,对RTOS的需求逐步增加。星务计算机的RTOS存在功能单一的问题,不足以满足用户多样化的功能需求。RTOS缺少通用操作系统中常用的一些服务,例如图形界面、网络通信、文件系统等。此外,星务计算机的RTOS主要是由C语言编写的,其存在一些缺陷。具体地,C语言要求开发人员手动管理内存,包括分配和释放,并且允许指针在未初始化的情况下使用,这可能导致一系列不确定的操作,比如未正确释放内存、指针指向已释放内存或指针未指向明确内存地址,增加内存泄漏的风险。因此,需要提升星务计算机的系统安全性,并对用户提供多样化的服务,以满足用户需求。
发明内容
有鉴于此,本申请旨在提出一种双内核实时操作系统及任务调度方法,以提升星务计算机的系统安全性,以及向用户提供多样化的服务。
为达到上述目的,本申请的技术方案如下:
本申请实施例第一方面提供一种双内核实时操作系统,所述操作系统应用于星务计算机,包括:内核接口、通用内核及实时内核;
所述内核接口,用于接收目标任务发起的系统调用请求并生成中断,在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核;在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;所述内核接口基于Rust语言编写;所述目标任务由地面主机发起;
所述通用内核,用于抽象所述系统的硬件资源,并共享给所述实时内核;在所述目标任务不具有实时响应需求的情况下,作为目标内核执行所述系统调用;所述通用内核为Linux内核,支持的功能包括:用户图形界面交互、网络通信及文件共享;
所述实时内核,用于通过所述内核接口,使用所述通用内核共享的硬件资源;在所述目标任务具有实时响应需求的情况下,作为所述目标内核执行所述系统调用;所述实时内核基于Rust语言编写。
可选地,所述实时内核,包括:
动态库,用于作为所述实时内核的空间接口以支持基本系统调用封装和基本线程同步服务;
C库,用于向基于C语言编写的应用程序提供访问服务的功能;
Rust库,用于向基于Rust语音编写的应用程序提供访问服务的功能;
线程单元,用于创建与执行线程;
调度单元,用于采用以下任一策略进行线程调度:TP策略或QUOTA策略;
时钟单元,用于对所有线程的执行时间进行管控。
可选地,所述调度单元,用于执行以下步骤:
对调度队列中的线程进行调度,确定下一个执行的目标线程;
判断目标线程与上一个线程是否相同;在所述目标线程与所述上一个线程相同的情况下,判定所述目标线程无需切换执行阶段;
在所述目标线程与所述上一个线程不同的情况下,执行以下步骤:判断所述目标线程的上一个线程是否为根线程;在所述上一个线程为根线程的情况下,判定所述目标线程需要切换为带外执行阶段;在所述目标线程的上一个线程不是根线程的情况下,判断所述目标线程的下一个线程是否为根线程;在所述下一个线程为根线程的情况下,判定所述目标线程在执行完成后需要切换为带内执行阶段;
对所述目标线程进行上下文切换,并将所述目标线程置为执行状态。
可选地,所述调度单元,还用于执行以下步骤:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
可选地,所述调度单元,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
所述调度单元,采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
根据本申请实施例的第二方面,提供一种任务调度方法,该方法应用于本申请实施例的第一方面所提供的双内核实时操作系统,所述方法包括:
接收目标任务发起的系统调用请求并生成中断;
在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核。
可选地,所述任务调度方法,还包括:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
可选地,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
可选地,所述任务调度方法,还包括:
在提升所述低优先级线程的优先级之前,获取所述低优先级线程对应的回溯次数,与回溯次数阈值进行比较;若所述回溯次数不小于所述回溯次数阈值,则保持所述线程的优先级为原始优先级;若所述回溯次数小于所述回溯次数阈值,则提升所述低优先级线程的优先级;
在对阻塞所述高优先级线程的低优先级线程进行优先级回溯之后,将进行优先级回溯的低优先级线程对应的回溯次数,增加1。
可选地,所述任务调度方法,还包括:
记录每个线程在历史执行时的执行参数,包括:理想结束时间、实际结束时间、持有共享资源的时间及持续时间;
在每一轮调度后,更新所有线程的执行参数;
基于每个线程的效率及对应的效率权重,计算系统的总效率;
根据所述系统的总效率,调整所述资源占有率阈值、所述效率阈值及所述回溯次数阈值;
在每一轮调度时,基于调整后所述资源占有率阈值、所述效率阈值及所述回溯次数阈值,进行调度。
本申请所提供的双内核实时操作系统,包括通用内核级实时内核,其中,实时内核采用Rust语言编写,用于执行具有实时相应需求的目标任务;通用内核为Linux内核,用于执行不具有实时响应需求的目标任务。本申请中,通用内核支持的用户服务包括但不限于:图形界面交互、网络通信及文件共享等用户服务。内核接口用于连接通用内核与实时内核,在接收到系统调用请求时,根据目标任务的类型,将中断分发到对应的内核中执行。
本申请提供的双内核实时操作系统,通过结合实时内核与通用内核,使操作系统同时具备实时任务响应与多样化服务的功能性,两个内核使用同一套硬件资源,允许实时任务和非实时任务在一个硬件平台上运行,从而提高系统的资源利用率。对于地面主机发出的目标任务,由内核接口根据目标任务的类型灵活选择进行分发,由于两个内核之间仅通过内核接口进行连接,因此具有较好的隔离性,当任一内核出现故障不会影响到另一内核的正常运行。此外,由于内核接口与实时内核均采用Rust语言编写,相比于采用C语言编写的实时操作系统,其内存安全问题得到改善,提升了系统的安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的双内核实时操作系统的功能示意图;
图2是本申请一实施例提出的任务调度方法的流程图;
图3是本申请一实施例中调度单元的工作流程图;
图4是本申请一实施例中对线程进行优先级调度的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请提供的双内核实时操作系统,不仅能够应用在星务计算机上,也使用与其他具有实时响应需求及多样化功能的应用场景。例如,医疗重症监护系统、航空系统、空中交通管制系统、股票系统、车载系统等。
下面将参考附图并结合实施例来详细说明本申请。
图1是本申请一实施例提出的双内核实时操作系统的功能示意图。本实施例中,该操作系统应用于星务计算机。如图1所示,所述操作系统,包括:内核接口、通用内核及实时内核;
所述内核接口,用于接收目标任务发起的系统调用请求并生成中断,在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核;在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;所述内核接口基于Rust语言编写;所述目标任务由地面主机发起;
所述通用内核,用于抽象所述系统的硬件资源,并共享给所述实时内核;在所述目标任务不具有实时响应需求的情况下,作为目标内核执行所述系统调用;所述通用内核为Linux内核,支持的功能包括:用户图形界面交互、网络通信及文件共享;
所述实时内核,用于通过所述内核接口,使用所述通用内核共享的硬件资源;在所述目标任务具有实时响应需求的情况下,作为所述目标内核执行所述系统调用;所述实时内核基于Rust语言编写。
本实施例中,Dovetail是一段内核代码,作为实时内核和通用内核之间的连接接口,它将通用内核嵌入到实时内核中,以便将一些Linux任务调度到带外阶段。实时内核负责处理具有实时响应需求的实时任务,而通用内核则处理其他无需实时响应的任务。这种分离使得对响应时间要求严格的任务能够在有限的复杂性内得到快速处理,提高系统吞吐量,以及简化系统架构便于维护。实时任务主要是星务计算机本身的任务,例如卫星姿态控制。通用任务主要是AI(人工智能)推理或者是k8s(kubernetes,一种容器化应用)的任务。
本实施例中,采用Rust语言编写实时内核与内核接口,提高系统内存的安全性,通过内核接口根据任务类型进行灵活分发,两个内核分别独立处理不同类型的任务,从而在确保实时性能的基础上满足用户的多功能需求,由于两个内核仅通过内核接口连接,因此内核间具有较好的隔离性,当任一内核出现故障时不会影响另一个内核的正常运行。
在内核接口引入一个高优先级执行阶段,具有实时响应需求的目标任务在此运行。通过内核接口,系统能够在一个单独的执行上下文中运行带外任务,这个上下文不受通用任务必须遵守的常见形式的序列化影响(例如中断屏蔽、自旋锁等)。内核接口在分发中断时,会先判断是否是实时任务,如果是实时任务,则硬件发出的硬中断被分发到实时内核处理。若不是实时任务,则中断被分发到通用内核(Linux)中,从而实现基本的中断实时控制。
在线程资源和内存资源方面,实时内核可以通过内核接口间接使用通用内核已经抽象好了的资源。
作为本申请的一种实施方式,所述实时内核,包括:
动态库,用于作为所述实时内核的空间接口以支持基本系统调用封装和基本线程同步服务;
C库,用于向基于C语言编写的应用程序提供访问服务的功能;
Rust库,用于向基于Rust语音编写的应用程序提供访问服务的功能;
线程单元,用于创建与执行线程;
调度单元,用于采用以下任一策略进行线程调度:TP策略或QUOTA策略;
时钟单元,用于对所有线程的执行时间进行管控。
本实施例中,构建了实时内核的用户空间接口动态库(Rros库,librros.so),通过动态库实现基本系统调用封装,以及基本线程同步服务。还构建了C库与Rust库,其中,C库为C/C++应用程序(即用户层)提供访问实时核心服务的功能;Rust库为Rust语言编写的应用程序提供了访问实时核心服务的功能,集成C库与Rust库,在提高系统安全性的同时,也适配目前通用的C语言编写的应用程序,提高系统的兼容性。
实时内核中包括线程单元、调度单元、时钟单元,其中线程单元用于创建和执行线程,调度单元对线程的优先级进行调度,从而确定线程的执行顺序,时钟单元对所有线程的执行时间进行管控。此外,实时内核还包括监视器(提供同步功能的集合)、松散耦合的可观察器、跨缓冲器和文件代理。
本实施例中,实时内核中的线程可选的执行方式有两种:
方式1:仅通过调用Rros库中提供的服务来请求核心的实时服务。在且仅在这种情况下,线程可以获得实时保证。这样的请求可能会将调用线程切换到带外执行阶段,在Rros的监督下运行以确保实时性。
方式2:调用C库的服务,可能会发出系统调用到实时内核以完成任务。此时,实时内核自动将任务从上下文降级到带内阶段,以便它进入一种与使用通用内核服务兼容的运行模式。线程将失去所有关于短时间和有界延迟的保证,以换取对通用内核提供的功能的访问,即不能满足实时性的要求。这种模式通常保留作为应用程序的初始化和清理步骤。
以控制卫星姿态变换为例,实时内核执行实时任务的流程如下:
(1)由星务计算机发出任务,执行系统调用,允许用户空间来请求内核空间的服务,当双内核实时操作系统收到系统调用请求后,将其分发到实时内核中进行处理;
(2)此时,实时内核创建一个新进程,并对新进程分配进程号(PID)、进程控制块(PCB)等必要的进程信息。其中,进程号PID主要的目的是分辨不同的进程,PCB用来存放进程的管理和控制信息等;
(3)然后为进程分配一些必要的内存空间,使用虚拟内存、分页、分段等技术进行内存管理;
(4)任务的相关资源初始化完毕后,任务状态变为就绪态进入到调度队列中(调度策略会在初始化时或运行时调整),等CPU资源或时间片允许时,会将就绪态的任务变为执行态然后执行;
(5)时钟单元发出中断告知任务资源到期或其他事项,并处理一些与系统时钟相关的任务,比如定时任务等等。
(6)任务执行完毕后,内核清理任务执行过程中分配的内存资源,随后将执行结果返回到用户态,整个任务执行结束。
本实施例中,线程单元负责创建与执行线程,流程如下:
(1)首先进行初始化,这一步主要是设置线程的初始状态。
(2)利用Linux内核提供的函数创建一个新的线程,并分配给它一个Linux调度器,并把它放入就绪状态队列,准备执行。
(3)接下来,这一新线程将从带内转换为带外状态,期间它将被加入到调度队列中,由调度单元采用具体的调度策略激活新线程。
(4)若此时只存在单一线程,它会被选中参与上下文切换。线程执行完成后将触发一个预定的中断服务程序,若存在父线程,则中断服务程序会激活正在等待的父线程。
(5)在线程执行完毕后,线程还会调用一个特定的清理函数,释放相关资源,并将线程从带外状态转换到带内。如果存在其它实时任务,线程还将进行另一轮上下文切换,待下一中断到达时继续执行;如果没有,则切换回根线程,恢复带内状态。
(6)最终,子线程通过调用do_exit命令正常终止,并且触发之前设置的中断服务程序来唤醒父线程,此时父线程将执行调度以判定是否需要进一步的线程调度。
本实施例中,调度单元可采用的调度策略包括以下几种:FIFO策略、RR策略、TP策略、QUOTA策略、WEAK策略。其中,只有FIFO策略和WEAK策略可供带内执行线程采用。QUOTA策略和TP策略是两个实时调度策略。
本实施例中,时钟单元用于处理时钟中断,其流程如下:
(1)由硬件发出时钟中断;
(2)系统通过通用中断控制器gic域找到中断请求号irq,每个中断请求号对应一种中断类型;
(3)根据irq获得中断描述符desc,执行该描述符所描述的中断处理程序;
(4)判断当前线程是带外执行还是带内执行;如果是带外执行,则会跳转到实时内核进行后续的时钟处理;如果是带内执行,则会将中断传播至linux内核进行处理。
作为本申请的一种实施方式,所述调度单元,用于执行以下步骤:
对调度队列中的线程进行调度,确定下一个执行的目标线程;
判断目标线程与上一个线程是否相同;在所述目标线程与所述上一个线程相同的情况下,判定所述目标线程无需切换执行阶段;
在所述目标线程与所述上一个线程不同的情况下,执行以下步骤:判断所述目标线程的上一个线程是否为根线程;在所述上一个线程为根线程的情况下,判定所述目标线程需要切换为带外执行阶段;在所述目标线程的上一个线程不是根线程的情况下,判断所述目标线程的下一个线程是否为根线程;在所述下一个线程为根线程的情况下,判定所述目标线程在执行完成后需要切换为带内执行阶段;
对所述目标线程进行上下文切换,并将所述目标线程置为执行状态。
图3是本申请一实施例中调度单元的工作流程图。本实施例中,调度单元对调度队列中所有线程进行调度,具体步骤如下:
(1)根据优先级,选择待执行的目标线程。
(2)若目标线程与上一个线程(即当前执行的线程)相同,表明该线程已在执行中无需切换;如果目标线程与上一个线程不同,则继续步骤(3)。
(3)检测目标线程的上一个线程是否为根线程;
若是根线程,则目标线程需要从带内转到带外执行;
若不是根线程,则需要继续判断目标线程的下一个线程是否为根线程;若下一个线程是根线程,则目标线程执行完毕需要切换回带内。
根据判断结果,线程单元在执行该目标线程时会对应切换到带内或带外执行该目标线程。
(4)调度单元进行上下文切换,将目标线程置于执行状态等待线程单元执行。
作为本申请的一种实施方式,所述调度单元,还用于执行以下步骤:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
本实施例中,调度方法除了能够应用在星务计算机的实时操作系统中,还能够应用于其他有实时响应需求的系统中,例如医疗系统、车载系统、股票系统等。调度单元在采用TP策略或QUOTA策略进行线程调度时,会出现资源竞争导致高优先级线程被阻塞,被迫延迟执行,进而导致系统实时性能的严重下降。竞争资源时高优先级线程被阻塞存在两种情况:
情况1:高优先级线程被低优先级线程的临界区阻塞。例如,线程J2被线程J1的临界区所阻塞,其中J2的优先级高于J1,但J2不得不等待J1离开其临界区。这种情况下,J2与J1并非竞争共享资源,J2是被非共享资源阻塞,比如CPU资源或者时钟。
情况2:高优先级线程被低优先级线程占用共享资源而阻塞。例如,线程J2被线程J1所阻塞,因为J1持有共享资源S,即被临界区所持有,并且。这种情况下,J1与J2竞争同一个共享资源S,而S被J1持有。
值得注意的是,低优先级线程与高优先级线程是相对而言的,在实际应用中,可根据需求进行划分。
图4是本申请一实施例中对线程进行优先级调度的流程图。如图4所示,当检测到线程间竞争共享资源时,调度单元对占有共享资源的低优先级线程进行优先级提升,以使占有共享资源的低优先级线程以更高的优先级抢先执行,减少优先级反转对高优先级线程的阻塞时间。被提升优先级后的低优先级线程在执行完毕后,将释放占用的资源(包括共享资源及非共享资源)并恢复其原始优先级,以使被阻塞的高优先级线程继续执行。
对于高优先级线程,则对该线程的效率及资源占有率进行分析。当高优先级线程的效率低于效率阈值,且资源占有率低于资源占有率阈值时,表明该高优先级线程延迟过高。将与其竞争共享资源,且被提升过优先级的低优先级线程进行优先级回溯,恢复对应的原始优先级,以使高优先级线程尽早执行,进而提升系统的总效率以及实时性能。如图4所示,在高优先级线程的效率及资源占有率均低于对应阈值的情况下,遍历所有竞争资源的线程,若检测到低优先级线程i被提升过优先级,则对线程i进行优先级回溯,以使该高优先级线程作为当前最高优先级的线程抢先执行。
对于任一高优先级线程,需要计算该线程对于每个共享资源的资源占有率,然后分别与资源占有率阈值进行比较。在多数资源占有率低于资源占有率阈值的情况下,判定该线程的资源占有率低于资源占有率阈值。在实际应用中,可根据需要对“多数”进行判定,比如将超过半数判定为多数,或将超过2/3判定为多数。例如,线程J1对于3个共享资源(S1、S2、S3)的资源占有率中,低于资源占有率阈值的数量有2个(超过半数),则判定该线程J1的资源占有率低于资源占有率阈值。
本实施例中,效率及资源占有率计算中使用的具体符号如下表1所示。
表1
假设线程i的临界区(持有共享资源的代码区域)是正确嵌套的,即任意临界区的组合和仅可能存在三种关系,完全包含、完全被包含及无交集。
线程的效率通常由实际结束时间与理想结束时间(即任何延迟的完成时间)来衡量。线程的理想结束时间为:;
线程的效率为:;
其中,为实际结束时间。如果一个线程在其到达时间执行并在持续时间后完成,那么效率为1(或100%),如果线程延迟了效率会小于1。在实时系统中,优先级高的线程对总效率的贡献更大,这意味着,优先级越高的线程越早执行,系统的整体效率越高。因此,本实施例中,对不同优先级的线程设置了不同的优先级权重。
线程的加权效率为:;
其中,为的优先级权重,与优先级呈正相关分布:,其中k为正相关分布系数。
系统加权后的总效率为:。
对每个共享资源定义其资源占有率(Resource occupancy,Ro),考虑到每个共享资源可能会被多个线程所需要,而每个线程需要资源的时间动态变化。因此,定义线程对于资源的资源占有率:
;
所有线程对资源的总占有率:
;
其中,表示线程持有共享资源的时间,即临界区的持续时间,表示线程的持续时间,n为线程总数。
以下举例说明本实施例中调度方法的具体实现方式,实施例中,优先级1、2为低优先级,优先级3、4为高优先级。
【示例1】低优先级线程与高优先级线程竞争共享资源。
假设目前存在线程集合,优先级集合为,共享资源集合为,四个线程的优先级分别为,周期分别为,到达时间分别为,其中线程需要共享资源,需要共享资源,需要共享资源,需要共享资源。
在0秒到来,并持有共享资源1秒,在第0秒时执行了操作;第1秒到来,考虑到的优先级大于,由抢占CPU资源并持有共享资源1秒,在1秒时执行了操作;第2秒、到来,此时,需要持有共享资源。
在仅对低优先级线程进行调度的情况下,由于此时持有共享资源的和持有共享资源的优先级被提升至与相同;继续持有并运行3秒,于第5秒释放CPU资源和共享资源,在第5秒时执行了操作;然后,继续持有并运行4秒,于第9秒释放CPU资源和共享资源,在第9秒时执行操作;在第9秒,CPU资源、共享资源均是空闲状态,根据判断的优先级大于,获得CPU资源并持有共享资源运行20秒,在第29秒释放CPU资源和;在第29秒时,获得CPU资源和共享资源,运行2秒后于第31秒时结束运行。在这种调度方式中,必须等待原始优先级比它低,但被提升优先级后的和执行完成后,再等待执行完成,才可以开始执行,导致系统效率低下。
在对低优先级及高优先级进行综合调度的情况下,在第2秒时,考虑到与到来,且所需的共享资源多数被已占用,则此时对和进行优先级回溯,再进行优先级判定。此时,共享资源空闲,且优先级最高,因此由抢占CPU资源并持有共享资源,运行2秒至第4秒;然后在第4秒时,执行操作从临界区中退出;第4秒时继续持有并运行3秒,于第7秒释放CPU资源和共享资源,在第7秒时执行了操作;然后,继续持有并运行4秒,于第11秒释放CPU资源和共享资源,在第11秒时执行了操作。在第11秒时获得CPU资源并持有共享资源运行20秒,在第31秒释放CPU资源和。在这种情况下,高优先级线程的执行时间提前到第2秒,而低优先级的和相对延后,从而提高系统整体的效率。
【示例2】低优先级线程因共享资源被提高到过高的优先级,而短时间内没有同样需要该共享资源的高优先级线程出现。
假设目前存在线程集合,优先级集合为,共享资源集合为,四个线程的优先级分别为,周期分别为,四个线程的到达时间分别为,其中线程曾经使用过共享资源,需要共享资源,需要共享资源。
在第0秒时,到来,并需要持有共享资源,根据优先级天花板策略,其与存在竞争共享资源的关系,而共享资源的优先级天花板为的优先级,因此,的优先级被直接提升至,执行操作进入临界区后,继续运行2秒至第2秒;在第2秒时,到来,但因为资源被所占有,被阻塞,根据优先级天花板策略,的优先级也被直接提升至;在第3秒时,到来。
在仅对低优先级线程进行调度的情况下,由于优先级天花板将和的优先级提升至了,此时虽然不获取任何资源,同时也是当时优先级最高的线程,但被和阻塞;第8秒时,执行完毕,执行了操作,退出了临界区;此时得到CPU资源和共享资源,并执行操作进入临界区,继续运行10秒至第18秒,执行了操作,退出了临界区;此时,得到CPU资源持续运行5秒至第23秒结束。在这种情况下,由于低优先级线程和在不合时宜的时机将优先级提升至了过高的优先级,而此时到来的高优先级线程虽不与、竞争共享资源,但也得不到CPU资源,导致系统效率低下。
在对低优先级及高优先级进行综合调度的情况下,第3秒到来时,考虑到其与、并不竞争资源,且并没有潜在的线程在等待资源,因此,回溯、的优先级提升,在第3秒时,由抢占CPU资源,并持续运行5秒到第8秒结束;考虑到仍占有共享资源,此时将其优先级提升至,继续运行5秒到第13秒时,执行操作,并释放CPU资源;在第13秒时,获得CPU资源和共享资源,执行操作进入临界区,运行10秒后,在第23秒时执行操作并退出临界区,释放CPU资源。在这种情况下,高优先级的线程提前到第3秒执行,低优先级任务、相对延后,提升系统的整体效率。
本实施例中,通过对低优先级线程及高优先级线程进行综合分析,减少优先级反转对高优先级线程造成的延时,并使高优先级线程尽早执行,提升系统的实时性能。
作为本申请的一种实施方式,所述调度单元,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
所述调度单元,采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
本实施例中,根据是否出现线程死锁,来确定提升低优先级线程的优先级的调度策略。线程死锁是两个或两个以上的线程,在执行过程中,由于竞争资源或彼此通信造成的阻塞现象,由于每个线程都在等待其余线程,因此所有线程均处于等待状态,无法继续执行。当出现线程死锁时,采用第一调度策略进行优先级提升,若未出现线程死锁,则采用第二调度策略进行优先级提升。
第一调度策略提升低优先级线程的优先级,具体步骤如下:
(1)确定当前竞争的共享资源的天花板优先级。本实施例中,第一调度策略需要预先规划系统所有共享资源的天花板优先级,天花板优先级表示能够访问该共享资源的线程的最高优先级。本实施例中,为了解决线程死锁,预先设定了每个共享资源对应的天花板优先级。当线程请求访问该共享资源时,调度单元将线程的优先级与该共享资源的天花板优先级进行比较。若线程的优先级低于天花板优先级,则不能访问该共享资源;
(2)将低优先级线程的优先级提升至该天花板优先级,以使该线程能够优先执行。通过将当前占用该共享资源的低优先级线程的优先级,提升至共享资源的天花板优先级,使低优先级线程优先执行,进而解除线程死锁,减少线程阻塞的时间。
第二调度策略提升低优先级线程的优先级,具体步骤如下:
(1)获取当前竞争该共享资源的线程的最高优先级;
(2)将最高优先级继承给该低优先级线程,即,将该低优先级线程的优先级提升至当前的最高优先级,以使该线程能够优先执行。当低优先级线程持有高优先级线程所需的资源时,导致高优先级线程被阻塞,在这种情况下,将该低优先级线程的优先级提升为当前最高优先级,使其能够优先执行,从而减少高优先级线程的阻塞时间。
本实施例中,通过第一调度策略及第二调度策略对占用共享资源的低优先级线程进行优先级提升,从而使该低优先级线程以更高优先级运行,减少被该线程阻塞的高优先级线程的等待时间。
基于同一发明构思,本申请一实施例提供一种任务调度方法。参考图2,图2是本申请一实施例提出的任务调度方法的流程图。如图2所示,该方法包括:
S21:接收目标任务发起的系统调用请求并生成中断;
S22:在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;
S23:在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核。
作为本申请的一种实施方式,所述任务调度方法,还包括:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
作为本申请的一种实施方式,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
作为本申请的一种实施方式,所述任务调度方法,还包括:
在提升所述低优先级线程的优先级之前,获取所述低优先级线程对应的回溯次数,与回溯次数阈值进行比较;若所述回溯次数不小于所述回溯次数阈值,则保持所述线程的优先级为原始优先级;若所述回溯次数小于所述回溯次数阈值,则提升所述低优先级线程的优先级;
在对阻塞所述高优先级线程的低优先级线程进行优先级回溯之后,将进行优先级回溯的低优先级线程对应的回溯次数,增加1。
上述实施例中的调度过程,可能出现低优先级线程的优先级被反复提升及回溯,造成系统负载升高,降低系统效率。在一种实施例中,为了避免对低优先级线程的优先级进行反复造成系统负载过高,因此,对每个线程的回溯次数进行记录,并与回溯次数阈值进行比较。若回溯次数小于回溯次数阈值,则根据是否出现线程死锁来判定采用第一调度策略还是第二调度策略进行优先级提升。在回溯次数小于回溯次数阈值的情况下,采用第一调度策略或第二调度策略对低优先级线程进行优先级提升,使该线程以更高的优先级执行,缩短其他高优先级线程的阻塞时间。
在调度过程中,当线程的优先级被提升后又回溯到其对应的原始优先级后,该线程对应的回溯次数增加1。当一个线程的回溯次数达到回溯次数阈值时,则在本轮调度中跳过对该线程的优先级提升,使其保持原始优先级不变。以此减少系统负载,将资源倾斜到执行实时任务上,进一步提升实时性能。
作为本申请的一种实施方式,所述任务调度方法,还包括:
记录每个线程在历史执行时的执行参数,包括:理想结束时间、实际结束时间、持有共享资源的时间及持续时间;
在每一轮调度后,更新所有线程的执行参数;
基于每个线程的效率及对应的效率权重,计算系统的总效率;
根据所述系统的总效率,调整所述资源占有率阈值、所述效率阈值及所述回溯次数阈值;
在每一轮调度时,基于调整后所述资源占有率阈值、所述效率阈值及所述回溯次数阈值,进行调度。
在一种实施例中,资源占有率阈值、效率阈值及回溯次数阈值,均是根据系统的历史执行情况进行调整的。
记录每个线程的执行参数,在每一轮线程调度并执行之后,对线程的执行参数进行更新,作为下一轮调度的历史数据。执行参数包括:每个线程的理想结束时间、实际结束时间、持有共享资源的时间及线程的持续时间。基于执行参数能够计算线程的效率与资源占有率,以及系统的总效率。
在每一次调度后,根据系统总效率,对资源占有率阈值、效率阈值及回溯次数阈值进行微调,以便在进行下一轮线程调度时采用。通过不断调整各个阈值,使系统的总效率进一步提升。
值得注意的是,对资源占有率阈值、效率阈值及回溯次数阈值进行初始设置时,不宜设置得过高或过低。如果资源占有率阈值、效率阈值设置得过高,则每一次调度都需要多次循环判断,调度时间过长导致系统运行时间变长;如果资源占有率阈值、效率阈值设置得过低,则出现线程死锁的概率升高。若回溯次数阈值设置过高,则出现线程死锁的概率升高;若回溯次数阈值设置过低,则优先级反转概率变高,系统运行时间变长。在初始时应设置大致适合的阈值。例如,可将资源占有率阈值设置为40%,效率阈值设置为35%、回溯次数阈值设置为线程总数的1/3左右。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和部件并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,本申请意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的双内核实时操作系统及任务调度方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种双内核实时操作系统,其特征在于,应用于星务计算机,包括:内核接口、通用内核及实时内核;
所述内核接口,用于接收目标任务发起的系统调用请求并生成中断,在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核;在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;所述内核接口基于Rust语言编写;所述目标任务由地面主机发起;
所述通用内核,用于抽象所述系统的硬件资源,并共享给所述实时内核;在所述目标任务不具有实时响应需求的情况下,作为目标内核执行所述系统调用;所述通用内核为Linux内核,支持的功能包括:用户图形界面交互、网络通信及文件共享;
所述实时内核,用于通过所述内核接口,使用所述通用内核共享的硬件资源;在所述目标任务具有实时响应需求的情况下,作为所述目标内核执行所述系统调用;所述实时内核基于Rust语言编写。
2.根据权利要求1所述的双内核实时操作系统,其特征在于,所述实时内核,包括:
动态库,用于作为所述实时内核的空间接口以支持基本系统调用封装和基本线程同步服务;
C库,用于向基于C语言编写的应用程序提供访问服务的功能;
Rust库,用于向基于Rust语音编写的应用程序提供访问服务的功能;
线程单元,用于创建与执行线程;
调度单元,用于采用以下任一策略进行线程调度:TP策略或QUOTA策略;
时钟单元,用于对所有线程的执行时间进行管控。
3.根据权利要求2所述的双内核实时操作系统,其特征在于,所述调度单元,用于执行以下步骤:
对调度队列中的线程进行调度,确定下一个执行的目标线程;
判断目标线程与上一个线程是否相同;在所述目标线程与所述上一个线程相同的情况下,判定所述目标线程无需切换执行阶段;
在所述目标线程与所述上一个线程不同的情况下,执行以下步骤:判断所述目标线程的上一个线程是否为根线程;在所述上一个线程为根线程的情况下,判定所述目标线程需要切换为带外执行阶段;在所述目标线程的上一个线程不是根线程的情况下,判断所述目标线程的下一个线程是否为根线程;在所述下一个线程为根线程的情况下,判定所述目标线程在执行完成后需要切换为带内执行阶段;
对所述目标线程进行上下文切换,并将所述目标线程置为执行状态。
4.根据权利要求3所述的双内核实时操作系统,其特征在于,所述调度单元,还用于执行以下步骤:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
5.根据权利要求4所述的双内核实时操作系统,其特征在于,所述调度单元,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
所述调度单元,采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
6.一种任务调度方法,其特征在于,应用于权利要求1-5任一所述的双内核实时操作系统,包括:
接收目标任务发起的系统调用请求并生成中断;
在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;
在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核。
7.根据权利要求6所述的任务调度方法,其特征在于,还包括:
检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:
对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;
对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。
8.根据权利要求7所述的任务调度方法,其特征在于,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;
采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。
9.根据权利要求7所述的任务调度方法,其特征在于,还包括:
在提升所述低优先级线程的优先级之前,获取所述低优先级线程对应的回溯次数,与回溯次数阈值进行比较;若所述回溯次数不小于所述回溯次数阈值,则保持所述线程的优先级为原始优先级;若所述回溯次数小于所述回溯次数阈值,则提升所述低优先级线程的优先级;
在对阻塞所述高优先级线程的低优先级线程进行优先级回溯之后,将进行优先级回溯的低优先级线程对应的回溯次数,增加1。
10.根据权利要求9所述的任务调度方法,其特征在于,还包括:
记录每个线程在历史执行时的执行参数,包括:理想结束时间、实际结束时间、持有共享资源的时间及持续时间;
在每一轮调度后,更新所有线程的执行参数;
基于每个线程的效率及对应的效率权重,计算系统的总效率;
根据所述系统的总效率,调整所述资源占有率阈值、所述效率阈值及所述回溯次数阈值;
在每一轮调度时,基于调整后所述资源占有率阈值、所述效率阈值及所述回溯次数阈值,进行调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410324706.7A CN117931412B (zh) | 2024-03-21 | 2024-03-21 | 一种双内核实时操作系统及任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410324706.7A CN117931412B (zh) | 2024-03-21 | 2024-03-21 | 一种双内核实时操作系统及任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117931412A true CN117931412A (zh) | 2024-04-26 |
CN117931412B CN117931412B (zh) | 2024-06-11 |
Family
ID=90755941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410324706.7A Active CN117931412B (zh) | 2024-03-21 | 2024-03-21 | 一种双内核实时操作系统及任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931412B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973266A (zh) * | 2004-04-02 | 2007-05-30 | 西姆毕恩软件有限公司 | 对或涉及用于计算装置的操作系统的改进 |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN112131741A (zh) * | 2020-09-22 | 2020-12-25 | 西安电子科技大学 | 一种实时双内核单机半实物仿真架构及仿真方法 |
CN116225527A (zh) * | 2022-12-02 | 2023-06-06 | 达闼机器人股份有限公司 | 嵌入式系统 |
-
2024
- 2024-03-21 CN CN202410324706.7A patent/CN117931412B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973266A (zh) * | 2004-04-02 | 2007-05-30 | 西姆毕恩软件有限公司 | 对或涉及用于计算装置的操作系统的改进 |
US20080104600A1 (en) * | 2004-04-02 | 2008-05-01 | Symbian Software Limited | Operating System for a Computing Device |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN112131741A (zh) * | 2020-09-22 | 2020-12-25 | 西安电子科技大学 | 一种实时双内核单机半实物仿真架构及仿真方法 |
CN116225527A (zh) * | 2022-12-02 | 2023-06-06 | 达闼机器人股份有限公司 | 嵌入式系统 |
Non-Patent Citations (1)
Title |
---|
LIANG CHENG: "Real-Time Operating Systems for Cyber-Physical Systems: Current Status and Future Research", 2020 INTERNATIONAL CONFERENCES ON INTERNET OF THINGS (ITHINGS) AND IEEE GREEN COMPUTING AND COMMUNICATIONS (GREENCOM) AND IEEE CYBER, PHYSICAL AND SOCIAL COMPUTING (CPSCOM) AND IEEE SMART DATA (SMARTDATA) AND IEEE CONGRESS ON, 31 December 2020 (2020-12-31), pages 419 - 425 * |
Also Published As
Publication number | Publication date |
---|---|
CN117931412B (zh) | 2024-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539498B2 (en) | Interprocess resource-based dynamic scheduling system and method | |
CN111367679B (zh) | 人工智能算力资源复用方法及装置 | |
US8918784B1 (en) | Providing service quality levels through CPU scheduling | |
US8615765B2 (en) | Dividing a computer job into micro-jobs | |
CN111767134A (zh) | 一种多任务动态资源调度方法 | |
JP2003523561A (ja) | 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 | |
WO2009096935A1 (en) | Uniform synchronization between multiple kernels running on single computer systems | |
JP2003298599A (ja) | 分散制御方法及び装置 | |
CN111897637A (zh) | 作业调度方法、装置、主机及存储介质 | |
CN111324432A (zh) | 处理器调度方法、装置、服务器及存储介质 | |
WO2004063879A2 (en) | Context switching for partial and start-over threads in embedded real-time kernel | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN113051054B (zh) | 调度人工智能平台资源的方法、设备和计算机可读存储介质 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN109885340B (zh) | 一种应用程序冷启动加速方法、装置、电子设备 | |
CN114461365A (zh) | 一种进程调度处理方法、装置、设备和存储介质 | |
JP2000056992A (ja) | タスクスケジューリングシステム、方法及び記録媒体 | |
Atlas et al. | Design and implementation of statistical rate monotonic scheduling in KURT Linux | |
CN117931412B (zh) | 一种双内核实时操作系统及任务调度方法 | |
CN116302485A (zh) | Cpu调度方法、装置、电子设备及可读存储介质 | |
RU2450330C2 (ru) | Аппаратно-реализуемый способ выполнения программ | |
CN115617486A (zh) | 基于智能物联网操作系统的任务调度方法、装置及设备 | |
JP2000020323A (ja) | スケジュ―リング装置及び方法並びに記録媒体 | |
CN114035926A (zh) | 应用线程调度方法、装置、存储介质及电子设备 | |
US8694999B2 (en) | Cooperative scheduling of multiple partitions in a single time window |
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 |