一种线程处理方法及相关装置与流程

摘要: 本技术涉及计算机,尤其涉及一种线程处理方法及相关装置。背景技术:1、在计算机中,操作系统中的调度系统是管理计算资源分配的核心模块,主要负责协调进程、线程等任务对...
一种线程处理方法及相关装置与流程

本技术涉及计算机,尤其涉及一种线程处理方法及相关装置。

背景技术:

1、在计算机中,操作系统中的调度系统是管理计算资源分配的核心模块,主要负责协调进程、线程等任务对处理器、内存等资源的竞争。以线程调度为例,由于计算机中的处理器资源有限,而计算机中可能同时存在较多需要执行的线程,因此调度系统需要通过执行线程调度来决定哪个线程能够获得处理器的使用权。

2、一般来说,在计算机中,不同的线程往往对应于不同的优先级,重要性越高的线程的优先级往往也就越高。那么,在线程调度的过程中,优先级高的线程可以抢占优先级低的线程,进而强制中断正在处理器上运行的低优先级的线程,以确保尽可能地先执行优先级高的线程。

3、基于线程的优先级来实现线程调度,调度系统在大部分情况下都能够实现优先执行高优先级的线程。然而,在一些场景下,计算机中仍然可能出现一直运行较低优先级的线程,而较高优先级的线程则一直无法运行的现象,导致重要程度较高的任务无法及时响应。

技术实现思路

1、本技术提供一种线程处理方法,能够提高高优先级的线程的执行效率。

2、第一方面,提供一种线程处理方法,应用于运行有多个线程的执行设备上。该线程处理方法包括:在第一线程出现阻塞时,执行设备获取第一唤醒信息,第一唤醒信息用于指示第一线程在历史时间下被其他线程唤醒的信息。其中,第一唤醒信息是执行设备通过在历史时间下记录第一线程被其他线程唤醒的事件而得到的。

3、然后,基于第一唤醒信息,执行设备确定第二线程,第二线程是基于第一唤醒信息预测得到的导致第一线程阻塞的线程。即,执行设备是基于第一唤醒信息来预测可能导致第一线程的线程,进而预测得到第二线程。

4、最后,执行设备将第二线程的执行优先级调整为目标优先级,目标优先级为第一线程的执行优先级,且第二线程的原始执行优先级低于目标优先级。即,执行设备实际上是提高第二线程的执行优先级,从而使得原始执行优先级较低的第二线程能够被优先调度执行。

5、本方案中,在第一线程出现阻塞时,触发获取第一线程在历史时间下被其他线程所唤醒的信息,进而预测得到可能导致第一线程出现阻塞的第二线程。这样一来,通过将低优先级的第二线程的优先级调整为与第一线程的优先级一致,能够优先执行第一线程所依赖的第二线程,避免第一线程受到低优先级的第二线程的影响而迟迟无法执行,有效地解决了优先级反转的问题,确保高优先级的线程能够尽快执行。

6、在一种可能的实现方式中,第一唤醒信息用于指示第一线程在历史时间下被其他的m个线程唤醒的次数,m大于或等于1。

7、执行设备可以基于第一唤醒信息,确定m个线程中的线程对应的唤醒概率,唤醒概率用于指示线程唤醒第一线程的概率。然后,基于m个线程对应的唤醒概率,执行设备在m个线程中确定第二线程,第二线程包括m个线程中唤醒概率最大的n个线程,n为大于或等于1。也就是说,如果某个线程唤醒在历史时间下唤醒第一线程的次数越多,那么执行设备可以认为该线程当前能够唤醒第一线程的概率就越大。

8、本方案中,通过记录第一线程被其他线程所唤醒的次数,并且基于第一线程被唤醒的次数来确定每个线程对应的唤醒概率,进而确定唤醒概率最大的线程为当前需要提高执行优先级的线程,能够有效地确定到第一线程实际所依赖的线程,进而确保后续第一线程能够及时地被执行。

9、在一种可能的实现方式中,在将第二线程的执行优先级调整为目标优先级之后,如果间隔预设时长后第一线程仍未开始执行,执行设备则获取第二唤醒信息,第二唤醒信息用于指示第二线程在历史时间下被其他线程唤醒的信息。

