一种任务处理的方法及装置与流程

文档序号:34670284发布日期:2023-07-05 16:17阅读:18来源:国知局
一种任务处理的方法及装置与流程

本技术涉及计算机,具体涉及一种任务处理的方法及装置。


背景技术:

1、随着硬件技术的发展,计算机系统的计算资源越来越丰富,有成百甚至上千个处理核,每个核的计算速度也越来越快。另一方面,软件系统需要处理的线程或进程等任务也越来越多,任务之间的切换次数也大大增加,对性能的要求越来越高。

2、计算机系统包括用户态和内核态,用户态的线程a在切换到用户态的线程b时,需要先进入内核态,在内核态完成从线程a的用户态上下文、内核态上下文以及线程a的所有调度状态到线程b的内核态上下文、用户态上下文以及线程b的所有调度状态的切换后,才能从线程a切换到线程b,这导致切换效率低下,影响计算机系统的性能。


技术实现思路

1、本技术实施例提供一种任务处理的方法,用于提高用户态任务的切换效率,提升计算机系统的性能。本技术实施例还提供了相应的装置、设备、计算机可读存储介质,以及计算机程序产品等。

2、本技术第一方面提供一种任务处理的方法,该方法应用于计算机系统中,该计算机系统包括用户态和内核态,用户态包括多个任务,任务为线程或进程,该方法包括:在内核态,检测进入内核入口的第一请求的类型,内核入口为从用户态到内核态的入口,第一请求是用户态的第一任务触发的;当第一请求的类型指示第一任务在用户态暂停,则至少从第一任务的用户态上下文切换到第二任务的用户态上下文,并记录第一任务的第一调度状态,第一任务的第一调度状态为第一任务在用户态处于暂停状态以及第一任务从开始运行到暂停的运行时间;在用户态运行第二任务。

3、本技术中,计算机系统可以为服务器、终端设备或虚拟机(virtual machine,vm)。内核态和用户态是操作系统(operating system,os)的两种模式或两种状态,内核态通常也称为特权状态,用户态通常也称为非特权状态。进程是资源分配的最小单位,线程是操作系统调度(处理器调度)的最小单位。一个进程可以包括一个或多个线程。

4、本技术中,内核入口可以是系统调用的入口,异常入口或中断入口等任意一种可以从用户态进入内核态的入口。

5、本技术中,用户态上下文指的是任务在用户态运行所必不可少的一组数据,如处理器的寄存器中的数据。从第一任务的用户态上下文切换到第二任务的用户态上下文指的是将第一任务在用户态运行所需要的数据从寄存器中移出,将第二任务在用户态运行所需要的数据写入到寄存器中。以上寄存器可以包括通用寄存器、程序计数器(programcounter,pc)、程序状态寄存器(program state,ps)等任意一个或多个。

6、本技术中,任务的调度状态可以包括任务处于运行状态或暂停状态,以及任务运行的时间长度,也就是任务从开始运行到暂停的运行时间,以及是否进队列或出队列,是否发生阻塞、中断或异常,是否被其他线程调用等状态。本技术中,第一任务的第一调度状态包括第一任务在用户态处于暂停状态以及第一任务从开始运行到暂停的运行时间,第一任务的第二调度状态指的是第一任务的所有调度状态中除第一调度状态之外的调度状态。

7、由上述第一方面可知,当第一任务的第一请求从用户态进入内核态后,通过检测第一请求的类型,确定第一任务在用户态暂停,则只记录该第一任务在用户态处于暂停状态以及第一任务从开始运行到暂停的运行时间,其他调度状态均不做处理,这样,在从第一任务切换到第二任务进行运行的过程中,可以减少处理的内容,提高切换效率,从而提高计算机系统的性能。

8、上述第一方面中,第一请求的类型可以为预先配置的请求类型,或者非预先配置的请求类型,非预先配置的请求类型指的是不属于预先配置的请求类型的请求类型。

9、本技术中,预先配置的请求类型与业务场景相关,在业务场景中,预先配置的请求类型出现的次数高于业务场景中非预先配置的请求类型出现的次数。

10、本技术中,对一些业务场景中的预先配置的请求类型列举如下:

