一种线程管理方法、装置、设备及介质与流程

文档序号:25543350发布日期:2021-06-18 20:40
一种线程管理方法、装置、设备及介质与流程

本公开涉及计算机技术领域,尤其涉及一种线程管理方法、装置、设备及介质。



背景技术:

当前的宏内核操作系统(也可简称宏内核)的线程管理方式存在一定问题,诸如,为了保证系统稳定性,宏内核通常设置系统服务线程需要始终保持运行状态,也即其无法被锁住(不然系统会崩溃),只有非系统服务线程可以被锁,宏内核中系统服务线程无法被锁的特性导致执行重要任务的主线程无法独占整个系统资源运行。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种线程管理方法、装置、设备及介质。

本公开实施例提供了一种线程管理方法,所述方法应用于宏内核操作系统,且所述宏内核操作系统中的系统服务线程采用回调函数的形式表征,所述方法包括:基于各系统服务线程的线程功能生成相应的回调函数,并将所述回调函数嵌入至主线程内;当所述主线程开始运行时,锁住其它处于运行状态的线程;当所述主线程运行结束后,调用所述回调函数执行相应的系统服务线程的线程功能。

在一些实施方式中,所述锁住其它处于运行状态的线程的步骤,包括:通过软件触发中断的方式锁住其它处于运行状态的线程。

在一些实施方式中,所述通过软件触发中断的方式锁住其它处于运行状态的线程的步骤,包括:向其它处于运行状态的线程所属的中央处理器发送中断指令;所述中断指令中携带有中断号;通过所述中央处理器调用所述中断号对应的中断处理程序将所述其它处于运行状态的线程从运行状态队列移出至目标状态队列;所述目标状态队列包括挂起队列或睡眠队列。

在一些实施方式中,所述方法还包括:当所述主线程运行结束后,恢复因所述主线程运行而被锁住的其它线程的原有状态。

在一些实施方式中,所述主线程的核心功能的优先级高于嵌入所述主线程内的回调函数的优先级。

本公开实施例还提供了一种线程管理装置,所述装置应用于宏内核操作系统,且所述宏内核操作系统中的系统服务线程采用回调函数的形式表征,所述装置包括:回调函数嵌入模块,用于基于各系统服务线程的线程功能生成相应的回调函数,并将所述回调函数嵌入至主线程内;锁线程模块,用于当所述主线程开始运行时,锁住其它处于运行状态的线程;回调函数执行模块,用于当所述主线程运行结束后,调用所述回调函数执行相应的系统服务线程的线程功能。

在一些实施方式中,所述锁线程模块进一步用于:通过软件触发中断的方式锁住其它处于运行状态的线程。

在一些实施方式中,所述装置还包括:线程恢复模块,用于当所述主线程运行结束后,恢复因所述主线程运行而被锁住的其它线程的原有状态。

本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的线程管理方法。

本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的线程管理方法。

本公开实施例提供的上述技术方案,对宏内核操作系统进行了一定改进,将宏内核操作系统中的系统服务线程采用回调函数的形式表征,首先基于各系统服务线程的线程功能生成相应的回调函数,并将回调函数嵌入至主线程内;当主线程开始运行时,通过中断指令锁住其它处于运行状态的线程;当主线程运行结束后,调用回调函数执行相应的系统服务线程的线程功能。上述方式通过采用回调函数来替代系统服务线程,借助回调函数可实现系统服务线程的功能,不会再面临相关技术中系统服务线程无法被锁的问题,因而能够使主线程运行时将其它运行中的线程都锁住,从而使主线程独占系统资源,集中资源完成核心任务,结束后再调用回调函数执行系统服务线程的线程功能,从而较好保障系统稳定性。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种线程管理方法的流程示意图;

图2为本公开实施例提供的一种线程管理装置的结构示意图;

图3为本公开实施例提供的另一种线程管理装置的结构示意图;

图4为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

宏内核又称单核心,是操作系统核心架构的一种,此架构的特性是整个核心程序都是以核心空间(kernelspace)的身份及监管者模式(supervisormode)来运行。通常而言,宏内核中包含多个线程,主要包括用户线程和内核线程,但在相关技术中,宏内核中的系统服务线程(属于内核线程)被设定需要始终保持运行状态,如果被挂起或终止,则会导致系统崩溃。因而只有非系统服务线程可以被锁,但因系统服务线程的存在而无法同时锁定所有运行的线程,导致执行重要任务的主线程无法独占整个系统资源运行,此外,相关技术中的宏内核还存在诸如因采用信号机制而使管控线程状态具有较长时延等问题,综上,相关技术中的宏内核线程管理方式不佳,为了改善以上至少一种问题,本公开实施例提供了一种线程管理方法、装置、设备及介质,以下进行详细说明。

