延迟的优先级增强的系统和方法

文档序号:6424952阅读:102来源:国知局
专利名称:延迟的优先级增强的系统和方法
技术领域
一般而言本发明涉及一种用于延迟处理线程的优先级增强的系统和方法。具体来说,本发明涉及一种只有在线程即将被预占的情况下才增强某些线程的系统和方法。
背景技术
现代计算机系统能够同时无缝地执行多个任务。使用多任务处理,通过以循环的方式服务于进程,处理器可以处理来自多个进程的指令。如此,在时间切断之前很短的时间由处理器执行一个进程,保存其设置和寄存器值,由处理器执行不同的进程。这些进程或“线程”是对应于要求处理器进行处理的一个或多个软件应用程序的指令流。这里术语“进程”和“线程”可互换地使用,以表示由处理器执行的可执行的指令流。通过快速从一个进程移到下一个进程,看来好像每一个进程都同时执行。
由操作系统来变换对处理器的访问。大多数操作系统为此使用基于优先级的调度算法。根据代表计算机系统执行的功能的重要性和/或重要性向程序指派优先级。操作系统使用这些优先级来判断何时以及多长时间给程序内的可执行代码的进程或单元授予对处理器的访问。一般来说,基于优先级的调度分配处理器时间以优化计算机系统的性能。例如,可以优化计算机系统,以便最小化用户输入响应时间,最大化吞吐量,和/或保证应用程序的可预言的或确定性的执行时间。
计算机系统内的许多资源可以由处理器执行的各种程序来进行共享。在很多情况下,这些资源需要序列化,以便在任何给定时间都只有一个进程使用资源。为了序列化对资源的访问,常常使用软件锁定。当资源正在被别的进程使用时,进程将等待锁定。当锁定被其他进程释放时,进程将尝试获取锁定。在进程释放锁定之前,其他进程将无法无法使用资源。由于这一序列化,共享资源的有效使用将帮助提高整个系统的吞吐量。这对于由许多进程使用的资源和对应的锁定尤其如此。
在使用基于优先级的调度算法的操作系统中,具有较高的优先级的进程比具有较低的优先级的进程优先使用。这甚至在优先级较低的进程当前拥有关键资源的情况下也是如此。为解决此问题,在进入代码的关键部分之前(在此期间,线程常常使用由锁定控制的共享资源),线程常常请求提高优先级。当线程完成代码的关键部分之后,锁定被释放,线程的优先级被操作系统重置(取消增强)。然而,这种方法所面临的挑战,是线程所花费时间来请求优先级更改(增强和取消增强),还要求操作系统的服务,这就进一步增大了操作系统的负担。在许多情况下,即使其优先级没有改变,即使线程不会被抢先,这一时间也是要花的。然而,许多进程不能冒险它们的线程在执行关键部分时被抢先,因此进程总是增强和取消增强线程的优先级。
图1是显示在采用现有技术的系统中当线程进入关键部分时如何处理优先级增强的高级别的流程图。用户线程处理在100开始,在某些点,用户线程准备进入代码的关键部分,并请求优先级增强(步骤110),以降低在执行关键部分时线程被抢先的可能性。内核进程(任务计划程序)在120开始,在步骤130,内核进程接收来自用户线程的优先级增强请求,并相应地更新优先级的数据结构140。
在接收优先级增强时,用户线程在步骤150执行关键部分。在关键部分完成之后,用户线程准备退出关键部分,并在步骤160,请求将其优先级重置为其正常级别。此后,用户处理在180结束。
内核进程120在步骤170从用户线程接收第二优先级更改请求,并相应地更新优先级数据140中包括的线程数据结构。此后,内核进程在190结束。
从图1所示的处理可以看出,用户线程向内核进程发出两个请求,以增强优先级,随后,重置其优先级。如果在执行关键部分期间没有其他线程抢先于用户线程,则不需要向内核进程发出请求。然而,不是无关紧要的次数,用户线程可能被抢先,因此,在现有技术中,用户线程不得不向内核进程发出这样的请求,以防止被抢先。此外,由于时间切断(此时等待线程(即,别的用户线程)与当前在CPU上运行的线程具有相同的优先级),常常会发生抢先的现象。被具有相同的优先级的别的线程抢先的现象表明,甚至小的优先级增强对于当前运行的线程完成关键部分的处理过程也是有帮助的。然而,由于用户级别的线程需要发出两个内核进程请求,而内核进程需要处理两个请求,即使比较小的优先级增强,开销也是比较大的。
因此,需要一种用于在线程即将被抢先之前延迟线程的优先级增强的系统和方法。还需要一种系统和方法,用于限制线程向内核进程发出增强并重置其优先级的请求。

