一种任务控制方法、装置、设备和介质与流程
本发明涉及计算机操作系统,具体涉及一种任务控制方法、装置、设备和介质。
背景技术:
1、在实时操作系统(英文简称:rtos,英文全称:real time operating system)中,多个任务通常运行在同一特权级下,共享内存空间。任务中的非法访问(如越界访问、野指针等)可能导致内核数据损坏或其他任务异常,从而引发系统崩溃。
2、在rtos中,基于内存保护单元(英文简称:mpu,英文全称:memory protectionunit)或看门狗进行任务管理,但存在如下不足:内存保护机制由于资源数量有限且粒度受限,难以实现多任务环境下的细粒度隔离;当任务异常时,触发系统级复位,无法对单个任务异常进行隔离与恢复;缺乏对任务异常传播的控制能力,异常一旦发生容易扩散至整个系统,且缺乏针对不同异常类型的精细化恢复机制。
3、因此,有必要提供一种在无用户态条件下实现任务级隔离与异常恢复的方法。。
4、由上述描述可知,目前操作系统中任务控制细粒度低、精度差,如何提高任务管理细粒度和精度、进而保证整个操作系统的可靠性,是本领域技术人员亟需解决的技术问题。
技术实现思路
1、为了克服现有任务控制细粒度低、精度差,进而导致操作系统可靠性差的不足,本发明提出了一种任务控制方法、装置、设备和介质。
2、为了实现上述目的,根据本发明的第一方面,本发明实施例提供一种任务控制方法,该方法包括以下步骤:
3、内存中分配每个任务的独立内存区域;
4、任务运行时,通过配置状态寄存器的访问控制位,控制数据访问以受限权限执行以访问其独立内存区域、指令执行以高特权权限执行以访问内存全域;若调用内核函数,在内核入口通过清零其访问控制位解除受限权限,在内核出口通过复位其访问控制位恢复受限权限;
5、任务间交互时,调用内核函数从消息队列中读写消息,或者,动态配置对应任务对内存中预留共享资源区的读写权限以读写消息;
6、响应于任务异常,在独立的异常处理栈,记录异常信息并将任务状态标记为故障状态;
7、屏蔽中断或采用原子操作,隔离故障状态的任务,同时调度执行正常状态的任务;
8、基于异常信息,对故障状态的任务执行重启、降级和删除并释放资源中的任一种操作。
9、可选地,所述内存中分配每个任务的独立内存区域包括,根据每个任务的内存需求、向上对齐分配其独立内存区域;若独立内存区域大于内存需求,将超出内存需求的独立内存区域配置为保护区域,以防止越界访问。
10、可选地,所述在内核出口通过复位其访问控制位恢复其受限权限包括,在调用内核函数期间,由嵌套标识统计嵌套次数,所述嵌套次数在嵌套时累加、在跳出嵌套时累减,当嵌套标识为零时,在内核出口通过复位其访问控制位恢复其受限权限。
11、可选地,所述隔离故障状态的任务,包括执行以下操作中的任一种:
12、将故障状态的任务从调度队列中移出,使其不参与调度;
13、取消故障状态的任务对其独立内存区域的访问权限;
14、将故障状态的任务标记为冻结状态,禁止其执行。
15、可选地,所述基于异常信息,对故障状态的任务执行重启、降级和删除并释放资源中的任一种操作包括:
16、当任务属于重要任务,且在预设时间窗口发生故障的次数小于第一阈值时,执行重启操作,以使任务重新运行;
17、当任务在预设时间窗口发生故障的次数大于所述第一阈值,或者,任务直接访问内核对应内存区域时,执行删除并释放资源操作,以禁止运行并回收其占用资源;
18、当任务申请内存的频率大于第二阈值、且未释放已申请内存,或者,处理器利用率超过第三阈值时,执行降级操作,以降低优先级。
19、可选地,该方法还包括,当所有任务均处于故障状态时,执行空闲任务、系统降级和恢复运行核心中的任一种操作。
20、可选地,当第一任务向第二任务发送数据时,所述任务间交互时,调用内核函数从消息队列中读写数据,包括:
21、第一任务通过调用第一内核函数解除受限权限,将数据发送至消息队列,并在发送完成后恢复受限权限;
22、第二任务通过调用第二内核函数解除受限权限,从消息队列读取数据,并在读取完成后恢复受限权限;
23、所述动态配置对应任务对内存中预留共享资源区的读写权限以读写消息,包括:
24、配置第一任务对预留共享资源区可写权限,将数据写入预留共享资源区;
25、配置第二任务对预留共享资源区可读权限,从预留共享资源区读取数据。
26、根据本发明的第二方面,本发明实施例还提供一种任务控制装置,包括:
27、分配模块,用于内存中分配每个任务的独立内存区域;
28、权限模块,用于任务运行时,通过配置状态寄存器的访问控制位,控制数据访问以受限权限执行以访问其独立内存区域、指令执行以高特权权限执行以访问内存全域;若调用内核函数,在内核入口通过清零其访问控制位解除受限权限,在内核出口通过复位其访问控制位恢复受限权限;
29、交互模块,用于任务间交互时,调用内核函数从消息队列中读写消息,或者,动态配置对应任务对内存中预留共享资源区的读写权限以读写消息;
30、标记模块,用于响应于任务异常,在独立的异常处理栈,记录异常信息并将任务状态标记为故障状态;
31、隔离模块,用于屏蔽中断或采用原子操作,隔离故障状态的任务,同时调度执行正常状态的任务;
32、异常处理模块,用于基于异常信息,对故障状态的任务执行重启、降级和删除并释放资源中的任一种操作。
33、根据本发明的第三方面,本发明实施例还提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如以上任意一个实施例中任务控制方法的步骤。
34、根据本发明的第四方面,本发明实施例还提供一种存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如以上任意一个实施例中任务控制方法的步骤。
35、如上所述,本发明实施例提供的一种任务控制方法、装置、设备和介质,具有以下有益效果:内存中分配每个任务的独立内存区域;任务运行时,通过配置状态寄存器的访问控制位,控制数据访问以受限权限执行以访问其独立内存区域、指令执行以高特权权限执行以访问内存全域;若调用内核函数,在内核入口通过清零其访问控制位解除受限权限,在内核出口通过复位其访问控制位恢复受限权限;任务间交互时,调用内核函数从消息队列中读写消息,或者,动态配置对应任务对内存中预留共享资源区的读写权限以读写消息;响应于任务异常,在独立的异常处理栈,记录异常信息并将任务状态标记为故障状态;屏蔽中断或采用原子操作,隔离故障状态的任务,同时调度执行正常状态的任务;基于异常信息,对故障状态的任务执行重启、降级和删除并释放资源中的任一种操作。本发明基于处理器内存访问控制机制对实时操作系统任务级故障进行隔离与恢复,通过对任务运行时的内存访问行为进行约束,并结合异常捕获、调度协同及资源恢复机制,实现任务级故障的隔离与在线恢复,从而实现了高细粒度、高精度的任务控制,有效避免单一任务异常导致整个系统崩溃,进而提高了系统可靠性。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com