图1为本公开实施例提供的一种线程管理方法的流程示意图,该方法应用于宏内核操作系统,且宏内核操作系统中的系统服务线程采用回调函数的形式表征,也即,在本公开实施例中的宏内核操作系统中,以回调函数替代系统服务线程,避免系统服务线程占据中央处理器资源,但又可通过回调函数执行相应的系统服务线程的功能,保障系统稳定运行,具体而言,如图1所示,该方法主要包括如下步骤s102至步骤s106:

步骤s102,基于各系统服务线程的线程功能生成相应的回调函数,并将回调函数嵌入至主线程内。其中,主线程又可称为主任务线程。

可以理解的是,宏内核中包含各种维护系统运行的服务线程,每种系统服务线程都具有相应的线程功能,诸如,以系统服务线程是内核调度线程为例,其线程功能主要是实现线程调度。在本公开实施例中,会基于线程功能生成相应的回调函数,每个系统服务线程对应一个回调函数,还可以将生成的回调函数制成回调函数表,嵌入至主线程内以便调用。回调函数的形式具体可根据实际情况进行设置,在此不进行限制。

在一些实施方式中,主线程的核心功能的优先级高于嵌入主线程内的回调函数的优先级,该核心功能又称为主线程的主要功能,具体可根据主线程的线程任务而定,在此不进行限制。优先执行主线程的核心功能,保障主线程能够集中利用系统资源处理任务,然后在核心功能执行完毕后再执行回调函数的功能(也即相应的系统服务线程的功能),以保障主线程稳定运行。

步骤s104,当主线程开始运行时,锁住其它处于运行状态的线程。锁住线程也即使线程不再处于运行状态,在一种实施方式中,可以采用将处于运行状态的线程改为挂起状态或睡眠状态等方式实现。

考虑到相关技术中采用信号机制管控线程状态的方式存在较长时延等问题,本公开实施例可通过软件触发中断的方式锁住其它处于运行状态的线程。相比于信号控制方式,通过软件触发中断的方式可以降低延时,因为信号涉及到传递时延,而软件触发中断会立即响应。

步骤s106,当主线程运行结束后,调用回调函数执行相应的系统服务线程的线程功能。由于回调函数具有相应的系统服务线程的线程功能,因而可继续保障系统稳定运行。

本公开实施例提供的上述方式通过采用回调函数来替代系统服务线程,借助回调函数可实现系统服务线程的功能,不会再面临相关技术中系统服务线程无法被锁的问题,因而能够使主线程运行时将其它运行中的线程都锁住,从而使主线程独占系统资源,集中资源完成核心任务,结束后再调用回调函数执行系统服务线程的线程功能,从而较好保障系统稳定性。

在一些实施方式中,上述通过软件触发中断的方式锁住其它处于运行状态的线程的具体步骤可参照如下步骤a至步骤b执行:

步骤a,向其它处于运行状态的线程所属的中央处理器(centralprocessingunit,cpu)发送中断指令;中断指令中携带有中断号。可以理解的是,中断号不同则相应的中断方式也不同,换言之,中断号用于指示中断方式,该中断方式可采用中断处理程序实现,也即每个中断号对应一个中断处理程序。其中,中断处理程序又可采用中断响应函数表征。在实际应用中,可以预先建立中断表,中断表中记录有中断号与中断响应函数的对应关系。对于其它处于运行状态的线程而言,不同的线程可能对应的中断号不同,因此可以根据各个处于运行状态的线程的自身情况确定相应的中断方式,并有针对性的发送携带与之匹配的中断号的中断指令。

步骤b,通过中央处理器调用中断号对应的中断处理程序将其它处于运行状态的线程从运行状态队列移出至目标状态队列(也可称为目标队列);目标状态队列包括挂起队列或睡眠队列。也即,将处于运行状态的线程改为挂起状态或睡眠状态,则视为锁住该线程,又可称为使该线程放弃cpu。