发明内容
已经发现,使用一种能够在线程即将被抢先时增强线程的优先级的系统和方法可以解决如前所述的挑战。如此,如果线程不会被抢先,则不执行优先级增强,从而节省了增强线程的优先级以及随后将线程的优先级重置为其以前的级别所需的内核级别进程。
当用户(即,非内核)线程准备进入代码的关键部分时,在用户可访问的数据结构中设置了标志,指出线程当前在代码的关键部分。代码的关键部分是抢先当前正在运行的线程将会产生不利的部分,如当当前正在运行的线程已经获取关键的闩锁时。例如,当前正在更新缓冲池(该缓冲池要求线程保留关键闩锁)中的数据的页面的数据库线程。由于线程是用户级别的线程,因此,通常将启用中断,以允许线程被抢先。然而,如果在保留关键闩锁时线程被抢先,在保留闩锁的线程最终被操作系统切换,完成其代码的关键部分,并释放闩锁之前,也需要由闩锁控制的资源的其他线程将被阻止。
内核进程,如任务计划程序,连续地运行,并监视正在运行的线程。内核进程基于各种因素(如当前正在运行的线程在CPU上运行的CPU时间量,以及是否有具有相同或更高优先级的别的线程正在等待CPU)判断是否抢先当前正在运行的线程(即,中止)。
内核进程判断应该抢先当前正在运行的线程。然而,在抢先该线程之前,内核进程读取用户可访问的数据结构,以判断当前正在运行的线程是否已经请求了延迟的优先级增强(即,通过指出当前正在运行的线程已经进入代码的关键部分)。用户级别数据结构中的数据指出线程要求的优先级增强的量。在判断当前正在运行的线程正在位于关键部分,并已经请求优先级增强时,内核进程代表当前正在运行的线程执行优先级增强。现在使用线程的新优先级来判断是否应该抢先线程。如果正在等待执行的线程具有降低的优先级,那么,不抢先当前正在运行的线程。
当当前正在运行的线程完成关键部分时,更新用户级别数据,指出线程已经完成关键部分。下一次内核进程检查当前正在运行的线程时,它判断线程不再位于所述关键部分。内核进程代表线程判断是否执行了优先级增强,如果已经执行,则相应地重置线程的优先级。当前正在运行的线程常常指出它位于关键部分,在抢先事件发生之前,线程将完成关键部分。在这些情况下,线程将能够执行关键部分,而不必接收优先级增强,从而会节省用于增强线程的优先级随后再重置线程的优先级所花的处理时间。
前述的内容是一个概述,因此,只是详细内容的简化形式;因此,那些精通本技术的人将理解,概述只是说明性的,而不以任何方式作出限制。如权利要求所定义的本发明的其他方面,本发明的功能,将在非限制性的详细描述中,变得显而易见。


