掌桥专利:专业的专利平台
掌桥专利
首页

一种适用于受限资源的双任务调度系统及方法

文献发布时间:2023-06-19 18:29:06


一种适用于受限资源的双任务调度系统及方法

技术领域

本发明涉及嵌入式系统任务调度领域,尤其涉及一种适用于受限资源的双任务调度系统及方法。

背景技术

嵌入式系统是以应用为中心、软硬件可剪裁的应用系统,该系统对功能、可靠性、成本、体积、功耗等综合性能有严格的要求。目前,各式各样的嵌入式系统已经广泛应用于家电、通信、仪表等控制领域。因为应用需求不一,不同的嵌入式系统在设计时采用的调度方法有很大的区别,调度机制是衡量系统实时性一个关键因素。

传统的嵌入式系统,分为合作式调度、抢占式调度。其中,合作式调度,多采用while循环模式,提供一种单任务串行执行结构,存在长周期任务阻塞问题,导致系统实时性降低。抢占式调度,多采用“多任务”执行结构,存在临界资源安全问题,并且会导致设备功耗、资源增大。

物联网前端设备,尤其是用于地质灾害监测领域的设备,多以传感器采集和数据处理传输为主,其嵌入式系统主要完成少量多任务工作,多数任务具有一定的阻塞特性,即执行时间受环境影响较大。

采用传统的合作式调度,当任务出现阻塞容易导致其他任务无法执行,影响用户使用,例如,当4G信号不佳时,设备进行4G数据通信时间较长,此时如果使用蓝牙与设备进行指令控制,必须等到4G数据通信完成后(通信成功或者超时退出),使用十分不便。采用传统的抢占式调度,需要牺牲一部分系统所需的额外资源,同时为了保护临界区安全,需要额外设计保护规则,增加设计难度。

发明内容

针对现有技术中存在的技术问题,本发明提供了一种适用于受限资源的双任务调度系统及方法,通过设计一种单抢占式的混合调度方法,在基本不增加额外资源和设计难度的前提下,实现一种资源受限的双任务合理调度。

本发明解决上述技术问题采用的技术方案如下:

本发明提供了一种适用于受限资源的双任务调度系统,包括

前台线程,用于调度存储的可调度任务,所述可调度任务包括长周期可调度任务和短周期可调度任务;

后台线程,用于辅助前台线程完成部分短周期可调度任务,在前台线程执行长周期可调度任务时,通过定时器中断抢占CPU控制权。

进一步地,所述双任务调度系统还包括

非调度任务,

调度器,用于根据中断源产生的可调度任务标记刷新可调度任务标记,将执行态的可调度任务放入调度池中,供前台线程调度;

RTC线程,用于根据中断源触发完成设备不同状态下均存在的非调度任务;

专用线程,用于根据中断源触发完成中断后需要处理的非调度任务;

中断源,用于产生各种可调度任务标记,提供系统所需的中断功能。

进一步地,所述调度器还用于完成系统基准时间计数、LED指示任务、串口超时控制中的至少一种非调度任务。

进一步地,所述RTC线程完成的非调度任务为喂狗任务、低功耗模式下的相关非调度任务中的至少一种;所述专用线程完成的非调度任务为IO防抖、数据接收中的至少一种。

进一步地,所述调度器的入口为定时器中断;所述RTC线程的入口为RTC中断;所述专用线程的入口为串口中断和/或IO中断;所述中断源提供定时器中断、RTC中断、串口中断和/或IO中断。

进一步地,所述非调度任务为独立的周期任务,无阻塞特性,定期执行,不与其他任务交互,不参与调度;所述可调度任务需要与其他任务结合完成设备工作,具有阻塞特性,参与调度。

本发明还提供了一种适用于受限资源的双任务调度方法,包括如下步骤向任务池添加可调度任务,启动前台线程、后台线程;

当任务池中有可调度任务需要被执行时,刷新可调度任务标记为执行态,并进入调度池;

前台线程检测调度池中的可调度任务,开始执行任务,任务执行完成后,进行下一次检测;

后台线程检测调度池中的可调度任务,判断该可调度任务是否是短周期可调度任务,同时检查前台线程执行任务是否是长周期可调度任务,如果是则开始执行任务,任务执行完成后,进行下一次检测,如果不是,等待下一次检测。

进一步地,所述双任务调度方法还包括如下步骤

系统启动前台线程、后台线程的同时,还启动调度器、RTC线程、专用线程和中断源;

RTC线程按照设定的周期执行非调度任务;

专用线程接收串口中断和/或IO中断响应执行非调度任务;

调度器按照设定的周期执行非调度任务,循环监测任务池中的可调度任务是否需要执行,如果需要执行,进行标记更新,进入调度池。

进一步地,所述后台线程的定时器中断周期时间为1~10s。

进一步地,所述串口中断为蓝牙串口中断、调试串口中断、4G串口中断、传感器串口中断中的至少一种,所述IO中断为传感器IO中断、开机IO中断、蓝牙IO中断中的至少一种。

