增强调度线程的优先级引导的系统、设备和方法技术方案

技术编号:2864076 阅读:269 留言:0更新日期:2012-04-11 18:40
提供一种增强调度线程的优先级引导的系统、设备和方法。如果正由第二CPU执行,第二线程确定其需要等待锁定被调度为由第一CPU执行的第一线程占据的共享资源,则第二线程通过在其优先级高于第一线程的优先级情况下将第二线程的较高优先级传递给第一线程来引导第一线程的优先级。此外,为了增强第一线程的优先级引导,第二线程将第一线程重新调度为由第二CPU处理。通过在第二CPU上被重新调度,第二线程可以被调度为此后立即执行。

【技术实现步骤摘要】

本专利技术涉及计算机系统中的资源分配。具体地说,本专利技术涉及一种增强调度线程(scheduled thread)的优先级引导的系统、设备和方法。
技术介绍
在任意给定的处理时间,在计算机系统的处理器或CPU上都可能存在多个等待执行的过程或线程。为了最佳利用系统的CPU,需要采用将用于执行的过程或线程进行适当排队的有效机制。被大多数计算机系统用来完成该任务的机制是调度程序。要注意过程是一种程序。在执行程序时,将该程序不确切地称为任务。在大多数操作系统中,任务和程序之间存在一对一的关系。但是,某些操作系统允许将一个程序分为多个任务或线程。这样的系统称为多线程操作系统。为简单起见,在此可互换地使用线程和过程。调度程序是一种对计算机系统的共享资源(例如CPU)的使用进行协调的软件程序。调度程序在这样做的时候,通常采用诸如先进先出(即FIFO)、循环复用(round robin)或后进先出(LIFO)、优先级队列、树等算法或其中的组合。基本上,如果计算机系统具有3个CPU(CPU1,CPU2和CPU3),则每个CPU将因此具有准备处理的队列或运行队列。如果用于给运行队列分配过程的算法是循环复用算法,并且如果将所创建的最后一个过程分配给与CPU2关联的队列,则所创建的下一个过程将分配给CPU3的队列。然后,将下一个创建的过程分配给与CPU1关联的队列等等。由此,将调度程序设计为使每个过程公平地共享计算机系统的资源。例如,有时系统管理员可能希望不同的过程来接收不同的CPU共享时间。在这种情况下,工作负荷管理器(WLM)与调度程序结合使用。WLM给每个过程分配优先级数。一个过程每次消耗一些CPU时间时,其优先级数就减少。该机制允许具有较低优先级数的过程也能接收一些CPU时间。当一个过程正被CPU处理并由于某个原因而需要在处理之前等待一个事件的发生时,为效率起见,该过程可能将其在CPU上的其余机会让给另一个过程而进入休眠。如果该过程锁定了共享的内核资源,它在进入休眠之前不会放弃该锁定。例如,当第一过程正使用诸如缓冲器的共享内核资源时,它将锁定该缓冲器以防止任何其它过程使用该缓冲器。如果第一过程正执行盘输入/输出(I/O),则它可以允许另一个过程使用CPU,并在完成盘I/O的同时进入休眠。一旦盘I/O完成,第一过程就可以醒来。如果具有较高优先级数的第二过程需要同时使用该缓冲器,则它需要等待一段时间,直到第一过程获得一些CPU时间来完成其任务并释放对该缓冲器的锁定。为了减少第二过程可能需要等待的时间,采用了优先级引导。当具有较高优先级数的第二过程将其优先级数传递给具有较低优先级数、且锁定所需要的共享资源的第一过程,以增加第一过程成为下一个被选为接收一定CPU时间的过程的可能性时,就发生优先级引导。如后面将要解释的,尽管现在第一过程具有较高的优先级数,如果当前还有另一个过程正在使用CPU,则第一过程还是不能马上获得CPU。因此,需要用于增强优先级引导的系统和方法,使得锁定共享资源、且其优先级已被引导的过程可以尽快获得一些CPU时间。
技术实现思路
本专利技术提供了一种。如果正由第二CPU执行,第二线程确定自己必须等待锁定被调度为由第一CPU执行的第一线程占据的共享资源,则第二线程可以在其优先级高于第一线程优先级的情况下通过将其优先级传递给第一线程而引导第一线程的优先级。此外,为了增强第一线程的优先级引导,第二线程可以将第一线程重新调度为由第二CPU处理。通过在第二CPU上重新调度,将第二线程调度为随后立即执行。附图说明在所附权利要求中说明了本专利技术的新颖性特点。通过参考下面结合附图对实施例的详细描述,可以最佳理解本专利技术自身以及优选使用模式、其它目的和优点,其中 图1a示出多处理器计算机系统的运行队列。图1b示出在调度了Th1之后多处理器系统的运行队列。图1c示出在调度了Th4之后多处理器的运行队列。图1d示出在调度了Th2之后多处理器的运行队列。图1e示出在将醒来的Th1放入CPU1的运行队列之后多处理器的运行队列。图1f示出在Th1释放了TH2所需的锁定(即TH2已醒来)之后、并假定TH2的优先级仍然高于TH5的优先级时多处理器的运行队列。图2是可以用于实施本专利技术的过程的流程图。图3是实施本专利技术的数据处理系统的框图。具体实施例方式参考附图,图1a示出多处理器计算机系统的运行队列。计算机系统包含3个处理器,CPU0110、CPU1112、CPU2114。CPU0110具有运行队列102。线程TH1、TH4、TH7等调度为在CPU0110上运行,并由此在运行队列102中。类似的,CPU1112具有运行队列103,其中放置了调度为在CPU1112上运行的线程TH2、TH5等,并且CPU2114具有运行队列104,其中放置了调度为在CPU2114上运行的线程TH3、TH6等。将这些线程调度为按照它们在运行队列中的次序执行,除非在运行队列中放置了更高优先级的新线程。当CPU0110准备好处理TH1时,将TH1调度为执行。现在,假定TH1的任务是将数据加载到缓冲器(未示出)中,则TH1锁定该缓冲器,以防止其它线程使用该缓冲器。由于盘I/O是相对较慢的过程,因此当正在执行盘I/O时,TH1可以进入休眠,并放弃CPU0110。由于TH1当前没有使用CPU0110,因此TH4现在可以调度为由CPU0110处理。进一步假定TH2在CPU1112上被调度并需要使用缓冲器,因此不处理TH2,因为TH2需要等待TH1释放对缓冲器的锁定。TH1为了释放该锁定,需要首先获得一些处理时间。为了完成其任务并释放对缓冲器的锁定,TH1可以从计算机系统中的任何可用处理器那里接收处理时间。但是,为了解释本专利技术的缘故,假定TH1需要在CPU0110上接收一些处理时间。因此,TH1在其可以继续之前可能需要等待,直到TH4获得其在CPU0110上的处理机会为止。如前所述,为了增加在TH4获得CPU0时间的共享之后使TH1成为下一个被选为在CPU0110上运行的线程的可能性,可以采用优先级引导。在这种情况下,当TH2意识到它需要等待TH1释放锁定时,TH2将其优先级数传递给TH1。但问题是,除非CPU0110正在执行可以注意到优先级引导的核心代码,否则当发生时间片中断时,CPU0110在此后的最大10毫秒(ms)内不能注意到优先级引导。在大多数基于Unix的系统中,时间片中断周期性地发生(例如每10ms),并由内核用于检查在CPU处理具有较低优先级的线程时具有较高优先级的线程是否准备好运行。为了继续上述例子,在线程TH1接收了优先级引导之后,它可能仍然需要在由CPU0110再次处理之前等待最大10ms。在计算机系统中10ms是很长的时间。本专利技术提供一种可用于增强调度线程的优先级引导的算法。根据本专利技术,在将其优先级传递给TH1之后,TH2还可以通过在其进入休眠之前将TH1放入CPU1的运行队列中来将TH2的CPU时间交给TH1。根据这一优先级,如果TH1已经醒来(即盘I/O已完成),则它可以在进入CPU1的运行队列之后立即调度为执行。由此,下一个调度为在CPU1上运行的线程TH5现在需要在调度为执行之前等待。图1b示出在调度TH1之后多处理器系统的运行队列。图1c示出本文档来自技高网
...