11、在侧重文件系统的业务场景中,该预先配置的请求类型可以是对文件、目录、软链接的内容、文件属性进行创建、读操作、写操作,对文件描述符进行控制操作、管理操作,文件监控操作等类型中的一种或者多种,不同的请求类型可以使用不同的标识来表示,如:对文件进行创建操作的请求类型可以用00001来表示,对文件进行读操作的请求类型可以用00002来表示,当然,也可以用其他的方式来表示不同的请求类型,只要能确定出是相应的请求类型即可,本技术中对请求类型的具体表现形式不做限定。

12、在侧重网络系统的业务场景中,该预先配置的请求类型可以是接收数据包的请求类型,发送数据包的请求类型或者监听的请求类型中的一种或多种。

13、在侧重硬件驱动输入/输出(input/output,io)的业务场景中,该预先配置的请求类型可以是驱动io的请求类型。

14、在侧重io多路复用的业务场景中,该预先配置的请求类型可以是io操作的请求类型。

15、在侧重时钟(timer)操作的业务场景中,该预先配置的请求类型可以是时钟请求类型。

16、在侧重内存操作的业务场景中,该预先配置的请求类型可以是与内存请求相关的请求类型。

17、在侧重信号处理的业务场景中,该预先配置的请求类型可以是等待信号的请求类型。

18、在侧重进程间通信的业务场景中,该预先配置的请求类型可以是远程过程调用(remote procedure call,rpc)的请求类型,发送消息的请求类型,同步锁操作的请求类型。

19、在侧重文件系统管理的业务场景中,该预先配置的请求类型可以是mount的请求类型,获取状态的请求类型。

20、在侧重异步操作的场景中,该预先配置的请求类型可以是将同步操作转换为异步操作的请求类型。

21、以上只是一些示例,在不同的业务场景,预先配置的请求类型的选择可以根据实际情况确定,本技术中对此不做限定。

22、在第一方面的一种可能的实现方式中,上述第一方面中的步骤:当第一请求的类型指示第一任务在用户态暂停,至少从第一任务的用户态上下文切换到第二任务的用户态上下文,具体为:当第一请求的类型指示第一任务在用户态暂停,且第一请求的类型为预先配置的请求类型时,则只从第一任务的用户态上下文切换到第二任务的用户态上下文。

23、该种可能的实现方式中,当第一请求的类型为预先配置的请求类型时,只需要切换从第一任务到第二任务的用户态上下文,不需要切换从第一任务到第二任务的内核态上下文,减少了所切换的内容,提高了切换效率。

24、在第一方面的一种可能的实现方式中,上述第一方面中的步骤:第一请求的类型指示第一任务在用户态暂停,至少从第一任务的用户态上下文切换到第二任务的用户态上下文,具体为:当第一请求的类型指示第一任务在用户态暂停,且第一请求的类型是非预先配置的请求类型时,则从第一任务的用户态上下文切换到第二任务的用户态上下文,且从第一任务的内核态上下文切换到第二任务的内核态上下文。

25、该种可能的实现方式中,内核态上下文指的是支持任务运行的一组内核态的数据。当第一请求的类型是非预先配置的请求类型,如一些业务场景中的中断请求或异常请求不属于预先配置的请求类型,当在内核态检测到中断请求或异常请求时,则在切换用户态上下文时,还切换内核态上下文,该种实现方式中,依然不需要处理第一任务的所有调度状态,还是可以提高任务的切换效率。

26、在第一方面的一种可能的实现方式中,该方法还包括:在用户态运行第二任务之后,该方法还包括:检测进入内核入口的第二请求的类型,第二请求是用户态的目标任务触发的,目标任务为第二任务或者在第二任务之后连续运行的至少一个任务中的最后一个,第二任务和至少一个任务都触发了预先配置的请求类型的请求;当第二请求的类型指示目标任务在用户态暂停,且第二请求类型为预先配置的请求类型时,记录目标任务的第一调度状态,并只从目标任务的用户态上下文切换到第三任务的用户态上下文,其中,目标任务的第一调度状态包括目标任务在用户态处于暂停状态以及目标任务从开始运行到暂停的运行时间;在用户态运行第三任务。