10、并且,基于第二唤醒信息,执行设备确定第三线程并将第三线程的执行优先级调整为目标优先级。其中,第三线程是基于第二唤醒信息预测得到的导致第二线程阻塞的线程。

11、也就是说,在调整了第一线程所依赖的第二线程的执行优先级之后,如果调度系统发现第一线程仍然处于阻塞状态,那么就可以认为第二线程可能也受到了阻塞,从而导致第一线程仍然无法执行。因此,调度系统则继续回溯第二线程所依赖的线程(即上述的第三线程),并且将第二线程所依赖的线程的执行优先级提高,以确保能够尽快执行第二线程所依赖的线程,进而加速第二线程和第一线程的执行。

12、本方案中,通过在调整第一线程直接依赖的线程的执行优先级且发现第一线程仍未及时执行时,继续在依赖链条上回溯并调整上层线程的执行优先级,能够有效地解决多级阻塞导致的优先级反转问题,进而确保第一线程能够顺利地执行。

13、在一种可能的实现方式中,在确定第二线程后,执行设备则继续获取第二唤醒信息,第二唤醒信息用于指示第二线程在历史时间下被其他线程唤醒的信息。并且,基于第二唤醒信息,执行设备确定第三线程并将第三线程的执行优先级调整为目标优先级,第三线程是基于第二唤醒信息预测得到的导致第二线程阻塞的线程。

14、本方案中,在发现第一线程阻塞时,就直接在依赖链条上回溯并调整第一线程之前的多层线程的执行优先级,能够有效地解决多级阻塞导致的优先级反转问题,进而确保第一线程能够顺利地执行。

15、在一种可能的实现方式中,第一唤醒信息是基于为第一线程和其他线程分配的关系标识来记录第一线程在历史时间下被其他线程唤醒的信息,关系标识的数据量小于线程标识的数据量。即,在记录第一唤醒信息时,不再是使用第一线程以及其他线程本身的线程标识来表示第一线程和其他线程,而是采用专门为这些线程所分配的关系标识来进行表示。

16、本方案中,通过采用额外的关系标识来表示需要记录唤醒信息的线程,能够实现以数据量较低的关系标识来替代数据量较高的线程标识,进而实现唤醒信息的记录,且有效地降低了所记录的唤醒信息的数据量,有利于使用有限的存储资源来实现唤醒信息的记录。

17、在一种可能的实现方式中,第一线程为预定义的关键线程,且第一线程和其他线程对应的关系标识是从关系集合中分配的,关系集合中的关系标识仅用于分配给关键线程以及唤醒关键线程的线程。

18、也就是说,只有关键线程被唤醒时,才需要记录关键线程被唤醒的信息,且关系集合中的关系标识也会分配给关键线程以及唤醒关键线程的线程。这样一来,执行设备可以预先设定一个关系集合,且关系集合中包括数据量较小的关系标识,这些关系标识能够用于替代线程标识来实现唤醒信息的记录,进而降低唤醒信息的存储开销。

19、在一种可能的实现方式中,在第一线程执行完毕后,执行设备将第二线程的执行优先级恢复为原始执行优先级,避免长时间调整第二线程的执行优先级而影响其他线程的正常执行。

20、在一种可能的实现方式中,在第一线程被唤醒后,执行设备基于唤醒第一线程的线程的信息,更新第一唤醒信息。

21、本方案中,在第一线程被唤醒后,及时地更新第一线程相关的唤醒信息,能够保证唤醒信息的实时性以及全面性,有利于后续基于唤醒信息来更准确地预测得到能够唤醒第一线程的线程,确保第一线程后续的执行效率。

22、在一种可能的实现方式中,第一唤醒信息是从有向图中获取的,有向图用于记录关键线程在历史时间下被其他线程唤醒的信息,第一线程属于关键线程。其中,有向图包括节点和节点间的有向边,节点用于表示线程,有向边用于表示线程唤醒方向,且有向边的属性用于指示节点间的唤醒次数。

23、本方案中,采用有向图的方式来记录关键线程被其他线程唤醒的信息,从而使得各个线程之间的被唤醒路径更为清晰直观且全面,有助于后续回溯线程所处的依赖链条上的各个线程。

24、在一种可能的实现方式中,获取第一唤醒信息是在识别到属于关键线程的第一线程出现阻塞的时长超过预设时长后触发的。