【技术保护点】
一种增强调度线程的优先级引导的方法,包括步骤:由正在第二CPU上执行的第二线程确定是否等待锁定被调度为由第一CPU执行的第一线程占据的共享资源,该第二线程具有高于第一线程的优先级;通过将第二线程的较高优先级传递给第一线程来引 导第一线程的优先级;和通过将第一线程重新调度为在第二CPU上运行来增强第一线程的优先级引导。

【技术特征摘要】
US 2003-10-9 10/682,3871.一种增强调度线程的优先级引导的方法,包括步骤由正在第二CPU上执行的第二线程确定是否等待锁定被调度为由第一CPU执行的第一线程占据的共享资源,该第二线程具有高于第一线程的优先级;通过将第二线程的较高优先级传递给第一线程来引导第一线程的优先级;和通过将第一线程重新调度为在第二CPU上运行来增强第一线程的优先级引导。2.根据权利要求1所述的方法,其中在增强所述第一线程的优先级引导时,该第一线程成为下一个被调度为执行的线程。3.根据权利要求2所述的方法,其中在增强了所述第一线程的优先级引导之后,第二线程通过进入休眠来放弃第二CPU,以等待该第一线程释放所述锁定。4.根据权利要求3所述的方法,其中在第一线程释放了所述锁定之后,第二线程醒来,并被重新调度为由第二CPU执行。5.根据权利要求4所述的方法,其中在被重新调度为由第二CPU执行之后,所述第二线程可能是下一个被调度为执行的线程。6.一种在计算机可读介质上的计算机程序产品,用于增强调度线程的优先级引导,包括用于由正在第二CPU上执行的第二线程确定是否等待锁定被调度为由第一CPU执行的第一线程占据的共享资源的代码装置,该第二线程具有高于第一线程的优先级;用于通过将第二线程的较高优先级传递给第一线程来引导第一线程的优先级的代码装置;和用于通过将第一线程重新调度为在第二CPU上运行来增强第一线程的优先级引导的代码装置。7.根据权利要求6所述的计算机程序产品,其中当增强所述第一线程的优先级引导时,该第一线程成为下一个被调度为执行的线程。8.根据权利要求7所述的计算机程序产品,其中在增强了所述第一线程的优先级引导之后,第二线程通过进入休眠来放弃第二CPU,以等待该第一线程释放所述锁定。9.根据权利要求8所述的计算机程序产品,其中在第一线程释放了所述锁定之后,第二线程醒来,并被重新调度为由第二CPU执行。10.根据权利要求9所述的计算机程序产品,其中在被重新调度为由第二CPU执行之后,所述第二线程可能是下一个被...

【专利技术属性】
技术研发人员:巴苏韦德亚纳撒拉里B布伦纳
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1