本发明的有益效果:

本发明提供的一种适用于受限资源的双任务调度系统及方法,该方法在前台线程执行长周期可调度任务时,利用后台线程抢占CPU完成短周期可调度任务,同时,线程内任务采用合作式调度,实现混合调度。该方法将任务作为一个整体,从线程抢占的角度出发,实现双任务调度,可以避免增加额外的资源以及设计难度,比较适用于资源受限的情况。

附图说明

图1示出了根据本发明的具体实施例提供的一种适用于受限资源的双任务调度系统组成示意图;

图2示出了根据本发明的具体实施例提供的一种适用于受限资源的双任务调度方法流程示意图;

图3示出了根据本发明的具体实施例提供的一种适用于受限资源的双任务调度方法调度示例示意图。

其中,上述附图包括以下附图标记:

10、中断源;20、可调度任务;21、非调度任务;30、调度器;40、前台线程;50、后台线程;60、专用线程;70、RTC线程。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

针对地质灾害监测领域的设备使用需求,本发明提供了一种适用于受限资源的双任务调度系统及方法,其主要原理为:设计用于存储可调度任务和非调度任务的任务模块,用于调度存储的可调度任务的前台线程,以及用于辅助前台线程完成部分短周期可调度任务的后台线程,在前台线程执行长周期可调度任务时,利用后台线程抢占CPU完成短周期可调度任务。该方法将任务作为一个整体,从线程抢占的角度出发,实现双任务调度,可以避免增加额外的资源以及设计难度,比较适用于资源受限的情况。

同时,通过设计调度器、RTC线程、专用线程、中断源等模块,完成任务标记刷新等非调度任务、以及中断周期控制等处理。

具体的,本发明提供了一种适用于受限资源的双任务调度系统,如图1所示,其组成包括任务模块、前台线程40、后台线程50、调度器30、RTC线程70、专用线程60以及中断源10。任务模块用于存储任务。任务,即嵌入式系统需要实现的某一完整功能,根据任务的特点,可以分为可调度任务20和非调度任务21。前台线程40,即main主函数,是系统执行任务的主要线程,参与可调度任务调度,可被后台线程抢占。后台线程50,由定时器中断实现CPU控制权抢占,定时辅助前台线程完成一些短周期可调度任务(当前台线程执行长周期可调度任务时,后台线程才可抢占CPU,完成短周期可调度任务),参与可调度任务调度,不可被抢占。调度器30,主要完成系统基准时间计数、LED指示任务、串口超时控制、可调度任务标记刷新等短周期非调度任务,不参与可调度任务调度。RTC线程70,主要完成设备不同状态下均存在的非调度任务,由RTC中断实现,完成喂狗任务以及低功耗模式下的相关非调度任务,不参与可调度任务调度。专用线程60,主要完成中断后需要处理的非调度任务,即各种IO和串口中断,仅处理IO防抖、数据接收等非调度任务,不参与可调度任务调度。各种IO和串口中断包括蓝牙串口中断、调试串口中断、4G串口中断、传感器串口中断、传感器IO中断、开机IO中断、蓝牙IO中断等。中断源10主要用于产生各种任务标记,依赖芯片硬件平台提供的中断功能。

需要说明的是,本发明中,非调度任务主要是一些独立的周期任务,时间较短,无阻塞特性,相对独立,不与其他任务交互,因此不参与任务调度。可调度任务一般与其他任务结合完成设备工作,时间长短不一,具有阻塞特性,需要任务调度。

可调度任务主要由前台线程和后台线程完成。非调度任务主要由调度器、RTC线程和专用线程完成。

可调度任务,分为执行态和非执行态。执行态表示任务需要执行,非执行态表示任务不需要执行。

需要说明的是,后台线程主要辅助前台线程完成一些短周期可调度任务,不执行长周期可调度任务。通过定时中断进行CPU控制权抢占(即抢占前台线程),可以设置周期时间N,一般1~10s之内。

需要说明的是,本发明中抢占是指:当前台线程执行长周期可调度任务时,后台线程可抢占并执行短周期可调度任务,当前台线程执行短周期可调度任务时,不可被后台线程抢占。

需要说明的是,本发明中RTC线程主要完成设备不同状态下均存在的非调度任务。如设备低功耗状态下,其他线程均停止,只有RTC线程存在执行一些非调度任务。

具体的,对于上述双任务调度系统,本发明还提供了一种适用于受限资源的双任务调度方法,包括如下步骤:

步骤一:系统上电后,进行系统运行初始化,并向任务池添加可调度任务。然后启动前台线程、后台线程、调度器、RTC线程、专用线程和中断源。

步骤二:各线程并行处理,如下

RTC线程启动后,按照设定的周期执行非调度任务,独立运行,不参与可调度任务调度,其中RTC线程任务执行状态依靠任务标记判断。