27、该种可能的实现方式中,当通过只切换用户态上下文以及记录第一任务的第一调度状态从第一任务切换到第二任务后,第二任务或者连续的几个任务都发起了预先配置的请求类型的请求,则每次任务切换都只需要切换任务的用户态上下文,不需要切换任务的内核态上下文,这样进一步提高了任务切换的效率。

28、在第一方面的一种可能的实现方式中,在用户态运行第二任务之后,该方法还包括:检测进入内核入口的第二请求的类型,第二请求是用户态的目标任务触发的,目标任务为第二任务或者在第二任务之后连续运行的至少一个任务中的最后一个,当目标任务为至少一个任务中的最后一个时,第二任务,以及至少一个任务中在目标任务之前运行的每个任务都触发了预先配置的请求类型的请求;当第二请求的类型指示目标任务在用户态暂停,且第二请求类型是非预先配置的请求类型时,则记录目标任务的第一调度状态,并从第一任务的内核态上下文切换到目标任务的内核态上下文,其中,目标任务的第一调度状态包括目标任务在用户态处于暂停状态以及目标任务从开始运行到暂停的运行时间。

29、该种可能的实现方式中,当通过只切换用户态上下文以及记录第一任务的第一调度状态从第一任务切换到第二任务后,第二任务发起了非预先配置的请求类型的第二请求,或者,第二任务以及连续的几个任务都发起了预先配置的请求类型的请求,到目标任务时才发起了非预先配置的请求类型的第二请求,则需要从第一任务的内核态上下文直接切换到目标任务的内核态上下文,减少了所切换的内容,提高了切换效率。

30、在第一方面的一种可能的实现方式中,当目标任务没有被阻塞时,在从第一任务的内核态上下文切换到目标任务的内核态上下文之后,该方法还包括:返回用户态继续运行目标任务。

31、该种可能的实现方式中,当从第一任务的内核态上下文切换到目标任务的内核态上下文,如果目标任务没有阻塞,则可以返回用户态继续运行该目标任务,实现了目标任务的快速恢复。

32、在第一方面的一种可能的实现方式中,当目标任务被阻塞时,该方法还包括:通过原生调度流程调度第三任务,并从目标任务切换到第三任务,原生调度流程需要处理从第一任务到至少一个任务中每个任务的所有调度状态;在用户态运行第三任务。

33、该种可能的实现方式中,当从第一任务的内核态上下文切换到目标任务的内核态上下文之后,如果目标任务被阻塞,则需要走原生调度流程调度第三任务。原生调度流程指的是任务切换的过程中不仅要切换用户态上下文、内核态上下文还要处理切换前的任务的所有调度状态的流程。本技术中,在实现快速切换的同时,还保持了对原生调度流程的兼容性。

34、在第一方面的一种可能的实现方式中,上述步骤中的:通过原生调度流程调度第三任务,具体为:将从第一任务到至少一个任务中每个任务的第二调度状态,由每个任务开始运行时的调度状态修改为确定对第三任务执行原生调度流程时对应每个任务的调度状态,其中,每个任务的第二调度状态为每个任务的所有调度状态中除每个任务的第一调度状态之外的调度状态。

35、该种可能的实现方式中,在执行原生调度流程时,需要同步第一任务、第二任务以及至少一个任务中的每个任务的最新调度状态,这样可以使内核不感知第一任务、第二任务以及至少一个任务之前发生的快速切换,这样,这些任务之前发生的切换完全不会影响到原生调度流程,很好的兼容了原生调度流程。

36、在第一方面的一种可能的实现方式中,上述步骤:检测进入内核入口的第一请求的类型之前,该方法还包括:保存第一任务的用户态上下文;当第一请求的类型为预先配置的请求类型时,则将第一任务的用户态上下文保存为目标上下文,目标上下文用于第一任务下次被调度时使用。

37、该种可能的实现方式中,在第一任务触发了第一请求后,先暂时保存第一任务的用户态上下文,当确定为该第一任务执行快速切换后,可以将暂时保存的第一任务的用户态上下文保存为目标上下文,这样在第一任务下次被调度时,可以直接使用该目标上下文,有利于将第一任务快速恢复到用户态执行。

38、在第一方面的一种可能的实现方式中,在远程过程调用rpc的调度中,第一请求中包括第二任务的信息,第二任务的信息用于调度第二任务。

