一种双内核实时操作系统及任务调度方法

文档序号:37820979发布日期:2024-04-30 17:30阅读:5来源:国知局
一种双内核实时操作系统及任务调度方法

本技术涉及计算机,特别是涉及一种双内核实时操作系统及任务调度方法。


背景技术:

1、实时操作系统(real time operating system,rtos)在卫星的星务计算机中应用广泛,随着商业航天活动的增长和小型卫星的普及,对rtos的需求逐步增加。星务计算机的rtos存在功能单一的问题,不足以满足用户多样化的功能需求。rtos缺少通用操作系统中常用的一些服务,例如图形界面、网络通信、文件系统等。此外,星务计算机的rtos主要是由c语言编写的,其存在一些缺陷。具体地,c语言要求开发人员手动管理内存,包括分配和释放,并且允许指针在未初始化的情况下使用,这可能导致一系列不确定的操作,比如未正确释放内存、指针指向已释放内存或指针未指向明确内存地址,增加内存泄漏的风险。因此,需要提升星务计算机的系统安全性,并对用户提供多样化的服务,以满足用户需求。


技术实现思路

1、有鉴于此,本技术旨在提出一种双内核实时操作系统及任务调度方法,以提升星务计算机的系统安全性,以及向用户提供多样化的服务。

2、为达到上述目的,本技术的技术方案如下:

3、本技术实施例第一方面提供一种双内核实时操作系统,所述操作系统应用于星务计算机,包括:内核接口、通用内核及实时内核;

4、所述内核接口,用于接收目标任务发起的系统调用请求并生成中断,在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核;在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;所述内核接口基于rust语言编写;所述目标任务由地面主机发起;

5、所述通用内核,用于抽象所述系统的硬件资源,并共享给所述实时内核;在所述目标任务不具有实时响应需求的情况下,作为目标内核执行所述系统调用;所述通用内核为linux内核,支持的功能包括:用户图形界面交互、网络通信及文件共享;

6、所述实时内核,用于通过所述内核接口,使用所述通用内核共享的硬件资源;在所述目标任务具有实时响应需求的情况下,作为所述目标内核执行所述系统调用;所述实时内核基于rust语言编写。

7、可选地,所述实时内核,包括:

8、动态库,用于作为所述实时内核的空间接口以支持基本系统调用封装和基本线程同步服务;

9、c库,用于向基于c语言编写的应用程序提供访问服务的功能;

10、rust库,用于向基于rust语音编写的应用程序提供访问服务的功能;

11、线程单元,用于创建与执行线程;

12、调度单元,用于采用以下任一策略进行线程调度:tp策略或quota策略;

13、时钟单元,用于对所有线程的执行时间进行管控。

14、可选地,所述调度单元,用于执行以下步骤:

15、对调度队列中的线程进行调度,确定下一个执行的目标线程;

16、判断目标线程与上一个线程是否相同;在所述目标线程与所述上一个线程相同的情况下,判定所述目标线程无需切换执行阶段;

17、在所述目标线程与所述上一个线程不同的情况下,执行以下步骤:判断所述目标线程的上一个线程是否为根线程;在所述上一个线程为根线程的情况下,判定所述目标线程需要切换为带外执行阶段;在所述目标线程的上一个线程不是根线程的情况下,判断所述目标线程的下一个线程是否为根线程;在所述下一个线程为根线程的情况下,判定所述目标线程在执行完成后需要切换为带内执行阶段;

18、对所述目标线程进行上下文切换,并将所述目标线程置为执行状态。

19、可选地,所述调度单元,还用于执行以下步骤:

20、检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:

21、对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;

22、对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。

23、可选地,所述调度单元,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;

24、所述调度单元,采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。

25、根据本技术实施例的第二方面,提供一种任务调度方法,该方法应用于本技术实施例的第一方面所提供的双内核实时操作系统,所述方法包括:

26、接收目标任务发起的系统调用请求并生成中断;

27、在所述目标任务不具有实时响应需求的情况下,将所述中断分发到通用内核;在所述目标任务具有实时响应需求的情况下,将所述中断分发到实时内核。

28、可选地,所述任务调度方法,还包括:

29、检测所述实时内核中,线程间是否存在资源竞争;在存在资源竞争的情况下,执行以下步骤:

30、对低优先级线程,执行以下步骤:在出现线程死锁的情况下,采用第一调度策略,提升所述低优先级线程的优先级;在不存在线程死锁的情况下,采用第二调度策略,提升所述低优先级线程的优先级;在所述低优先级线程执行完毕后,恢复对应的原始优先级,并释放对应的资源;

31、对高优先级线程,执行以下步骤:计算所述高优先级线程的资源占有率及效率;将所述资源占有率与资源占有率阈值进行比较;将所述效率与效率阈值进行比较;在所述资源占有率低于所述资源占有率阈值,且所述效率低于所述效率阈值的情况下,将阻塞所述高优先级线程的低优先级线程进行优先级回溯,恢复对应的原始优先级。

32、可选地,采用第一调度策略,提升所述低优先级线程的优先级,具体包括:获取所述低优先级线程占用的共享资源的天花板优先级;将所述低优先级线程的优先级,提升至所述天花板优先级;

33、采用第二调度策略,提升所述低优先级线程的优先级,具体包括:获取当前竞争所述低优先级线程占用的共享资源的线程的最高优先级;将所述低优先级线程的优先级,提升至所述最高优先级。

34、可选地,所述任务调度方法,还包括:

35、在提升所述低优先级线程的优先级之前,获取所述低优先级线程对应的回溯次数,与回溯次数阈值进行比较;若所述回溯次数不小于所述回溯次数阈值,则保持所述线程的优先级为原始优先级;若所述回溯次数小于所述回溯次数阈值,则提升所述低优先级线程的优先级;

36、在对阻塞所述高优先级线程的低优先级线程进行优先级回溯之后,将进行优先级回溯的低优先级线程对应的回溯次数,增加1。

37、可选地,所述任务调度方法,还包括:

38、记录每个线程在历史执行时的执行参数,包括:理想结束时间、实际结束时间、持有共享资源的时间及持续时间;

39、在每一轮调度后,更新所有线程的执行参数;

40、基于每个线程的效率及对应的效率权重,计算系统的总效率;

41、根据所述系统的总效率,调整所述资源占有率阈值、所述效率阈值及所述回溯次数阈值;

42、在每一轮调度时,基于调整后所述资源占有率阈值、所述效率阈值及所述回溯次数阈值,进行调度。

43、本技术所提供的双内核实时操作系统,包括通用内核级实时内核,其中,实时内核采用rust语言编写,用于执行具有实时相应需求的目标任务;通用内核为linux内核,用于执行不具有实时响应需求的目标任务。本技术中,通用内核支持的用户服务包括但不限于:图形界面交互、网络通信及文件共享等用户服务。内核接口用于连接通用内核与实时内核,在接收到系统调用请求时,根据目标任务的类型,将中断分发到对应的内核中执行。

44、本技术提供的双内核实时操作系统,通过结合实时内核与通用内核,使操作系统同时具备实时任务响应与多样化服务的功能性,两个内核使用同一套硬件资源,允许实时任务和非实时任务在一个硬件平台上运行,从而提高系统的资源利用率。对于地面主机发出的目标任务,由内核接口根据目标任务的类型灵活选择进行分发,由于两个内核之间仅通过内核接口进行连接,因此具有较好的隔离性,当任一内核出现故障不会影响到另一内核的正常运行。此外,由于内核接口与实时内核均采用rust语言编写,相比于采用c语言编写的实时操作系统,其内存安全问题得到改善,提升了系统的安全性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1