25、本方案中,通过设定仅针对被阻塞时长超过预设时长的关键线程,触发执行线程处理方法,以提高该关键线程的执行效率,能够确保执行设备仅关注于操作系统中所运行的优先级较高且出现阻塞异常的线程,降低处理资源的消耗,进而以有限的处理资源解决优先级反转问题。

26、第二方面,提供一种线程处理装置,包括:获取模块,用于在第一线程出现阻塞时,获取第一唤醒信息,第一唤醒信息用于指示第一线程在历史时间下被其他线程唤醒的信息;处理模块,用于基于第一唤醒信息,确定第二线程,第二线程是基于第一唤醒信息预测得到的导致第一线程阻塞的线程;处理模块,还用于将第二线程的执行优先级调整为目标优先级,目标优先级为第一线程的执行优先级,且第二线程的原始执行优先级低于目标优先级。

27、在一种可能的实现方式中,第一唤醒信息用于指示第一线程在历史时间下被其他的m个线程唤醒的次数,m大于或等于1;处理模块,具体用于:基于第一唤醒信息,确定m个线程中的线程对应的唤醒概率,唤醒概率用于指示线程唤醒第一线程的概率;基于唤醒概率,在m个线程中确定第二线程,第二线程包括m个线程中唤醒概率最大的n个线程,n为大于或等于1。

28、在一种可能的实现方式中,处理模块,还用于:在将第二线程的执行优先级调整为目标优先级之后,如果间隔预设时长后第一线程仍未开始执行,则获取第二唤醒信息,第二唤醒信息用于指示第二线程在历史时间下被其他线程唤醒的信息;基于第二唤醒信息,确定第三线程,第三线程是基于第二唤醒信息预测得到的导致第二线程阻塞的线程;将第三线程的执行优先级调整为目标优先级。

29、在一种可能的实现方式中,处理模块,还用于:在确定第二线程后,获取第二唤醒信息,第二唤醒信息用于指示第二线程在历史时间下被其他线程唤醒的信息;基于第二唤醒信息,确定第三线程,第三线程是基于第二唤醒信息预测得到的导致第二线程阻塞的线程;将第三线程的执行优先级调整为目标优先级。

30、在一种可能的实现方式中,第一唤醒信息是基于为第一线程和其他线程分配的关系标识来记录第一线程在历史时间下被其他线程唤醒的信息,关系标识的数据量小于线程标识的数据量。

31、在一种可能的实现方式中,第一线程为预定义的关键线程,且第一线程和其他线程对应的关系标识是从关系集合中分配的,关系集合中的关系标识仅用于分配给关键线程以及唤醒关键线程的线程。

32、在一种可能的实现方式中,处理模块,还用于:在第一线程执行完毕后,将第二线程的执行优先级恢复为原始执行优先级。

33、在一种可能的实现方式中,处理模块,还用于:在第一线程被唤醒后,基于唤醒第一线程的线程的信息,更新第一唤醒信息。

34、在一种可能的实现方式中,第一唤醒信息是从有向图中获取的,有向图用于记录关键线程在历史时间下被其他线程唤醒的信息,第一线程属于关键线程;其中,有向图包括节点和节点间的有向边,节点用于表示线程,有向边用于表示线程唤醒方向,且有向边的属性用于指示节点间的唤醒次数。

35、在一种可能的实现方式中,获取第一唤醒信息是在识别到属于关键线程的第一线程出现阻塞的时长超过预设时长后触发的。

36、本技术第三方面提供一种线程处理装置,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面或第一方面任一实现方式的方法。对于处理器执行第一方面的各个可能实现方式中的步骤,具体均可以参阅第一方面,此处不再赘述。

37、本技术第四方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一实现方式的方法。

38、本技术第五方面提供了一种电路系统,电路系统包括处理电路,处理电路配置为执行上述第一方面任一实现方式的方法。

39、本技术第六方面提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一实现方式的方法。

40、本技术第七方面提供了一种芯片系统,该芯片系统包括处理器,用于实现上述第一方面任一实现方式中所涉及的功能,例如,处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,芯片系统还包括存储器。存储器,用于保存必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。

41、上述第二方面至第七方面的有益效果可以参考上述第一方面的介绍,在此不再赘述。