通过参考附图,那些精通本技术的人将会更好地理解本发明,本发明的目标、特点和优点将变得显而易见。
图1是显示在采用现有技术的系统中当线程进入关键部分时如何处理优先级增强的高级别的流程图;
图2是显示在执行延迟的优先级增强时所采取的步骤的高级别流程图;图3是显示用户线程设置用户级别数据指示器以表明它位于关键部分以及内核进程如何使用这样的数据所采取的步骤的流程图;图4是内核进程在读取用户线程所设置的用户级别数据,在必要时调整线程的优先级,以及判断是否要抢先线程所采取的步骤的详细流程图;以及图5是能够实现本发明的计算设备的方框图。
具体实施例方式
下面提供了本发明的示例的详细描述,而不对本发明本身作出任何限制。相反,各种变化都在本发明的范围内,本发明的范围由说明书后面的权利要求书进行了定义。
图1是显示在采用现有技术的系统中当线程进入关键部分时如何处理优先级增强的高级别的流程图。有关图1的详细信息,请参阅上文“背景”部分。
图2是显示在执行延迟的优先级增强时所采取的步骤的高级别流程图。用户线程处理在100开始,在某些点,用户线程准备进入代码的关键部分。在步骤210,用户线程通过更新用户级别数据结构220(如包括有关系统锁的信息的用户级别结构)准备进入代码的关键部分。在将数据写入到用户级别数据结构以表明用户线程即将执行代码的关键部分之后,用户线程在步骤225执行关键部分。在步骤230,用户线程通过用指出用户线程不再执行关键部分的数据更新用户级别数据结构220中的数据来准备退出关键部分。此后,用户处理在240结束。
内核进程(即,任务计划程序),连续地监视正在计算机系统上运行的线程。各种抢先事件(包括时间切断事件)可以包括在系统中,在一定量的时间之后,别的线程(即,与当前正在运行的线程具有相同优先级的线程),或者当具有较大优先级的线程准备执行时,将抢先当前正在运行的线程。在图2中,内核进程在步骤250开始,因此,在步骤260,对于用户线程200将发生抢先事件。内核进程在步骤270中读取用户级别数据结构220,其中包括当前正在运行的线程是否正在关键部分。在步骤280中,内核进程可以用当前正在运行的线程的更新的优先级数据更新内核维护的优先级表格290。如果用户级别数据结构220中的数据表明当前正在运行的线程正在位于关键部分,并请求了优先级增强“10”,那么(如果内核进程以前没有增强线程的优先级),内核进程增强优先级数据结构290中的线程的优先级。相反,如果用户级别数据结构220中的数据表明线程不再执行关键部分,并且内核进程判断用户线程的优先级在某种程度上被增强,那么,内核进程用以前增强的量(例如,“10”)重置(“取消增强”)线程的优先级。此后,抢先事件的内核处理将在295结束。
图3是显示用户线程设置用户级别数据指示器以表明它位于关键部分以及内核进程如何使用这样的数据所采取的步骤的流程图。用户线程处理在100开始,在于步骤310处进入代码的关键部分之前,线程执行非关键任务305。在进入代码的关键部分之前(或在进入关键部分时),用户级别数据区312内的数据被更新。用户级别数据区包括优先级应用的标志318(该标志标识线程的优先级是否实际被内核进程(即,任务计划程序)更新),关键部分标志316(该标志标识线程当前是否处于关键部分,在此期间,应该应用优先级增强),优先级偏移量314,它存储了对应于线程处于关键部分过程中应该接收的优先级增强量的值。用户线程在步骤320中将优先级更改标志设置为“假”,表明任务计划程序还没有将优先级增强应用到线程。在步骤325中,线程将关键部分标志设置为“真”,表明线程已经进入关键部分,此时,将应用优先级增强。在步骤330中,设置优先级增强的量。
在用户级别数据区312中设置了优先级增强量和标志之后,在步骤335中线程执行代码的关键部分,例如,线程可以是一个数据库线程,该线程当前正在更新缓冲池中的数据的页面,该缓冲池要求线程保留关键闩锁。在某些点(步骤340),线程退出代码的关键部分,在步骤345,将关键部分标志设置为“假”,表明线程不再位于代码的关键部分。此后线程处理在345结束。
内核进程(即,任务计划程序)在360开始,并不断地执行以预定、调度和抢先正在处理器上运行的线程。在步骤370中,发生抢先事件,如发生时间切断事件,表明应该切换用户线程300,以便让位于具有相同或较大优先级的线程,或准备执行的较高优先级的线程。在执行抢先事件之前,内核进程从用户级别数据区312读取数据。然后,内核进程判断是否抢先线程300,还应用用户级别数据区312中设置的数据所指出的任何所需要的优先级偏移(预先定义的进程380,有关处理详细信息,请参见图4)。在预先定义的进程380中,内核进程更新线程表格385中的数据,该表格包括线程标识符386和对应于当前正在计算机系统中运行的每一个线程的优先级388。
图4是内核进程在读取用户线程所设置的用户级别数据,在必要时调整线程的优先级,以及判断是否要抢先线程所采取的步骤的详细流程图。图4显示了图3所示的预先定义的进程块380的详细信息。在图4中,用于判断是否抢先线程的内核进程在步骤400开始,在此,在步骤405中,检测抢先事件。在步骤410中,检索对应于当前正在运行的线程的用户级别数据。
基于关键部分标志416的值,就当前正在运行的线程是否位于关键部分作出判断(判断420)。如果当前正在运行的线程位于关键部分,则判断420分叉到“是”分支422,在此,就用户级别数据区中指出的优先级增强是否已经应用于当前正在运行的线程作出另一个判断(判断425)。此判断基于优先级应用标志418。如果还没有应用优先级,则判断425分叉到“否”分支428,在步骤430中,用户级别数据区412中的优先级应用标志418被设置为“真”,在步骤435中,在线程表格450(内核级别的数据结构)中将当前正在运行的线程的优先级增强优先级偏移量414。从用户级别数据区412中检索优先级偏移量414。线程表格450被内核进程更新,其方法是,通过定位表格中的匹配当前正在运行的线程的标识符的线程标识符455,并将线程的优先级460修改优先级偏移量来进行。
返回到判断425,如果已经应用优先级,则判断425分叉到“是”分支438,而绕过步骤430和435。
返回到判断420,如果当前正在运行的线程不在关键部分,那么判断420分叉到“否”分支462,在此,就以前是否将优先级增强应用于线程作出判断(判断465,即,优先级应用标志当前是“真”)。如果优先级增强已经应用于线程,则判断465分叉到“是”分支468,在此,优先级应用标志在步骤470被重置为“假”,在步骤475中,内核级别线程表格中的线程的优先级被重置,重置量为偏移量。例如,如果线程的优先级以前被增强“10”,那么步骤475也将线程的优先级降低(取消增强)10。如此,当线程处于关键部分时,应用于线程的优先级的任何处罚都将得到维护。如果相同线程以优先级“10”开始并通过图3和4所示的处理被增强到“20”(由于优先级偏移量为“10”),但在执行关键部分的过程中,任务计划程序将线程的优先级降低“2”(以便线程的优先级变为18),当发生取消增强过程时,线程将具有优先级“8”,说明已经将优先级降低。
返回到判断465,如果没有对线程应用优先级增强(优先级应用标志是“假”),那么判断465分叉到“否”分叉478,绕过用于重置优先级应用标志和重置(取消增强)线程的优先级的步骤470和475。
不管当前执行的线程是否位于关键部分,都就是否应该抢先线程作出判断(判断480)。尽管发生抢先事件,也要作出此判断。例如,当前执行的线程的优先级可能已经增强,因此,不应该被抢先。判断480是基于当前正在运行的线程的优先级(该优先级可能已经被增强)和当前正在等待执行的任何线程的优先级来作出的。如果不应该抢先当前线程,则判断480将分叉到“否”分支488,其中内核进程等待下一个抢先事件(步骤490),不抢先当前正在执行的线程。当下一个抢先事件发生时,处理循环返回到步骤405以判断是否已经修改当前正在运行的线程的优先级,并判断是否要实际抢先该线程。另一方面,如果应该抢先当前线程,则判断480分叉到“是”分叉482,其中在步骤485等待线程抢先当前线程。此后,用户处理在495结束。最后,有关已经在等待的新执行的线程可能会发生抢先事件,此时,将重复处理,以判断新执行的线程是否变换其优先级,并判断是否要抢先线程。
图5说明了信息处理系统501,这是一个能够执行这里所描述的计算操作的计算机系统的简化示例。计算机系统501包括耦合到主机总线502的处理器500。级别2(L2)高速缓冲存储器504也耦合到主机总线502。主机到PCI桥506耦合到主存储器508,包括高速缓冲存储器和主存储器控制功能,并提供总线控制以处理PCI总线510、处理器500、L2缓存504、主存储器508,以及主机总线502之间的传输。主存储器508耦合到主机到PCI桥506以及主机总线502。只由主处理器500使用的设备(如LAN卡530)耦合到PCI总线510。服务处理器接口和ISA访问通路在PCI总线510和PCI总线514之间提供了一个接口。如此,PCI总线514与PCI总线510绝缘。诸如快闪存储器518之类的设备耦合到PCI总线514。在一个实施例中,快闪存储器518包括BIOS代码,该代码包括用于执行各种低级别的系统功能和系统引导功能的所需要的处理器可执行代码。
PCI总线514为由主处理器500和服务处理器516共享的各种设备(例如,快闪存储器518)提供了一个接口。PCI到ISA桥535提供了总线控制,以处理PCI总线514和ISA总线540、通用串行总线(USB)功能545、电源管理功能555之间的传输,并可以包括其他功能元件(未显示),如实时时钟(RTC)、DMA控制、中断支持,以及系统管理总线支持。非易失性的RAJ4 520连接到ISA总线540。服务处理器516包括JTAG和12C总线522用于在初始化步骤过程中与处理器500进行通信。JTAG/I2C总线522也耦合到L2缓存504,主机到PCI桥506,以及在处理器、服务处理器、L2缓存、主机-到PCI桥,以及主存储器之间提供通信路径的主存储器508。服务处理器516也能访问系统电源资源,以便切断信息处理设备501。
外围设备和输入/输出(I/O)设备可以连接到各种接口(例如,并行接口562、串行接口564、键盘接口568,以及耦合到ISA总线540的鼠标接口570)。或者,许多I/O设备可以由附加到ISA总线540的超级I/O控制器(未显示)进行变换。
为了将计算机系统501连接到另一个计算机系统以通过网络复制文件,局域网网卡530耦合到PCI总线510。同样,为了将计算机系统501连接到ISP以使用电话线路连接到因特网,调制解调器575连接到串行端口564和PCI到ISA桥535。
尽管图5中所描述的计算机系统能够执行这里所描述的进程,但是,此计算机系统只不过是计算机系统的一个示例。那些精通本技术的人将理解,许多其他计算机系统设计也能够执行这里所描述的进程。
本发明的其中一个优选实施例是客户端应用程序,即,代码模块中的一组指令(程序代码),例如,可以是驻留在计算机的随机存取存储器中的一组指令。直到计算机需要,指令集可以存储在另一台计算机的存储器中,例如,存储在硬盘驱动器中,或在诸如光盘之类的可移动存储器中(用于CD ROM中)或软盘(用于软盘驱动器中),或通过因特网或其他计算机网络下载。如此,本发明可以作为在计算机中使用的计算机程序产品来实现。此外,虽然这里所描述的各种方法可以方便地以通用计算机(有选择地由软件激活或重新配置)来实现,但是,那些精通本技术的普通人员也将认识到,这样的方法可以以硬件、固件或为执行所要求的方法步骤所制造的比较专门的设备。
尽管这里显示和描述了本发明的特定实施例,但是,对那些精通本技术的人很明显,基于这里所提供的原理,在不偏离本发明的精神和范围的情况下,可以进行各种修改。因此,所附加的权利要求包含在它们的范围内,所有这样的更改和修改都在本发明的真正的精神和范围内。此外,应该理解,本发明只由所附加的权利要求进行定义。那些精通本技术的人应该理解,如果给所引入的权利要求元素使用了特定的编号,其意图将在权利要求书中清楚地阐述,没有这些编号也不会构成限定。为了便于理解,举一个非限制性的例子,下面所附的权利要求书中包含“至少一个”和“一个或多个”这样的语句来引入权利要求的元素。然而,使用这样的句子不应该被理解为暗指,包含这样的引入的权利要求元素的任何特定权利要求由不定冠词“a”或“an”引入的权利要求元素将限制为只包含一个这样的元素的发明,即使在同一权利要求中包括引入性语句“一个或多个”或“至少一个”以及诸如“a”或“an”的不定冠词时;上述说明同样适用于在权利要求中使用定冠词的情况。
权利要求
1.一种用于调整执行线程的优先级的计算机实现的方法,所述方法包括通过更新用户模式可访问的数据区来指出执行线程需要较高的优先级,执行指出操作不提高对应于所述执行线程的优先级;检测抢先事件;响应检测到的抢先事件读取用户模式可访问的数据区;以及基于用户模式可访问的数据变换所述执行线程的优先级。
2.根据权利要求1所述的方法,进一步包括在执行线程进入关键部分之前更新优先级偏移量,其中所述优先级偏移量被包括在用户模式可访问的数据中;以及其中所述执行线程的优先级的变换基于所述优先级偏移量。
3.根据权利要求2所述的方法,进一步包括在用户模式可访问的数据内设置一个关键部分标志,指出所述执行线程位于关键部分内;以及在用户模式可访问的数据内设置一个优先级应用标志,指出所述执行线程的优先级没有被变换。
4.根据权利要求3所述的方法,其中检测、读取和变换进一步包括在内核进程中判断是否已经设置了所述关键部分标志,以及所述优先级应用标志是否指出所述执行线程的优先级没有被变换;响应所述判断执行变换;以及设置所述优先级应用标志,指出所述线程的优先级已经被变换。
5.根据权利要求4所述的方法,进一步包括在用户模式可访问的数据内设置所述关键部分标志,指出所述执行线程不再位于所述关键部分内;在内核进程中接收第二抢先事件;在内核进程中判断不再设置所述关键部分标志,以及所述优先级应用标志指出所述执行线程的优先级已经被变换;响应不再设置所述关键部分标志以及所述优先级标志指出所述执行线程的优先级已经被变换的判断,重新变换所述执行线程的优先级,变换量为所述优先级偏移量;以及重置优先级应用标志,指出不再变换所述执行线程的优先级。
6.根据权利要求1所述的方法,进一步包括将执行线程的已变换的优先级与对应于等待线程的优先级进行比较;如果所述等待线程的优先级优于执行线程的已变换的优先级,则抢先于执行线程;以及如果所述执行线程的已变换的优先级优于等待线程的优先级,则继续执行所述执行线程。
7.根据权利要求1所述的方法,其中指出操作响应利用共享系统资源的进入关键代码部分的执行线程而执行。
8.一种信息处理系统,包括一个或多个处理器;可由处理器访问的存储器;可由处理器访问的非易失存储设备;用于控制执行线程对处理器的访问的抢先式多任务操作系统;以及延迟的优先级工具,用于对执行线程进行延迟的优先级增强操作,所述延迟的优先级工具包括用于通过更新用户模式可访问的数据区来指出执行线程需要较高的优先级的装置,执行指出操作不提高对应于所述执行线程的优先级;用于检测抢先事件的装置;用于响应检测到的抢先事件读取用户模式可访问的数据区的装置;以及基于用户模式可访问的数据变换所述执行线程的优先级的装置。
9.根据权利要求8所述的信息处理系统,进一步包括用于在执行线程进入关键部分之前更新优先级偏移量的装置,其中所述优先级偏移量包括在用户模式可访问的数据中;以及其中所述执行线程的优先级的变换基于优先级偏移量进行。
10.根据权利要求9所述的信息处理系统,进一步包括用于在用户模式可访问的数据内设置一个关键部分标志,指出所述执行线程位于所述关键部分的装置;以及在用户模式可访问的数据内设置一个优先级应用标志,指出所述执行线程的优先级没有被变换的装置。
11.根据权利要求10所述的信息处理系统,其中用于检测的装置、用于读取的装置和用于变换的装置进一步包括用于在内核进程中判断是否已经设置了所述关键部分标志,以及所述优先级应用标志是否指出所述执行线程的优先级没有被变换的装置;用于响应所述判断执行变换的装置;以及用于设置所述优先级应用标志,指出所述线程的优先级已经被变换的装置。
12.根据权利要求11所述的信息处理系统,进一步包括用于在用户模式可访问的数据内设置所述关键部分标志,指出所述执行线程不再位于所述关键部分的装置;用于在内核进程中接收第二抢先事件的装置;用于在内核进程中判断不再设置所述关键部分标志,以及所述优先级应用标志指出所述执行线程的优先级已经被变换的装置;用于响应不再设置所述关键部分标志以及所述优先级标志指出所述执行线程的优先级已经被变换的判断,重新变换所述执行线程的优先级的装置,变换量为所述优先级偏移量;以及用于重置优先级应用标志,指出不再变换所述执行线程的优先级的装置。
13.根据权利要求8所述的信息处理系统,进一步包括用于将执行线程的已变换的优先级与对应于等待线程的优先级进行比较的装置;用于如果所述等待线程的优先级优于执行线程的已变换的优先级,则抢先于执行线程的装置;以及用于如果所述执行线程的已变换的优先级优于等待线程的优先级,则继续执行所述执行线程的装置。
14.一种存储在计算机可操作的介质中的用于变换所述执行线程的优先级的计算机程序产品,所述计算机程序产品包括用于通过更新用户模式可访问的数据区来指出执行线程需要较高的优先级的装置,执行指出操作不提高对应于所述执行线程的优先级;用于检测抢先事件的装置;用于响应检测到的抢先事件读取用户模式可访问的数据区的装置;以及基于用户模式可访问的数据变换所述执行线程的优先级的装置。
15.根据权利要求14所述的计算机程序产品,进一步包括用于在执行线程进入关键部分之前更新优先级偏移量的装置,其中所述优先级偏移量包括在用户模式可访问的数据中;以及其中所述执行线程的优先级的变换基于优先级偏移量进行。
16.根据权利要求15所述的计算机程序产品,进一步包括用于在用户模式可访问的数据内设置一个关键部分标志,指出所述执行线程位于关键部分内的装置;以及在用户模式可访问的数据内设置一个优先级应用标志,指出所述执行线程的优先级没有被变换的装置。
17.根据权利要求16所述的计算机程序产品,其中用于检测的装置、用于读取的装置和用于变换的装置进一步包括用于在内核进程中判断是否已经设置了所述关键部分标志,以及所述优先级应用标志是否指出所述执行线程的优先级没有被变换的装置;用于响应所述判断执行变换的装置;以及用于设置所述优先级应用标志,指出所述线程的优先级已经被变换的装置。
18.根据权利要求17所述的计算机程序产品,进一步包括用于在用户模式可访问的数据内设置所述关键部分标志,指出所述执行线程不再位于所述关键部分的装置;用于在内核进程中接收第二抢先事件的装置;用于在内核进程中判断不再设置所述关键部分标志,以及所述优先级应用标志指出所述执行线程的优先级已经被变换的装置;用于响应不再设置所述关键部分标志以及所述优先级标志指出所述执行线程的优先级已经被变换的判断,重新变换所述执行线程的优先级的装置,变换量为所述优先级偏移量;以及用于重置优先级应用标志,指出不再变换所述执行线程的优先级的装置。
19.根据权利要求14所述的计算机程序产品,进一步包括用于将执行线程的已变换的优先级与对应于等待线程的优先级进行比较的装置;用于如果所述等待线程的优先级优于执行线程的已变换的优先级,则抢先于执行线程的装置;以及用于如果所述执行线程的已变换的优先级优于等待线程的优先级,则继续执行所述执行线程的装置。
20.根据权利要求14所述的计算机程序产品,其中指出操作是响应利用共享系统资源的进入关键代码部分的执行线程而执行的。
全文摘要
提供了一种用于延迟执行线程的优先级增强的系统和方法。当一个线程准备进入代码的关键部分时,如当线程利用共享系统资源时,用户模式可访问的数据区被更新,指出线程位于关键部分,如果内核接收到抢先事件,则线程应该接收优先级增强。如果在线程完成关键部分之前内核接收到一个抢先事件,则内核代表线程应用优先级增强。线程常常在不需要实际增强其优先级的情况下完成关键部分。如果线程实际接收了优先级增强,那么,在关键部分完成之后,内核会将线程的优先级重置到正常级别。
文档编号G06F9/46GK1627264SQ20041007134
公开日2005年6月15日 申请日期2004年7月20日 优先权日2003年7月24日
发明者乔斯·曼纽尔·阿尔帕迪, 安德鲁·邓舍, 德克·米歇尔, 詹姆斯·W·范·弗利特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1