39、该种可能的实现方式中,第一任务在发起第一请求时,计算机系统会在用户态直接指定所要切换的第二任务的信息,该第二任务的信息可以是第二任务的标识。这样,在内核态,计算机系统可以直接根据该第二任务的信息调度第二任务来切换,进一步提高了任务切换的效率。

40、在第一方面的一种可能的实现方式中,该方法还包括:记录第一请求与第一任务关联的信息;通过运行第二任务,以得到返回结果;根据与第一任务关联的信息,将返回结果返回给第一任务;从第二任务切换回第一任务继续运行。

41、该种可能的实现方式中,在rpc场景中,可以通过记录第一请求与第一任务相关的信息,在得到第二任务的返回结果后,根据该与第一任务相关的信息,将返回结果返回给第一任务,并切换会第一任务继续运行。

42、在第一方面的一种可能的实现方式中,第二任务位于第一队列,第一队列为先入先出(first in,first out,fifo)队列,第二任务为第一队列的所有任务中最先进入第一队列的任务。

43、该种可能的实现方式中,第一队列也可以称为快速队列,第一队列的维护方式就是先入先出,在需要从第一队列中调度任务时,只需要调度当前在第一队列的任务中最新进入第一队列的任务。

44、在第一方面的一种可能的实现方式中,在简化公平调度的调度中,在执行针对第三任务的原生调度流程之前,该方法还包括:将第一队列中的任务,以及第一队列中的任务的调度状态同步到第二队列,并将第三任务从第一队列中已输出的信息同步给第二队列,第二队列是用于原生调度流程的队列;将第一队列中的任务在第二队列中的位置信息同步给第一队列,位置信息用于调整第一队列中的任务在第一队列中的位置。

45、该种可能的实现方式中,第二队列可以称为慢速队列,该慢速队列用于执行原生调度流程。在执行原生调度流程之前,需要将快速队列中的任务都同步给慢速队列,这样,更有利于兼容原生调度流程。快速队列中的任务在同步到慢速队列后,在慢速队列中可能会根据各任务的实际情况做重新排列,将这些任务插入到慢速队列中的合适位置,然后将快速队列中的至少一个任务在慢速队列中的位置信息同步给快速队列,使快速队列根据这些位置信息优化至少一个任务在快速队列中的顺序,这样可以使快速队列中的任务得到更多公平被调度的机会。

46、本技术第二方面提供一种任务处理的装置,该置包括用户态和内核态,用户态包括多个任务,任务为线程或进程,该装置包括:检测单元、第一处理单元和第二处理单元,这几个单元的功能如下:

47、检测单元,用于在内核态,检测进入内核入口的第一请求的类型,内核入口为从用户态到内核态的入口,第一请求是用户态的第一任务触发的。

48、第一处理单元,用于当检测单元检测的第一请求的类型指示第一任务在用户态暂停,则至少从第一任务的用户态上下文切换到第二任务的用户态上下文,并记录第一任务的第一调度状态,第一任务的第一调度状态为第一任务在用户态处于暂停状态以及第一任务从开始运行到暂停的运行时间。

49、第二处理单元,用于在用户态运行第一处理单元切换的第二任务。

50、由上述第二方面可知,当第一任务的第一请求从用户态进入内核态后,通过检测第一请求的类型,确定第一任务在用户态暂停,则只记录该第一任务在用户态处于暂停状态以及第一任务从开始运行到暂停的运行时间,其他调度状态均不做处理,这样,在从第一任务切换到第二任务进行运行的过程中,可以减少处理的内容,提高切换效率,从而提高计算机系统的性能。

51、在第二方面的一种可能的实现方式中,第一处理单元,具体用于当第一请求的类型指示第一任务在用户态暂停,且第一请求的类型为预先配置的请求类型时,则只从第一任务的用户态上下文切换到第二任务的用户态上下文。

52、在第二方面的一种可能的实现方式中,第一处理单元,具体用于当第一请求的类型指示第一任务在用户态暂停,且第一请求的类型是非预先配置的请求类型时,则从第一任务的用户态上下文切换到第二任务的用户态上下文,且从第一任务的内核态上下文切换到第二任务的内核态上下文。