专用线程启动后,接收串口中断和/或IO中断响应执行非调度任务,独立运行,不参与可调度任务调度。

调度器启动后,按照设定的周期执行非调度任务,独立运行,不参与可调度任务调度,当任务池中有可调度任务需要被执行时,刷新可调度任务标记为执行态,并进入调度池。

前台线程启动后,检测调度池中是否有可调度任务需要执行。如果没有可调度任务需要执行,等待下一次检测。如果有可调度任务需要执行,则开始执行任务,任务执行完成后,进行下一次检测。

后台线程启动后,检测调度池中是否有可调度任务需要执行。如果没有可调度任务需要执行,等待下一次检测。如果有可调度任务需要执行,判断该任务是否是短周期可调度任务,同时检查前台线程执行任务是否是长周期可调度任务,如果是则开始执行任务,任务执行完成后,进行下一次检测。如果不是,等待下一次检测。

下面结合附图,通过具体实施方式,详细地描述本发明的技术方案。

如图1所示,中断源10中:定时1中断作为后台线程抢占CPU控制权的入口,设置定时周期为3s;RTC中断,作为RTC线程的入口,设置定时周期为5s;定时2中断,作为调度器的入口,设置定时周期为100ms;串口中断和IO中断,作为专用线程的入口。

可调度任务20包括供电管理任务、温度数据采集任务、GPS数据采集任务、数据存储任务、蓝牙数据通信任务、4G数据通信任务等。其中GPS数据采集任务和4G数据通信任务为长周期任务,其余为短周期任务。

非调度任务21非调度任务包括基准时间计数任务、LED灯指示任务、看门狗喂狗任务、可调度任务标记刷新任务等。

调度器30,执行基准时间计数任务、LED灯指示任务、可调度任务标记刷新任务。

前台线程40,执行供电管理任务、温度数据采集任务、GPS数据采集任务、数据存储任务、4G数据通信任务和蓝牙数据通信任务。后台线程50,辅助前台线程40完成温度数据采集任务和数据存储任务。

专用线程60,完成串口中断和IO中断的数据和状态接收。

RTC线程70,完成看门狗喂狗任务。

如图2、图3所示,本实施例中,双任务调度系统的调度流程如下:

步骤一:系统上电后,进行系统进行时钟、中断等初始化,并向任务池添供电管理任务、GPS数据采集任务、温度数据采集任务、数据存储任务、4G数据通信任务、蓝牙数据通信任务。然后启动前台线程、后台线程、调度器、RTC线程、专用线程和中断源。

步骤二:RTC线程启动后,按照设定的周期5s执行看门狗喂狗任务。

步骤三:专用线程启动后,如果串口中断和IO中断响应,则将串口接收的数据或IO状态标记记录存储,供其他任务使用。

步骤四:调度器启动后,按照设定的周期100ms执行任务,包括基准时间计数任务,记录系统时间基准。LED灯指示任务,根据当前系统的运行状态,控制灯的闪烁频率。可调度任务标记刷新任务,循环监测任务池中的可调度任务是否需要执行,如果需要执行,进行标记更新,进入调度池。

例如此时检测到有多个任务需要执行,标记后进入调度池,调度池中出现任务:供电管理、GPS数据采集、温度数据采集、数据存储、4G数据通信、蓝牙数据通信。

步骤五:前台线程启动后,检测调度池中是否有可调度任务需要执行。此时调度池中有任务需要执行,则按照设定的调度任务顺序依次执行,此时执行供电管理任务,并在后台线程第一次执行前完成,开始执行GPS数据采集任务。

步骤六:后台线程启动后,检测调度池中是否有可调度任务需要执行。此时调度池中有任务需要执行,且为短周期温度数据采集任务。同时检查到前台线程执行长周期可调度任务,因此,后台线程开始执行温度数据采集任务,采集完成后,前台线程继续执行GPS采集任务。

步骤七:前台线程执行完GPS数据采集任务后,开始执行数据存储任务,执行期间,后台线程再次启动,此时前台线程执行短周期可调度任务,后台线程不需要执行任务,直接释放CPU控制权。

步骤八:前台线程完成数据存储任务后,执行4G数据通信任务。执行期间,后台线程再次启动,判断待执行任务为短周期蓝牙数据通信任务,同时判断前台线程处理任务为长周期可调度任务,按照规则执行蓝牙数据通信任务,完成后,释放CPU控制权,前台线程继续执行4G数据通信任务,完成后,整个调度池任务完成。

本发明设计的适用于受限资源的双任务调度系统及方法,采用单抢占式的混合调度方法,在基本不增加额外资源和设计难度的前提下,实现一种资源受限的双任务合理调度,满足地质灾害监测领域的设备使用需求,进而提高设备的可靠性,减少设备维护,降低成本。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 面向协作机制资源受限边缘服务器间任务调度方法
  • 面向协作机制资源受限边缘服务器间任务调度方法
技术分类

06120115588232