可以理解的是,线程主要具有如下几种状态:睡眠状态、挂起状态、就绪状态和运行状态。线程处于睡眠状态则表征线程处于睡眠队列,指定时间内被唤醒;线程处于挂起状态则表征线程处于挂起队列,随时可被唤醒;线程处于就绪状态则表征线程处于就绪队列,等待运行;线程处于运行状态则表征线程处于运行队列,正在运行。通过将线程放入不同队列可改变线程状态。

此外,上述方法还包括:当主线程运行结束后,恢复因主线程运行而被锁住的其它线程的原有状态。也即,将其它被锁住的线程再恢复为原有的运行状态。主线程的核心功能完成后可对其它线程执行解锁操作,恢复其它线程的原有状态。

在本公开实施例中,可以按照如下方式将线程改为挂起状态:对于处于睡眠状态或阻塞状态的线程,可直接改变其状态为挂起状态;对于处于运行状态的线程,可对其所处的cpu发送中断指令,通过中断指令相应的中断处理程序(中断响应函数)将其修改为挂起状态,放弃cpu。而在调度时,对于处于挂起状态的线程,可以将其改为非挂起状态,诸如改为运行状态,将其加入至运行队列中,调度其实时运行。

综上所述,本公开实施例提供的上述线程管理方法,通过采用回调函数来替代系统服务线程的功能,可以使主线程运行时将其它运行中的线程都锁住,从而可使主线程独占系统资源,集中资源完成核心任务,结束后再调用回调函数执行系统服务线程的线程功能,从而保障系统稳定性。而且本公开实施例在管控线程时,可通过软件触发中断方式替代相关技术中的信号机制,改善了相关技术中在改变线程状态时存在的信号延时长等问题,较好地保证了线程管控的实时性。

对应于前述线程管理方法,本公开实施例提供了一种线程管理装置,该装置应用于宏内核操作系统,且宏内核操作系统中的系统服务线程采用回调函数的形式表征,图2为本公开实施例提供的一种线程管理装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中,如图2所示,包括:

回调函数嵌入模块202,用于基于各系统服务线程的线程功能生成相应的回调函数,并将回调函数嵌入至主线程内;

锁线程模块204,用于当主线程开始运行时,通过中断指令锁住其它处于运行状态的线程;

回调函数执行模块206,用于当主线程运行结束后,调用回调函数执行相应的系统服务线程的线程功能。

本公开实施例提供的上述装置通过采用回调函数来替代系统服务线程,借助回调函数可实现系统服务线程的功能,不会再面临相关技术中系统服务线程无法被锁的问题,因而能够使主线程运行时将其它运行中的线程都锁住,从而使主线程独占系统资源,集中资源完成核心任务,结束后再调用回调函数执行系统服务线程的线程功能,从而较好保障系统稳定性。

在一些实施方式中,锁线程模块204进一步用于:通过中断指令锁住其它处于运行状态的线程。

在一些实施方式中,锁线程模块204进一步用于:向其它处于运行状态的线程所属的中央处理器发送中断指令;中断指令中携带有中断号;通过中央处理器调用中断号对应的中断处理程序将其它处于运行状态的线程从运行状态队列移出至目标状态队列;目标状态队列包括挂起队列或睡眠队列。

本公开实施例提供了如图3所示的另一种线程管理装置的结构示意图,该装置在图2的基础上,还包括:线程恢复模块302,用于当主线程运行结束后,恢复因主线程运行而被锁住的其它线程的原有状态。

在一些实施方式中,主线程的核心功能的优先级高于嵌入主线程内的回调函数的优先级。

本公开实施例所提供的线程管理装置可执行本发明任意实施例所提供的线程管理方法,具备执行方法相应的功能模块和有益效果。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置实施例的具体工作过程,可以参考方法实施例中的对应过程,在此不再赘述。

本公开实施例还提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述任一的线程管理方法。图4为本公开实施例提供的一种电子设备的结构示意图。如图4所示,电子设备400包括一个或多个处理器401和存储器402。

处理器401可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备400中的其他组件以执行期望的功能。

存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本公开的实施例的线程管理方法以及/或者其它期望的功能。

在一个示例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入装置403还可以包括例如键盘、鼠标等等。

该输出装置404可以向外部输出各种信息,该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图4中仅示出了该电子设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备400还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例提供的线程管理方法。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开实施例中的线程管理方法。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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