CN101221515A - 用于调度执行单元的方法和系统 - Google Patents
用于调度执行单元的方法和系统 Download PDFInfo
- Publication number
- CN101221515A CN101221515A CNA2008100022611A CN200810002261A CN101221515A CN 101221515 A CN101221515 A CN 101221515A CN A2008100022611 A CNA2008100022611 A CN A2008100022611A CN 200810002261 A CN200810002261 A CN 200810002261A CN 101221515 A CN101221515 A CN 101221515A
- Authority
- CN
- China
- Prior art keywords
- performance element
- time
- kernel
- thread
- extra
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于调度执行单元的方法和系统,其中,一个执行单元从内核请求额外的执行时间,以防止该执行单元在关键区段的执行过程中被换出。内核判断执行单元以前是否在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。响应于判断出执行单元以前没有在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,内核为该执行单元分配额外的执行时间。
Description
技术领域
本发明涉及用于调度执行单元的方法、系统,以及产品。
背景技术
执行单元是并发执行的实体的集合的一个实体的统称,其中并发执行的实体的集合可以是进程或线程。多任务处理操作系统能够管理在实现该多任务处理操作系统的计算设备内并发执行的多个执行单元。
执行单元可以处于若干个状态的任何一种状态下。当执行单元当前正在利用处理器时,该执行单元可以处于运行状态,而当执行单元正在等待利用处理器时,该执行单元可以处于被阻止状态。例如,当执行单元需要访问关键资源(例如,信号量(semaphore))时,该执行单元可以处于被阻止状态。在处于运行状态一段时间之后,执行单元可以将处理器让给其他执行单元。此外,执行单元还可以被操作系统的内核换出(swap out),即,从运行状态移除,以便该执行单元不再处于运行状态。另外,执行单元还可以被操作系统的内核换入(swap in),以使该执行单元进入运行状态。
在不同的操作系统中可以以不同的方式定义进程和线程。在某些操作系统中,进程是具有其自己的地址空间的“重量级”执行单元,而与诸如与其他线程共享地址空间的线程之类的“轻量级”执行单元相比,“重量级,,执行单元执行起来消耗大量的资源。在某些其他操作系统中,线程是基本执行单元。此外,在某些操作系统中,线程与进程关联,并共享进程的环境。
发明内容
提供了一种方法、系统,以及产品,其中,一个执行单元从内核请求额外的执行时间,以防止该执行单元在关键区段的执行过程中被换出。内核判断执行单元以前是否在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。响应于判断出执行单元以前没有在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,内核为该执行单元分配额外的执行时间。
在另一个实施例中,在内核中保持了第一指示器,其中,该第一指示器指示出执行单元以前是否在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。保持了至少一个第二指示器,其中,该第二指示器指示出内核是否已经为执行单元批准了额外的时间。还保持了第三指示器,该第三指示器指示出执行单元是否已经从内核请求了额外的时间。
在又一个实施例中,响应执行单元从关键区段退出的情况,执行单元更新第三指示器,以指示出额外的时间长于执行单元所需要的时间。响应第三指示器被执行单元更新以指出额外的时间长于执行单元所需要的时间的情况,至少一个其他执行单元被内核换入。
在其他实施例中,执行单元是第一线程。内核判断要被换入以替换第一线程的第二线程是否是与第一线程同一进程的一部分。响应于判断出要被换入以替换第一线程的第二线程是与第一线程同一进程的一部分的情况,不管该进程以前是否在预定时间段内避免过将执行让给其他进程,内核都为第一线程分配额外的执行时间。
在另外的实施例中,执行单元是进程或线程中的一个,其中,内核是操作系统的一部分,其中,执行单元不是内核的一部分,其中,请求、判断、以及分配是通过系统调用来执行的。
附图说明
现在参看附图,在所有附图中,类似的附图标记代表对应的部分:
图1图示了根据某些实施例的计算环境的方框图;
图2图示了示出根据某些实施例的操作系统的进程和内核之间的交互的方框图;
图3图示了根据某些实施例的由进程执行的操作;
图4图示了根据某些实施例的由内核执行的第一操作;
图5图示了根据某些实施例的由内核执行的第二操作;
图6图示了根据某些实施例的由内核执行的第三操作;
图7图示了根据某些实施例的由内核执行的以及由执行单元执行的操作;以及
图8图示了其中实现了某些所描述的实施例的计算机体系结构的方框图。
具体实施方式
在下面的描述中,参考附图,附图构成了本发明的一部分,并图示了多个实施例。应该理解,可以利用其他实施例,也可以进行结构性的和操作性的变化。
多任务处理操作系统中的执行单元的交换
在抢占式多任务处理操作系统中,对应于用户应用程序的进程可能意识到,多任务处理操作系统可能选择在任何时刻换出该进程以有利于另一个进程。有时,当进程持有关键资源例如其他进程执行所需要的锁时,该进程被换出。如果要被换出的进程可以确保在该进程被换出之前该进程释放关键资源,则可以增强总体系统性能。
某些操作系统允许进程监视该进程的时间片中剩余的时间量。这就允许进程在剩余的用于执行的时间对于主动释放关键资源不充足时选择不获取关键资源。当进程被换出时,该进程可以选择基本上立即让出,以避免持有关键资源,或者,该进程也可以选择执行不需要关键资源的某些其他操作。
然而,程序员难以确切地判断进程可能持有关键资源多长时间。程序员可能需要知道在持有关键资源时进程将执行多少操作以及执行什么类型的操作。在不允许进程首先获取一个关键资源,然后从操作的数量和操作的类型估计该进程可能持有该关键资源的时间量的情况下,程序员不可能确切地判断该进程将持有该关键资源多长时间。另外,在企图获得任何关键资源之前,进程可能必须向操作系统查询在该进程的时间片中剩余多长时间。这可能需要对内核进行系统调用,这会给进程的运行时间性能带来不希望有的开销。
存在某些在某些内核中使用的机制,允许内核短时间内禁止线程抢占。这就是抢占如何在某些操作系统的内核中工作的。例如,在某些操作系统中,内核抢先是默认打开的,但是可以被关键区段周围的内核代码关闭。然而,这不能被对应于用户应用程序的进程使用,因为用户应用程序不在内核中执行。
某些实施例实现了允许对应于用户应用程序的进程请求有限量的额外时间的内核服务,以便防止该进程在执行关键区段的过程中被换出。例如,当进程持有锁或信号量时,可以请求有限量的额外时间。内核不需要为该进程批准额外时间,但是,万一内核为该进程批准额外时间,则通知该进程,该进程应该尽快地将执行让给其他进程。请求了额外时间但是然后未能迅速地让出的进程可以被内核标记为“未及时让出响应”,内核可以在将来避免批准这样的“未及时让出响应”进程的对额外时间的请求。
某些实施例构建了请求机制,以便这些请求机制给进程和内核增加的开销比较少。结果,每次对应于用户应用程序的进程请求锁或任何其他类型的关键资源时,该进程都能够请求额外时间。例如,可以利用指示器(如存储器中的标志)来实现某些实施例,以便不需要进行系统调用,并且在这种情况下,为实现这些实施例所添加的运行时间开销是有限的。
示例性实施例
图1图示了根据某些实施例的包括计算设备101的计算环境100的方框图。计算设备101可以包括任何合适的计算平台,包括那些本领域中目前已知的平台,如个人计算机、工作站、大型机、中程计算机、网络设备、掌上计算机、电话设备、刀片计算机、手持式计算机等等。计算设备101包括操作系统102,该操作系统102包括内核103,其中,操作系统102可以包括任何合适的操作系统,包括那些本领域中目前已知的操作系统。
多个执行单元,如对应于多个用户应用程序的多个进程104a...104n,在计算设备101内执行。由于多个进程104a...104n对应于用户应用程序,因此,该多个进程在内核103的执行空间外部执行。在某些实施例中,该多个执行单元104a...104n可以是线程而不是进程,或者不仅有进程而且有线程。
对应于进程104a...104n中的每一个进程,计算设备101保持多个进程存储器106a...106n,其中,进程存储器106a对应于进程104a,而进程存储器106n对应于进程104n。每一个进程存储器106a...106n都包括关于进程104a...104n在计算设备101中的执行的数据和指示器。例如,进程存储器106a...106n可以包括“请求了额外的时间”指示器108a...108n和“批准了额外的时间”指示器110a...110n。“请求了额外的时间”指示器,如“请求了额外的时间”指示器108a,指示出对应的进程如进程104a是否需要额外的时间段来继续关键区段的执行。“批准了额外的时间”指示器如“批准了额外的时间”指示器110a指示出内核103是否已经为对应的进程(如进程104a)批准了额外的时间段以继续执行关键区段。
对应于进程104a...104n中的每一个进程,内核103保持多个进程元数据112a...112n,其中,进程元数据112a对应于进程104a,而进程元数据112n对应于进程104n。每一个进程元数据112a...112n都包括关于进程104a...104n的执行的一个或多个指示器,其中,这些指示器可以供内核103使用。例如,进程元数据112a...112n可以包括“批准了额外的时间”指示器114a...114n和“未及时让出响应进程”指示器116a...116n。内核103中的“批准了额外的时间”指示器如“批准了额外的时间”指示器114a指示出对应的进程如进程104a是否已经请求了额外的时间段来继续关键区段的执行。“未及时让出响应进程”指示器,如“未及时让出响应进程”指示器116a,指示出对应的进程如进程104a是否是未及时让出响应进程,其中,未及时让出响应进程是这样的进程:在响应进程作出的至少一个以前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他进程。在不同的实施例中,预定时间段的量可以不同。
在某些示例性实施例中,“未及时让出响应进程”指示器116a可以被称为第一指示器,“批准了额外的时间”指示器110a、114a可以被称为第二指示器,而“请求了额外的时间”指示器108a可以被称为第三指示器。因此,图1图示了某些实施例,其中,在内核103中保持了第一指示器116a,其中,第一指示器116a指示出执行单元104a以前是否在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。保持了至少一个第二指示器110a、114a,它们指示出内核103是否已经为执行单元104a批准了额外的时间。还保持了第三指示器108a,该第三指示器指示出执行单元104a是否已经从内核103请求了额外的时间。
图2图示了示出根据某些实施例的操作系统102的执行单元(如进程104a)和内核103之间的交互的方框图。
在某些实施例中,进程104a可以请求(附图标记200)额外的时间以防止在关键区段的执行过程中被换出,其中,关键区段是一段代码,在该段代码中,进程104a使用一个或多个可以被其他进程使用的资源,其中,所述一个或多个资源不准供其他进程和进程104a同时使用。作为响应,响应判断出进程104a不是由“未及时让出响应进程”指示器116a所指示出的未及时让出响应进程,内核103可以为进程104a批准(附图标记202)额外的时间,并请求进程104a应该尽可能快地让位于其他进程。如果进程104a是由“未及时让出响应进程”指示器104a所指示出的未及时让出响应进程,那么,内核103可以拒绝(附图标记204)为进程104a批准额外的时间。
图3图示了根据某些实施例的由进程(如进程104a)执行的操作。图3中所示的操作在计算环境100的计算设备101中实现。
控制从方框300开始,在此,进程104a与内核103进行交互以确定“请求了额外的时间”指示器108a和“批准了额外的时间”指示器110a在进程存储器106a中的位置。控制进入方框302,在此,进程104a判断进程104a是否即将锁定关键资源。如果是,那么,进程104a设置(在方框304中)“请求了额外的时间”指示器108a,其中,设置“请求了额外的时间”指示器108a表示进程104a请求了额外的时间以执行关键区段。如果否,那么,进程104a(在方框306中)继续执行,并且如果需要就进程104a是否即将锁定关键资源作出判断,则控制可以再一次返回到方框302。
在一段时间经过之后(附图标记308),进程104a(在方框312)释放关键资源并(在方框314)清除“请求了额外的时间”指示器108a,进程104a向内核103指示出(在方框316),如果设置了“批准了额外的时间”指示器110a、114a,则指示进程104a即将换出。在某些实施例中,一个进程可以获取许多锁,在比较长的时间段内将只有一次是调度器运行而同时进程持有其中一个锁。在这样的实施例中,进程只在如下情况下通知内核103:进程事实上在宽限下运行,即,已经为进程批准了额外的时间。
因此,图3图示了某些实施例,其中,执行单元104a更新“请求了额外的时间”指示器108a,以指示出执行单元104a是否请求了额外的时间用以执行关键区段。响应执行单元104a从关键区段退出的情况,执行单元104a还更新“请求了额外的时间”指示器108a,以指示出额外的时间长于执行单元104a所需要的时间。
图4图示了根据某些实施例的由内核103执行的第一操作。图4中所示的操作在计算环境100的计算设备101中实现。
控制从方框400开始,其中,内核103启动或继续进程104a...104n的调度。内核103(在方框402中)判断是否为进程104a设置了“请求了额外的时间”指示器108a。如果是,那么内核103(在方框404中)判断是否为进程104a设置了“未及时让出响应进程”指示器116。如果内核103(在方框404中)判断出没有为该进程设置“未及时让出响应进程”指示器116,那么,内核103提供进程104a的优先级的临时增大,并(在方框408中)开始进行进程切换选择。
内核103(在方框410中)判断是否即使没有设置“请求了额外的时间”指示器108a也会允许进程104a继续运行。如果否,那么内核103(在方框412中)判断若不管“请求了额外的时间”指示器108a的状态则进程104a是否会被换出。如果已经为进程104a设置了“未及时让出响应进程”指示器116a,则会将进程104a换出。因此,某些实施例判断以前实现的调度机制是否会允许进程104a继续运行。如果是,那么宽限即额外的时间的批准不应用于进程104a。然而注意,为进程批准了宽限并不意味着进程将继续运行,而是意味着进程获得临时的优先级的提高。为什么一个进程可能被换出的其他示例性原因包括:存在另一个希望运行的优先级非常高的进程;由于某种原因进程被阻止,如页面错误等等。
如果内核103判断(在方框412中)进程104a将不会被换出,则不管“请求了额外的时间”指示器108a的状态如何,控制进入方框414。进程104a判断(在方框414中)进程104a是否将被允许继续运行,但是只是因为已经设置了“请求了额外的时间”指示器108a。如果进程104a判断(在方框414中)因为已经设置了“请求了额外的时间”指示器108a而将允许进程104a继续运行,那么,控制进入方框416。内核103在进程存储器110a中设置(在方框416中)“批准了额外的时间”指示器110a。在方框418中,内核103在内核103内保持的进程元数据112a中设置“批准了额外的时间”指示器114a。控制从方框418进入方框422,在此,内核103考虑下一进程。
如果方框410的执行导致肯定的回答,或者如果方框412的执行导致肯定的回答,或者如果方框414的执行导致否定的回答,那么,内核103继续(在方框420中)执行进程104a,就好像从来没有为进程104a设置“请求了额外的时间”指示器108a。控制从方框420进入方框422,在此,内核103考虑下一进程,并且控制返回到方框402,在此,对于下一进程进行判断。此外,如果方框402的执行导致否定的回答,或者如果方框404的执行导致肯定的回答,那么,控制进入方框408,在此,内核103开始进行进程切换选择。
因此,图4图示了某些实施例,其中,内核103响应来自进程104a的对额外的时间的请求,在内核103内保持的进程元数据112a中设置“批准了额外的时间”指示器114a。
图5图示了根据某些实施例的由内核103执行的第二操作。图5中所示的操作在计算环境100的计算设备101中实现。
控制从方框500开始,在此,内核103执行操作,并且控制从方框500并行地前进(附图标记501)到方框502和504。
在方框502中,内核103接收到进程104a希望让位于其他进程的指示。内核103(在方框506中)清除内核103的进程存储器106a中的“批准了额外的时间”指示器108a和进程元数据112a中的“批准了额外的时间”指示器114a,并可以换入不同于进程104a的某些其他进程。在一段时间经过之后(附图标记508),内核103可以换入(在方框510中)曾让位于其他进程的进程104a。
在方框504中,内核103判断已经被批准了额外的时间的进程104a是否超出阈值时间段执行而没有让位于其他进程。如果是,那么,内核(在方框512)终止批准给进程104a的额外的时间,并设置对应于进程104a的“未及时让出响应进程”指示器116a,以指示出进程104a是一个未及时让出响应进程。如果在方框504中内核103判断出被批准了额外的时间的进程104a没有超出阈值时间段执行而不让位于其他进程,那么,内核103(在方框516)继续执行进程104a。
因此,图5图示了其中内核103清除“批准了额外的时间”指示器110a、114a并用另一个进程替换进程104a的某些实施例。此外,如果一个进程已经超出阈值时间段执行而不让出,则内核103可以将该进程指示为未及时让出响应进程。
图6图示了根据某些实施例的由内核103执行的第三操作。图6中所示的操作在计算环境100的计算设备101中实现,其中,执行单元104a...104n可以包括进程以及属于这些进程的线程。
控制从方框600开始,并继续执行到方框602,其中,方框602示出了内核103正在执行属于一个进程的第一线程,所述进程的“请求了额外的时间”指示器被设置在进程存储器106a...106n中。内核103(在方框604中)判断将要切换到的第二线程是否是与第一线程同一进程的一部分。如果是,那么,内核103(在方框606中)允许继续执行第一线程,即使设置了对应于该进程的“未及时让出响应进程”指示器,并且处理停止(在方框608中)。
如果内核103(在方框604中)判断将被切换到的第二线程不是与第一线程同一进程的一部分,那么,就该进程是否表现良好即就是否没有为该进程设置“未及时让出响应进程”指示器作出判断(在方框610中)。如果在方框610中判断出该进程表现良好,那么,内核103(在方框612中)允许第一线程继续执行。如果在方框610中判断出该进程表现并不良好,那么,内核103(在方框614中)换出第一线程并换入第二线程。从方框612和614,控制可以进入方框608,处理停止。
因此,图6图示了其中执行单元是第一线程的某些实施例,其中,内核103判断出,将被换入以替换第一线程的第二线程是与第一线程同一进程的一部分。响应于判断出将要被换入以替换第一线程的第二线程是与第一线程同一进程的一部分,不管该进程以前是否在预定时间段内避免过将执行让给其他进程,内核103都为第一线程分配额外的执行时间。
假设某一进程内的所有线程都是同一个程序的一部分,则如果内核103正要切换到的线程位于同一个进程内部,则内核103可以优选不换出被设置了“批准了额外的时间”指示器的线程。当一个线程持有关键资源时,该进程中的其他线程正是最有可能竞争该同一个资源的线程。这样做是可以接受的,因为在最坏情况下,未及时让出响应线程将只打断作为同一个进程的一部分的线程。
图7图示了根据某些实施例的由内核103执行的以及由执行单元执行的操作。图7中所示的操作在计算环境100的计算设备101中实现。
控制从方框700开始,其中,执行单元104a从内核103请求额外的执行时间,以防止该执行单元104a在关键区段的执行过程中被换出。内核103(在方框702中)判断执行单元104a以前是否在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。响应于判断出执行单元以前没有在响应至少一个之前的对额外的执行时间的请求而被分配了额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,内核为该执行单元(在方框704中)分配额外的执行时间。
在图7中所示的某些实施例中,执行单元104a是进程或线程中的一个,其中,内核103是操作系统102的一部分,其中,执行单元104a不是内核103的一部分,其中,请求、判断、以及分配是通过系统调用而不是通过指示器的写入来执行的。
另外的实施例细节
所描述的技术可以作为方法、设备、或产品来实现,所述产品涉及软件、固件、微代码、硬件和/或其任何组合。这里所使用的术语“产品”是指以介质实现的代码或逻辑,其中,这样的介质可以包括硬件逻辑[例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等]或计算机可读取的存储介质,如磁存储介质(例如,硬盘驱动器、软盘、磁带等等)、光存储器(CD-ROM、光盘、等等)、易失性和非易失性存储器设备[例如,电可擦可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、固件、可编程逻辑等等]。计算机可读取的存储介质中的代码由处理器进行访问和执行。其中编码了代码或逻辑的介质也可以包括通过空中或诸如光导纤维、铜线等等之类的传输介质传播的传输信号。其中编码了代码或逻辑的传输信号可以进一步包括无线电信号、卫星传输、无线电波、红外信号,蓝牙等等。其中编码了代码或逻辑的发射信号能够通过发射台发射,并由接收台接收,其中,可以对传输信号中编码的代码或逻辑进行解码,并存储在接收和发射台或设备中的硬件或计算机可读取的介质中。另外,“产品”可以包括在其中包含了代码、对代码进行处理、并执行代码的硬件和软件组件的组合。当然,那些本领域技术人员将认识到,在不偏离实施例的范围的情况下,可以作出许多修改,产品可以包括任何信息承载介质。例如,产品包括其中存储有指令的存储介质,当由机器执行该指令时,使得执行操作。
某些实施例可以采取完全是硬件的实施例、完全是软件的实施例或包含硬件和软件元件两者的实施例的形式。在一个优选实施例中,本发明是以软件实现的,包括但不限于固件、驻留软件、微代码等等。
此外,某些实施例还可以采取计算机程序产品的形式,所述计算机程序产品可以从计算机可使用的或计算机可读取的介质进行访问,其中所述介质提供了程序代码,供计算机或任何指令执行系统使用或与它们一起使用。为了对于此说明书的目的,计算机可使用的或计算机可读取的介质可以是能够包含、存储、传递、传播或传输供指令执行系统、设备、或装置使用或与它们一起使用的程序的任何设备。介质可以是电子的、磁性的、光学的、电磁的、红外线的或半导体系统(或者设备或装置)或传播介质。计算机可读取的介质的示例包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前示例包括紧凑盘-只读存储器(CD-ROM)、紧凑盘读取/写入(CD-R/W)、以及DVD。
术语“某些实施例”、“一个实施例”、“实施例”、“各实施例”、“该实施例”、“这些实施例”、“一个或多个实施例”、“一些实施例”是指一个或多个(但不是所有)实施例,除非以别的方式明确地说明。术语“包括”、“包含”、“具有”以及其变体是指“包括但不限于”,除非以别的方式明确地说明。所列举的项目的列表也不暗指任何或所有项目是互相排斥的,除非以别的方式明确地说明。术语“一个”、“该”和“所述”是指“一个或多个”,除非以别的方式明确地说明。
彼此进行通信的设备不需要彼此连续地进行通信,除非以别的方式明确地说明。此外,彼此进行通信的设备可以直接地进行通信,也可以通过一个或多个中介物间接地进行通信。另外,利用若干个彼此进行通信的组件来对实施例进行描述并不意味着所有这样的组件都是需要的。相反,描述了各种可选的组件,以说明大量各种可能的实施例。
此外,虽然可能按顺序的次序描述了处理步骤、方法步骤、算法等等,但是,这样的处理、方法和算法也可以被配置为按交替的次序工作。换句话说,可以描述的步骤的任何序列或次序不一定表示要求这些步骤按照该次序来执行。这里所描述的处理的步骤可以按任何实际的次序来执行。此外,一些步骤可以同时、并行、或并发地执行。
当在此描述单个装置或产品时,显然,也可以使用一个以上的装置/产品(不管它们是否协作)来代替单个装置/产品。类似地,在此描述一个以上的装置或产品的情况下(不管它们是否协作),显然,也可以使用单个装置/产品来代替一个以上的装置或产品。装置的功能和/或特征可以由一个或多个没有明确地被描述为具有这样的功能/特征的其他装置来实现。如此,其他实施例不需要包括该装置本身。
图8图示了计算系统800的体系结构,其中,在某些实施例中,可以根据计算系统800的体系结构来实现图1的计算环境100的计算设备101。计算系统800也可以被称为系统,并可以包括电路802,在某些实施例中该电路802可以包括处理器804。系统800也可以包括存储器806(例如,易失性存储器设备),以及存储装置808。存储装置808可以包括非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等等)、磁盘驱动器、光盘驱动器、磁带驱动器等等。存储装置808可以包括内部存储装置,连附的存储装置和/或可访问网络的存储装置。系统800可以包括程序逻辑810,该程序逻辑810包括代码812,该代码812可以加载到存储器806中,并可以由处理器804或电路802执行。在某些实施例中,包括代码812的程序逻辑810可以被存储在存储装置808中。在某些其他实施例中,程序逻辑810可以在电路802中实现。因此,尽管图8与其他元件分离地示出了程序逻辑810,但是,程序逻辑810可以在存储器806和/或电路802中实现。
某些实施例可以针对通过人或将计算机可读取的代码集成到计算系统中的自动处理来部署计算指令的方法,其中,代码和计算系统组合起来能够执行所描述的实施例的操作。
图1-8中所示的至少某些操作可以并行地以及顺序地执行。在替换实施例中,某些操作可以按不同的次序执行,也可以加以修改或删除。
此外,为了说明,许多软件和硬件组件被描述为位于分开的模块中。这样的组件可以集成到较少数量的组件中或被分成更多数量的组件。另外,被描述为由特定组件执行的某些操作也可以由其他组件来执行。
在图1-8中所示或引用的数据结构和组件被描述为具有特定类型的信息。在替换实施例中,数据结构和组件可以以不同的方式被构建,并且可以比图中所示的或引用的具有更少、更多或不同的字段或不同功能。
因此,前面的对实施例的描述只是为了说明和描述的目的而呈现。它不是详尽的说明也不意图将实施例限于所公开的确切的形式。受益于根据上述教导,能够做出许多修改方案和变化。
Claims (16)
1.一种方法,包括:
由执行单元从内核请求额外的执行时间,以防止所述执行单元在关键区段的执行过程中被换出;
由所述内核判断所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元;以及
响应于判断出所述执行单元以前没有在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,由所述内核为所述执行单元分配所述额外的执行时间。
2.根据权利要求1所述的方法,进一步包括:
在所述内核中保持第一指示器,其中,所述第一指示器指示出所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元;
保持至少一个第二指示器,所述第二指示器指示出所述内核是否已经为所述执行单元批准所述额外的时间;以及
保持第三指示器,所述第三指示器指示出所述执行单元是否已经从内核请求了所述额外的时间。
3.根据权利要求2所述的方法,所述方法进一步包括:
响应所述执行单元从所述关键区段退出的情况,由所述执行单元更新所述第三指示器,以指出所述额外的时间长于所述执行单元所需要的时间;以及
响应第三指示器被所述执行单元更新以指示出所述额外的时间长于所述执行单元所需要的时间的情况,由所述内核换入至少一个其他执行单元。
4.根据权利要求1所述的方法,其中,所述执行单元是第一线程,所述方法进一步包括:
由所述内核判断将要被换入以替换所述第一线程的第二线程是否是与所述第一线程同一进程的一部分;以及
响应于判断出将要被换入以替换所述第一线程的所述第二线程是与所述第一线程同一进程的一部分的情况,不管所述进程以前是否在预定时间段内避免过将执行让给其他进程,所述内核都为所述第一线程分配所述额外的执行时间。
5.根据权利要求1所述的方法,其中,所述执行单元是进程或线程中的一个,其中,所述内核是操作系统的一部分,其中,所述执行单元不是所述内核的一部分,其中,所述请求、所述判断、以及所述分配是通过系统调用执行的。
6.一种系统,包括:
存储器;以及
耦接到所述存储器的处理器,其中,所述处理器执行操作,所述操作包括:
(i)由执行单元从内核请求额外的执行时间,以防止所述执行单元在关键区段的执行过程中被换出;
(ii)由所述内核判断所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元;以及
(iii)响应于判断出所述执行单元以前没有在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,所述内核为所述执行单元分配所述额外的执行时间。
7.根据权利要求6所述的系统,所述操作进一步包括:
在所述内核中保持第一指示器,其中,所述第一指示器指示出所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元;
保持至少一个第二指示器,所述第二指示器指示出所述内核是否已经为所述执行单元批准所述额外的时间;以及
保持第三指示器,所述第三指示器指示出所述执行单元是否已经从内核请求了所述额外的时间。
8.根据权利要求7所述的系统,所述操作进一步包括:
响应所述执行单元从所述关键区段退出的情况,由所述执行单元更新所述第三指示器,以指示出所述额外的时间长于所述执行单元所需要的时间;以及
响应第三指示器被所述执行单元更新以指示出所述额外的时间长于所述执行单元所需要的时间的情况,由所述内核换入至少一个其他执行单元。
9.根据权利要求6所述的系统,其中,所述执行单元是第一线程,所述操作进一步包括:
由所述内核判断将要被换入以替换所述第一线程的第二线程是否是与所述第一线程同一进程的一部分;以及
响应于判断出将要被换入以替换所述第一线程的所述第二线程是与所述第一线程同一进程的一部分的情况,不管所述进程以前是否在预定时间段内避免过将执行让给其他进程,所述内核都为所述第一线程分配所述额外的执行时间。
10.根据权利要求6所述的方法,其中,所述执行单元是进程或线程中的一个,其中,所述内核是操作系统的一部分,其中,所述执行单元不是所述内核的一部分,其中,所述请求、所述判断、以及所述分配是通过系统调用执行的。
11.一种用于部署计算基础架构的方法,包括将计算机可读的代码集成到计算机中,其中,所述代码与所述计算机相结合能够执行以下操作:
由执行单元从内核请求额外的执行时间,以防止所述执行单元在关键区段的执行过程中被换出;
由所述内核判断所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元;以及
响应于判断出所述执行单元以前没有在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元,由所述内核为所述执行单元分配所述额外的执行时间。
12.根据权利要求11所述的用于部署计算基础架构的方法,其中,所述代码与所述计算机相结合进一步能够执行以下操作:
在所述内核中保持第一指示器,其中,所述第一指示器指示出所述执行单元以前是否在响应至少一个之前的对所述额外的执行时间的请求而被分配了所述额外的执行时间之后的预定时间段内避免过将执行让给其他执行单元。
保持至少一个第二指示器,所述第二指示器指示出所述内核是否已经为所述执行单元批准所述额外的时间;以及
保持第三指示器,所述第三指示器指示出所述执行单元是否已经从内核请求了所述额外的时间。
13.根据权利要求12所述的用于部署计算基础架构的方法,其中,所述代码与所述计算机相结合进一步能够执行以下操作:
响应所述执行单元从所述关键区段退出的情况,由所述执行单元更新所述第三指示器,以指示出所述额外的时间长于所述执行单元所需要的时间;以及
响应第三指示器被所述执行单元更新以指示出所述额外的时间长于所述执行单元所需要的时间的情况,由所述内核换入至少一个其他执行单元。
14.根据权利要求11所述的用于部署计算基础架构的方法,其中,所述执行单元是第一线程,其中,所述代码与所述计算机相结合进一步能够执行以下操作:
由所述内核判断将要被换入以替换所述第一线程的第二线程是否是与所述第一线程同一进程的一部分;以及
响应于判断出将要被换入以替换所述第一线程的所述第二线程是与所述第一线程同一进程的一部分的情况,不管所述进程以前是否在预定时间段内避免过将执行让给其他进程,所述内核都为所述第一线程分配所述额外的执行时间。
15.根据权利要求11所述的用于部署计算基础架构的方法,其中,所述执行单元是进程或线程中的一个,其中,所述内核是操作系统的一部分,其中,所述执行单元不是所述内核的一部分,其中,所述请求、所述判断、以及所述分配是通过系统调用执行的。
16.一种产品,其中,所述产品能够在计算机上引起操作,所述操作包括:
根据前面的方法权利要求所述的任何方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/621,495 | 2007-01-09 | ||
US11/621,495 US8024739B2 (en) | 2007-01-09 | 2007-01-09 | System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101221515A true CN101221515A (zh) | 2008-07-16 |
CN101221515B CN101221515B (zh) | 2010-06-09 |
Family
ID=39595384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100022611A Active CN101221515B (zh) | 2007-01-09 | 2008-01-08 | 用于调度执行单元的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8024739B2 (zh) |
CN (1) | CN101221515B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407924A (zh) * | 2014-10-31 | 2015-03-11 | 小米科技有限责任公司 | 内存优化方法及装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334641A (ja) * | 2006-06-15 | 2007-12-27 | Sony Corp | 情報処理装置および方法、並びにプログラム |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US9201673B2 (en) * | 2008-07-30 | 2015-12-01 | Microsoft Technology Licensing, Llc | Efficient detection and response to spin waits in multi-processor virtual machines |
US8352623B2 (en) * | 2008-09-17 | 2013-01-08 | International Business Machines Corporation | System for energy efficient computer management environment via tightly integrated target status and directed work sessions |
US9086922B2 (en) | 2009-10-26 | 2015-07-21 | Microsoft Technology Licensing, Llc | Opportunistically scheduling and adjusting time slices |
KR20120067825A (ko) * | 2010-12-16 | 2012-06-26 | 한국전자통신연구원 | 임베디드 리눅스를 위한 적응형 프로세스 스케쥴링 방법 |
KR101880452B1 (ko) * | 2012-02-06 | 2018-08-17 | 삼성전자주식회사 | 커널 수행 순서 스케줄링 방법 및 장치 |
US10169137B2 (en) * | 2015-11-18 | 2019-01-01 | International Business Machines Corporation | Dynamically detecting and interrupting excessive execution time |
US11281493B2 (en) * | 2018-05-30 | 2022-03-22 | Texas Instruments Incorporated | Real-time context specific task manager for multi-core communication and control system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59310052D1 (de) * | 1993-11-26 | 2000-07-06 | Siemens Ag | Recheneinheit mit mehreren ausführbaren Tasks |
US6260057B1 (en) * | 1995-03-01 | 2001-07-10 | Sun Microsystems, Inc. | Apparatus and method for high performance implementation of system calls |
JPH0954699A (ja) * | 1995-08-11 | 1997-02-25 | Fujitsu Ltd | 計算機のプロセススケジューラ |
US5987492A (en) * | 1997-10-31 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for processor sharing |
US20040117793A1 (en) * | 2002-12-17 | 2004-06-17 | Sun Microsystems, Inc. | Operating system architecture employing synchronous tasks |
US7216346B2 (en) * | 2002-12-31 | 2007-05-08 | International Business Machines Corporation | Method and apparatus for managing thread execution in a multithread application |
JP4750350B2 (ja) * | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
US7278141B2 (en) * | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7380247B2 (en) * | 2003-07-24 | 2008-05-27 | International Business Machines Corporation | System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section |
US7162666B2 (en) * | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US7472228B2 (en) * | 2004-10-27 | 2008-12-30 | International Business Machines Corporation | Read-copy update method |
US7765550B2 (en) * | 2005-05-26 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region |
-
2007
- 2007-01-09 US US11/621,495 patent/US8024739B2/en not_active Expired - Fee Related
-
2008
- 2008-01-08 CN CN2008100022611A patent/CN101221515B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407924A (zh) * | 2014-10-31 | 2015-03-11 | 小米科技有限责任公司 | 内存优化方法及装置 |
CN104407924B (zh) * | 2014-10-31 | 2017-11-21 | 小米科技有限责任公司 | 内存优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US8024739B2 (en) | 2011-09-20 |
US20080168447A1 (en) | 2008-07-10 |
CN101221515B (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101221515B (zh) | 用于调度执行单元的方法和系统 | |
CN106663029B (zh) | 用于多处理器系统的定向事件信号告知 | |
US6976135B1 (en) | Memory request reordering in a data processing system | |
CN101221514B (zh) | 选择处理器对程序而言遵循的架构级别的方法、处理器及系统 | |
US7853950B2 (en) | Executing multiple threads in a processor | |
US20070169125A1 (en) | Task scheduling policy for limited memory systems | |
CN101361036B (zh) | 变更虚拟机监控器中的调度器的方法和装置 | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US20060069738A1 (en) | Multi-processor computer system | |
US20110161969A1 (en) | Consolidating CPU - Cache - Memory Access Usage Metrics | |
CN104321758A (zh) | 经由共享存储器结构的仲裁存储器访问 | |
CN101743534A (zh) | 通过增长和收缩资源分配来进行调度 | |
CN103299281A (zh) | 防止硬件事务存储器系统非故意丢失事务数据 | |
CN103959275A (zh) | 动态进程/对象范围的存储器关联性调整器 | |
US20090320022A1 (en) | File System Object Node Management | |
CN114168271A (zh) | 一种任务调度方法、电子设备及存储介质 | |
US10360079B2 (en) | Architecture and services supporting reconfigurable synchronization in a multiprocessing system | |
US6374338B1 (en) | Method for performing configuration tasks prior to and including memory configuration within a processor-based system | |
EP3702911B1 (en) | Hardware for supporting os driven load anticipation based on variable sized load units | |
CN100583064C (zh) | 用于从别名地址池中移除别名地址的方法和设备 | |
CN101017450B (zh) | 管理资源请求的设备、系统和方法 | |
US20180373573A1 (en) | Lock manager | |
CN101847128A (zh) | 管理tlb的方法和装置 | |
US20090320036A1 (en) | File System Object Node Management | |
US20050223383A1 (en) | Methods and apparatus for reserving an execution thread |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |