等待时间敏感的软件中断和线程调度的制作方法_3

文档序号:8516038阅读:来源:国知局
216的中断和/或中断服务例程1与上述讨论类似地,点216表示时间上的任意点。中断服务例程I完成,并且在完成时,在点218检测到导致中断服务例程2运行的另一个中断。在一些实施例中,这种中断和/或中断处理的快速接续可以被识别,并进一步导致处理器核O被分类为“忙碌”和/或“中断繁重”。尽管这个示例在将处理器核分类为“忙碌”和/或“中断繁重”时使用两个中断,但是将被意识到和理解,在不偏离要求保护的主题的范围的情况下,以任何速率发生的任何数量的中断都可以被用作用于这种分类的阈值。在点220处,任务I被指派和/或调度为在处理器核O上运行,并且开始执行。在任务I的执行期间,第三中断在点222处被检测。此处,任务I被挂起,并且处理器核O开始处理与该第三中断相关联的中断服务例程。在点224处,中断服务例程3完成,并且任务I继续执行直到其在点226处完成。因此,任务I被感知的执行时间可以被测量为在点220和点226之间的时间,并且也包括此处被示为在点222到点224之间的时间的用于中断服务例程3的处理时间。假设任务I不是等待时间敏感的,这个延迟对用户而言可能是不显著的和/或无法感知的。但是,如果任务I是等待时间敏感的任务,则用户可以潜在地注意到点222和点224之间的延迟(以及后续当任务I运行时)。也可以指出,在此时间期间,核I处于空闲状态和/或当前没有忙于处理任何指令。
[0034]图2d图示了替换的实施例,其中在调度任务I时考虑与(多个)处理器核和任务相关联的特性。与在图2c的情况下一样,处理器核O在点216处开始处理中断服务例程1,并且在点218处开始处理中断服务例程2,因此如上文进一步所述,将处理器核O分类为处于“中断繁重”和/或“忙碌”状态。在点220处,任务I的调度开始。在这个示例中,该调度过程考虑处理器核O作为“忙碌”的状态和/或分类。可替换地或附加地,该调度过程可以识别影响将任务I指派给什么处理器核的任务I的特性。在这个示例中,任务I已经被识别为等待时间敏感的任务,并且处理器核O已经被识别为处于“忙碌”和/或“中断繁重”状态。响应于这些识别,该调度过程将任务I指派给处理器核I,而不是处理器核O。随后,当中断3在点222处来到,并且在点224处完成时,其不影响任务I的执行时间。替代地,任务I继续其执行而不被中断,并在点228处完成,因此消除了在任务I的执行时间中的任何外部延迟,所述任务I的执行时间此处被图示为在点220到点228之间。
[0035]尽管前面的示例描述了基于处理器核的使用率来将一般的任务和/或中断服务任务调度给不同的核,但是任务的任何合适的组合和/或任何合适类型的任务都可以被调度。可替换地或附加地,任务可以基于任务度量来被调度,该度量比如是该任务是否是等待时间敏感的、该任务上次运行在哪个处理器核上等。例如,与触摸屏相关联的输入和/或任务可以具有将其识别为等待时间敏感任务的度量,而屏幕保护程序任务可以具有将其识别为不是等待时间敏感的度量。相应地,基于这个识别,该输入和/或任务可以被(重新)指派给空闲的或者不太忙碌的处理器核,而该屏幕保护程序任务不会被(重新)指派。在一些实施例中,基于诸如(多个)处理器核的总使用率之类的系统目标和/或度量来调度任务。在任何情况下,调度算法都使用表征计算设备各种不同方面的信息。
[0036]图3图示了根据一个或多个实施例的示例计算设备102。更特别地,图3图示了如图1所描述的计算设备102详细视图。如图1所图示的,计算设备102包括(多个)处理器核104、(多个)内部设备116以及(多个)附接的外部设备118。为了讨论的简洁,已经移除相对于图1所描述的计算设备102的其他方面。
[0037]计算设备102包括用户模式存储器302和特许模式存储器304。用户模式存储器302表示主要专门供用户模式应用和/或者能够有限直接访问到无法直接访问与计算设备102相关联的系统资源的应用使用的存储器空间。相反地,特许模式存储器304表示主要专用于系统应用和/或具有受限访问的敏感信息的存储器空间。除了别的以外,特许模式存储器304包括若干不同的数据结构,作为示例而非限制,其包括(多个)软件中断结构306、(多个)线程结构308以及(多个)核数据结构310。
[0038](多个)软件中断结构306表示与一个或多个软件中断相关联的一个或多个结构。这种结构可以包括任何合适类型和数量的数据,例如(多个)标志、不同种类的(多个)指针(数组指针、函数指针、类指针等)、文本、数值、布尔值等。在这个示例中,软件中断结构306包括“等待时间敏感SW (软件)中断线程”标志,其可以被使用来指示相关联的软件中断任务是否是等待时间敏感的。例如,值“I”或“真”可以指示任务是等待时间敏感的,以及值“O”或“假”可以指示该任务不是等待时间敏感的。在一些实施例中,在创建相关联的中断和/或迟延的过程调用(DPC)结构时,可以创建这种结构。在一些情况下,每个软件中断任务可以拥有被指派给它的相关联的专用软件中断结构(例如,在软件中断任务和软件中断结构306之间存在一一对应)。可替换地或附加地,单个的软件中断结构可以包括多个标识符以及用于每个标识符的对应的等待时间敏感标志,每个所述标识符都与软件中断相关联。例如,被创建的结构可以被存储在被配置来提供中断信息和/或相关联的计算设备的特性的更大的结构中。
[0039]与(多个)软件中断结构306相似地,(多个)线程结构308表示与一个或多个任务相关联的一个或多个结构。除了别的以外,线程结构308包括“等待时间敏感线程标志”,与上述描述类似,其可以被使用来将线程识别为是否是等待时间敏感的。如上文同样描述的,将被意识到和被理解的是,(多个)线程结构308可以包括以各种不同形式的各种不同的数据量。在一些实施例中,这种结构可以在相关联的任务和/或线程被创建时而被创建,并且除非在创建时刻另外指定,这种结构可以被设置为默认值。特许模式存储器304可以包括用于每个识别的线程的唯一的线程结构308 (例如,多个线程结构308)和/或拥有包括多个线程标识符和相应的等待时间敏感标志的一个线程结构308。
[0040](多个)核数据结构310表示与处理器核相关联的一个或多个结构。如上所述,核数据结构310可以被关联于一个处理器核或多个处理器核。在这个示例中,在(多个)处理器核104和(多个)核数据结构310之间存在一一对应。因此,处理器核104(0)拥有对应的核数据结构310(0),处理器核104(1)拥有对应的核数据结构310(1),依此类推。标记被包含在(多个)核数据结构310中,此处表示为“SWIntBusy”标志,其可以被用来指示相关联的处理器核是否正忙于处理软件中断。
[0041]上文所述的数据结构的组合可以被使用来确定如何在多个处理器核中间划拨(appropriate)任务。这进而可以导致如用户所感知的计算设备更好的性能。例如,如图3所图示,考虑(多个)处理器核104。在这个时间上的捕获处,处理器核O被图示为正忙于运行软件中断,处理器核I被图示为正在忙于运行线程,并且处理器核2到η-1被图示为正处于空闲。计算设备102也包括任务312,其准备好运行和/或正在竞争访问处理器核。此处,以一般的意义来使用术语“任务”,并且其可以被用来表达如组织的软件应用和/或线程般复杂的事物(something),或者其可以被用来表达如机器级指令分组般简单的事物,或者其可以被用来表达在中间的机器级指令的任何集成(collect1n)。可替换地或附加地,可以以任何合适的方式来调用和/或识别任务,包括通过硬件通知和/或软件通知,比如通过内部设备116和/或外部设备118。在图3中,任务312已经被图示成包括四个任务:要运行的软件中断(SWInt)、准备好运行的线程、要运行的等待时间敏感的SWInt以及准备好运行的等待时间敏感的线程。将被意识到和理解的是,在不偏离要求保护的主题的范围的情况下,任何数量的任务都可以被识别。
[0042]一些实施例在将任务和/或机器级指令指派给处理器核之前分析信息,例如包含在(多个)软件中断结构306、(多个)线程结构308和/或(多个)核数据结构310中的信息。在这个示例中,(多个)软件中断结构306可以被分析来确定要在任务3
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1