53、在第二方面的一种可能的实现方式中,预先配置的请求类型与业务场景相关,在业务场景中,预先配置的请求类型出现的次数高于业务场景中非预先配置的请求类型出现的次数。

54、在第二方面的一种可能的实现方式中,检测单元,还用于检测进入内核入口的第二请求的类型,第二请求是用户态的目标任务触发的,目标任务为第二任务或者在第二任务之后连续运行的至少一个任务中的最后一个,第二任务和至少一个任务都触发了预先配置的请求类型的请求。

55、第一处理单元,还用于当第二请求的类型指示目标任务在用户态暂停,且第二请求类型为预先配置的请求类型时,记录目标任务的第一调度状态,并只从目标任务的用户态上下文切换到第三任务的用户态上下文,其中,目标任务的第一调度状态包括目标任务在用户态处于暂停状态以及目标任务从开始运行到暂停的运行时间。

56、第二处理单元,还用于在用户态运行第三任务。

57、在第二方面的一种可能的实现方式中,检测单元,还用于检测进入内核入口的第二请求的类型,第二请求是用户态的目标任务触发的,目标任务为第二任务或者在第二任务之后连续运行的至少一个任务中的最后一个,当目标任务为至少一个任务中的最后一个时,第二任务,以及至少一个任务中在目标任务之前运行的每个任务都触发了预先配置的请求类型的请求。

58、第一处理单元,还用于当第二请求的类型指示目标任务在用户态暂停,且第二请求类型是非预先配置的请求类型时,则记录目标任务的第一调度状态,并从第一任务的内核态上下文切换到目标任务的内核态上下文,其中,目标任务的第一调度状态包括目标任务在用户态处于暂停状态以及目标任务从开始运行到暂停的运行时间。

59、在第二方面的一种可能的实现方式中,第二处理单元,还用于当目标任务没有被阻塞时,返回用户态继续运行目标任务。

60、在第二方面的一种可能的实现方式中,第一处理单元,还用于当目标任务被阻塞时,通过原生调度流程调度第三任务,并从目标任务切换到第三任务,原生调度流程需要处理从第一任务到至少一个任务中每个任务的所有调度状态。

61、第二处理单元,还用于在用户态运行第三任务。

62、在第二方面的一种可能的实现方式中,第一处理单元,具体用于将从第一任务到至少一个任务中每个任务的第二调度状态,由每个任务开始运行时的调度状态修改为确定对第三任务执行原生调度流程时对应每个任务的调度状态,其中,每个任务的第二调度状态为每个任务的所有调度状态中除每个任务的第一调度状态之外的调度状态。

63、在第二方面的一种可能的实现方式中,在远程过程调用rpc的调度中,第一请求中包括第二任务的信息,第二任务的信息用于调度第二任务。

64、在第二方面的一种可能的实现方式中,第二处理单元,还用于记录第一请求与第一任务关联的信息;通过运行第二任务,以得到返回结果;根据与第一任务关联的信息,将返回结果返回给第一任务;从第二任务切换回第一任务继续运行。

65、在第二方面的一种可能的实现方式中,第二任务位于第一队列,第一队列为先入先出队列,第二任务为第一队列的所有任务中最先进入第一队列的任务。

66、在第二方面的一种可能的实现方式中,在简化公平调度的场景,第二处理单元,还用于将第一队列中的任务,以及第一队列中的任务的调度状态同步到第二队列,并将第三任务从第一队列中已输出的信息同步给第二队列,第二队列是用于原生调度流程的队列;将第一队列中的任务在第二队列中的位置信息同步给第一队列,位置信息用于调整第一队列中的任务在第一队列中的位置。

67、该任务处理的装置具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如上述:检测单元、第一处理单元和第二处理单元,这几个单元可以通过一个处理单元或多个处理单元来实现。该第二方面或第二方面任一种可能的实现方式的相关内容可以参阅第一方面及第一方面任一种可能的实现方式的相关内容进行理解。

68、本技术第三方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,i/o)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。

69、本技术第四方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,一个或多个处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。

70、本技术第五方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被一个或多个处理器执行时,一个或多个处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。

71、本技术第六方面提供了一种芯片系统,该芯片系统包括至少一个处理器,至少一个处理器用于支持任务处理的装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存任务处理的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

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