CN1952898A - 采用进程线程的自适应分区的进程调度程序 - Google Patents
采用进程线程的自适应分区的进程调度程序 Download PDFInfo
- Publication number
- CN1952898A CN1952898A CNA2006100648185A CN200610064818A CN1952898A CN 1952898 A CN1952898 A CN 1952898A CN A2006100648185 A CNA2006100648185 A CN A2006100648185A CN 200610064818 A CN200610064818 A CN 200610064818A CN 1952898 A CN1952898 A CN 1952898A
- Authority
- CN
- China
- Prior art keywords
- thread
- processor
- budget
- adaptive partition
- transmission
- 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.)
- Pending
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种系统,包括如单独处理器或对称多处理机的处理器、一个或多个存储器存储单元及存储在其中的软件代码。该代码可由处理器执行并包括生成多个分别与一个或多个软件线程关联的自适应分区的代码。每个分区具有相应处理器预算。可执行该代码生成至少一个发送线程和接收线程。接收线程响应发送线程的通信以执行一个或多个对应该通信的任务。调度系统还形成能由处理器执行的代码的至少一部分。在操作中调度系统至少部分基于与各线程有关的自适应分区的处理器预算,选择性地把处理器分配给每个发送和接收线程。在此类发送/接收环境中,调度系统为由接收线程响应发送线程发送的通信使用的处理器分配对与发送线程有关的自适应分区的处理器预算记帐。
Description
技术领域
本发明的目的是提供一种操作系统调度线程等的运行的方式。更具体而言,本发明的目的是具有用于进程线程的自适应分区调度的操作系统。
背景技术
操作系统的内核(kernel)应该能够划分CPU资源,使得系统中活动的每个线程能获得足量的CPU时间以适当地执行相应进程。为达到这个目的,内核应该执行确定如何在多个线程之间分配可用的CPU时间的调度系统。
至少存在三种类型的进程调度系统:FIFO调度系统;轮转方式(round-robin)调度系统;和间发(sporadic)调度系统。在每种系统中,为CPU执行的进程的每个线程分配优先级值。高优先级值被分配给可能对整个系统操作较为重要的线程,而对系统操作不那么重要的线程具有较低的优先级值。调度系统是否允许线程访问CPU也取决于线程的状态。例如,线程可以是就绪(ready)的或是阻塞(blocked)的(尽管其他状态也可以被使用)。当因为线程允许所需的所有条件都满足而使线程能够被执行时,线程是就绪的。相反,当线程尝试启动不能被立即完成的操作并且必须等待某些事件完成之后该线程的执行才可以继续时,该线程是阻塞的。
在FIFO调度系统中,当前执行的线程持续使用所有的CPU时间,直至其由于阻塞而放弃CPU、其完成执行或其被更高优先级的线程所抢占(preempt)为止。一旦这些标准的其中之一被满足,则FIFO调度系统就将CPU分配给处于就绪状态的最高优先级的进程/线程。通常,关于每个优先级水平都有一个就绪的队列。
轮转方式的调度系统使用附加参数,时间片,来将CPU时间分配给线程。时间片是允许线程访问CPU期间的时间量。在轮转方式的调度系统中,当前执行的线程持续使用所有的CPU时间直至发生以下事件中的一个:1)当前执行的进程阻塞;2)当前执行的进程结束;3)当前执行的进程被优先级更高的线程抢占;或4)当前执行的进程使用完其时间片。一旦当前执行的进程阻塞或使用完其时间片,将其放到其优先级的就绪队列的后端。
间发调度有些类似轮转方式的调度。在间发调度系统中,当前执行的进程持续使用全部CPU时间,直到发生以下事件中的一个:1)当前执行的进程阻塞;2)当前执行的进程结束;3)当前执行的进程被优先级更高的线程抢占;或4)当前执行的进程使用完在给定时段内分配给线程的执行时间的加盖(capped)限制。这种加盖限制被称为预算(budget),而可以使用这种预算的给定时段被称为补充周期(replenishment period)。在操作中,当补充周期到期时线程的预算被补充。一旦当前执行的进程阻塞,则将其放其优先级水平的就绪队列的后部。但,如果当前执行的进程使用完补充周期内的它的预算,则其优先级水平被减小到预定值,并将它放到这个较低优先级水平的就绪队列的后部。根据一些不同条件,进程/线程的优先级水平可以恢复到它的原始值。
在某些操作系统中,如Ontario的Kanata的QNX软件系统所开发的系统,系统中的每个线程可以使用前述调度系统中的任意系统来运行。因此,对于节点上的所有线程和进程,调度系统在每个线程的基础上是有效的。通过线程/进程自身的操作,每个线程被分配到特定的调度系统类型。这就为软件设计者提供了相当大程度的设计灵活性,但也产生了要在为相同系统执行代码的软件设计者之间进行协调的需求。这种协调包括将优先级分配给不同线程以及给每个线程分配调度系统类型。
一些可用操作系统在全局基础上应用调度。一种这样的调度被称为公平共享(fair-share)调度。在公平共享调度系统中,可以在各系统使用者、各群组(group)、或各进程中平均分配CPU使用(usage)。例如,如果四个用户(A、B、C、D)每个都在同时使用一个进程,则公平共享调度程序将在逻辑上这样分配可用CPU周期,使得每个用户获得整个周期的25%(100%/4=25%)。如果用户B启动第二个进程,每个用户将仍接收全部周期的25%,但用户B的两个进程每个将接收全部可用CPU时间的12.5%。另一方面,如果新用户在系统上启动进程,则调度程序将重新分配可用的CPU周期,以使得每个用户获得整个周期的20%(100%/5=20%)。
另一层抽象概念允许把分组划分成群组,并且将公平共享系统也应用到这些群组。在这种情况下,可用的CPU周期首先在各群组当中分配,然后在群组内的各用户当中分配,然后在用户的各进程当中分配。例如,如果有三个群组(1,2,3),各群组分别包含三个、两个和四个用户,可用的CPU周期可以按如下这样进行分配:100%/3群组=每群组33.3%,群组1:(33.3%/3个用户)=每用户11.1%,群组2:(33.3%/2个用户)=每用户16.7%,群组3:(33.3%/4个用户)=每用户8.3%。也可以在各群组中采用其他百分比分配。
执行公平共享调度策略的一种逻辑方式是在每个抽象水平(进程、用户、群组、等等)递归地应用轮转方式的调度策略。在轮转方式的调度中,同等重要性或同等优先权的各线程依次运行。它们每一个运行多个间隔或多个时间片的时间,这些间隔或时间片是每个线程或每个线程群组的特性。
虽然前述的调度系统在不同应用方面具有优势,但当它们被用于某些系统应用中时可能会具有缺陷。例如,当每线程调度系统(per-thread scheduling system)被用在这样的实时系统中时,在该实时系统中进程/线程的等待时间完全通过优先级水平的分配而被计划好,可能会发生低优先级的线程的等待时间非常长的情况。恶意软件进程可以把自身配置成能以高优先级执行,从而就能抢占较低优先级线程的正当调度。另外,例如在高优先级线程出现故障并进入无限循环时的系统进展过程期间,也可能会发生这种问题。全局公平共享调度系统可以避免这样的问题,但缺乏在实时系统中使用所需的响应性(responsiveness)。因此,存在对以下这样的系统的需求,该系统可允许高优先级线程有效地实时操作,同时为所有线程提供某种程度的公平共享的CPU访问。
发明内容
提供了一种系统,包括:诸如单个处理器或对称多处理机的处理器,和一个或多个存储器存储单元。该系统还包括存储在存储器存储单元中的软件代码。该软件代码可由处理器执行,并包括用于生成多个自适应分区的代码,其中这些自适应分区的每个都和一个或多个软件线程相关。这些自适应分区中的每一个具有相应的处理器预算。该代码还可以被执行来生成至少一个发送线程和至少一个接收线程。该接收线程能响应来自发送线程的通信,以执行一个或多个对应这些通信的任务。调度系统还形成至少一部分能由处理器执行的代码。在操作中,调度系统至少部分地基于与各线程有关的自适应分区的处理器预算,来选择性地把处理器分配给每个发送和接收线程。在这种类型的发送/接收环境中,调度系统为由接收线程响应发送线程发送的通信使用的处理器分配,对与发送线程有关的自适应分区的处理器预算记帐。
在研究以下的附图和详细说明之后,本发明的其它系统、方法、特点、优点对于本领域技术人员来说都是显而易见的。所有这些其它的系统、方法、特点、优点都包括在本说明中,包括在本发明的范围中,并由所附的权利要求书保护。
附图说明
通过参考以下附图和描述能够更好地理解本发明。图中的组件不一定是按比例来绘制的,其重点实际是放在说明本发明的原理上。此外,在图中,各个不同视图中相似的附图标记代表相应部分。
图1是可依照本发明的公开内容执行进程调度程序的系统的一个
实施例的示意性框图。
图2是说明多个可用于建立采用自适应分区的进程调度程序的相关进程的图。
图3是采用多个根据它们的相关线程和线程优先级的自适应分区的一个示例性进程调度程序的图。
图4是采用多个根据它们的相关线程和线程优先级的自适应分区的另一个示例性进程调度程序的图,其中该进程调度程序在与图3显示的条件不同的条件下操作。
图5是是采用多个根据它们的相关线程和线程优先级的自适应分区的示例性进程调度程序的图,其中至少一个就绪线程被指定成临界(critical)线程。
图6是显示多个相关进程的流程图,其可以被用于在存在发送线程和接收线程的软件环境中实现进程调度程序。
图7是说明与图6说明的进程调度程序有关的操作的图。
图8是显示多个相关进程的流程图,其可用于调度与各种自适应分区有关的线程的运行。
图9是显示多个相关进程的流程图,其可用于确定进程调度程序是否为与运行线程有关的保证预算或临界预算记帐(bill)。
图10是显示多个可用于计算自适应分区使用的相关预算的相关进程的流程图,其中使用的相关预算的值可以在图8显示的进程中采用。
图11是显示多个可用于调度访问相同互斥体(mutex)的线程的运行的相关进程的流程图。
具体实施方式
图1是系统100的示意性框图,其中系统100可以执行采用对进程线程的自适应分区的进程调度程序。系统100包括可访问存储在存储器110中的软件代码的中央处理单元105(“CPU”)。CPU 105还被安排来通过I/O接口115访问各个设备/系统组件。这些设备/系统组件可包括,例如,传感器、人类界面设备、网络节点、打印机、存储设备等。对称多元处理系统中的处理器不论其数目多少都可以被认为与单个处理器的方式相同,并且同样包含在方框105表示的范围内。
存储器110可用于存储定义将由系统100执行的功能的软件代码及其他代码。尽管存储器110被显示为单个单元,但其可被实现为相同或不同存储器类型的多个存储器单元。例如,存储器110可用多个闪存设备来实现。可选的,或者可以附加的,存储器110可用一个或多个闪存设备和一个或多个硬盘存储设备来实现。应该认识到的是,相当多个可选存储设备组合可被用于实现存储器110。
图1中标识了可以存储在存储器110中且可由CPU105执行的软件代码的一部分。这里显示的被标识软件代码包括操作系统120和一个和多个软件应用程序125。在这个实例中,包括了进程调度程序130和设备驱动程序135作为操作系统120的组成部分。但,进程调度程序130和设备驱动程序135还可被实现为与操作系统120相分离的软件模块。软件应用程序125可用于定义系统100将执行的高级功能。设备驱动程序135可被用于提供硬件抽象层,软件应用程序125通过该硬件抽象层与系统100的硬件组件通信。硬件组件可包括通过IO接口115访问的组件。
进程调度程序130包括可执行的软件代码,其用于把CPU105的处理时间(“CPU时间”)分配给系统100的每个线程。CPU时间可以被这样分配,使得每个线程都能获得足量的CPU时间,以正常执行相应的进程。
图2是显示多个可被用于实现进程调度程序130的相关操作的流程图。图2的流程图说明了在进程调度程序130中使用的许多值和操作特性。一些值和操作特性可在设计过程期间固定为用户选择的结果,而其他值和操作特性是通过用户提供的配置数据提供的和/或通过系统100的软件程序设计提供的。
如所示那样,在方框205处,进程调度程序130产生多个不同的自适应分区。每个自适应分区构成用于与一系列进程线程相关的调度属性的虚拟容器,其中这一系列进程线程被进程调度程序130分成组。为公同或相关功能工作的线程可被分配到相同的自适应分区。在面向对象的系统中,自适应分区可以作为包括相应调度方法和属性的自适应分区种类的实例而被生成。在方框205处生成的自适应分区中的每一个都被唯一地标识,从而让进程调度程序130进一步访问。
进程调度程序130生成的分区数目可以通过利用配置参数来引入。配置数据可以由用户的启动命令提供,或者通过与进程调度程序130接口的程序来提供。
在方框210处,计算出将由进程调度程序130使用的平均窗口(averaging window)的尺寸。如在以下进一步的详细说明中将提到的那样,平均窗口是在系统超载时进程调度程序130尝试将各个自适应分区保持在其保证CPU百分比处所持续的时间。典型的时间是100毫秒,但也可采用其它平均窗口尺寸。平均窗口大小可以在引导(boot)时间被指定,也可在其后的任意时刻被重新指定。选择平均窗口的大小时需考虑的事项可包括:
-较短持续时间的平均窗口尺寸会减小CPU时间平衡(time-balancing)的精确性。
-当使用较短持续时间的平均窗口时,因为其它分区使用少于其保证百分比而耗尽其预算的一些分区可以不必偿还时间。
-在一些情况下,较长持续时间的平均窗口尺寸会使得一些自适应分区出现运行时间延迟。
平均窗口的尺寸(“窗口尺寸”)可以按毫秒分配,调度进程130把毫秒转换成时钟周期(clock tick)。时钟周期是时钟中断(系统计时器)之间的时间间隔。调度进程130使用的全部时间预算可以以相同的窗口尺寸被均分。
在方框215处,调度进程130把保证CPU时间预算分配给每个自适应分区。可以把保证预算按照整个可用系统预算的百分比来分配。在这种情况下,所有自适应分区的CPU百分比的和是100%。为了分配整个CPU时间预算的份额(share),对称多元处理系统中的处理器,无论其数目多少,都可以被认为与单个处理器的方式相同。
可以以多种不同的方式确定用于每个自适应分区的保证预算。例如,可以测量在几种不同负载条件下由每个分区使用的CPU时间,并且这些CPU时间可用来绘制负载与每个分区所用的CPU时间的关系曲线。测量也可以在超载的条件下进行。利用这种信息,系统设计者可以权衡在各种条件下每个分区中包含的各个线程的需求,并分配适当的保证CPU时间预算。这些测量也可用于根据CPU负载条件动态地改变保证CPU时间预算。例如,进程调度程序130可根据不同操作条件以不同操作模式进行操作。当以特定模式操作时,进程调度程序130采用唯一的一组自适应分区参数。与特定模式相关的有效性(availability)和参数可以在引导时间被指定。在运行时间,应用程序设计接口(“API”)可以被用于按需要切换模式。例如,第一组保证CPU时间百分比可以在启动期间采用,而第二组保证CPU时间百分比可以在系统启动已完成之后的常规操作期间采用。
在方框220处,优先级被分配给每个线程,并且每个线程被与各自的自适应分区关联起来。在功能上相关的软件可以被分配到相同的自适应分区。这就实现了一种混合进程调度系统,在该系统中,分配给线程的优先级以及自适应分区的保证CPU时间百分比被用在由进程调度程序130执行的调度决定中。
在把各线程分配到各自的自适应分区时,自适应分区调度可以被用作决定将在何时禁止系统的特定功能的结构化方法。当以这种方式使用时,基于在一系列特定环境下线程是否会缺少CPU时间,将分离的线程置于不同的自适应分区中。例如,假定系统100被设计成作为分组路由器操作。可由分组路由器执行的进程的一部分包括:1)对分组进行路由选择;2)收集和记录(log)用于分组路由的统计数字;3)对同级路由器的路由拓扑协议;和4)收集和记录路由拓扑度量(metric)。在这些情况下,这些进程的线程可以被划分成两个自适应分区:一种用于与路由选择有关的线程,一种用于与网络拓扑有关的线程。当系统超载时,即,存在比机器可以完成的工作更多的未完成工作。因此,需要确定哪些应用要被运行得慢一些。为此,如果CPU没有足够的资源来执行路由选择和度量两者的线程,则比起收集路由选择度量来说,路由分组将可能更优选一些。即使当CPU资源受限时,运行有关网络拓扑协议的线程也是合理的。在这些情况下,比起最初考虑的两个自适应分区,采用三个自适应分区可能会更可取一些。这三个自适应分区,连同示例性的保证预算,可以包括:
-用于对分组进行路由选择的自适应分区(80%份额);
-用于拓扑协议的自适应分区(15%的份额),但其具有比用于对分组进行路由选择的自适应分区中的线程更高的最大线程优先级;和
-用于记录路由选择度量和拓扑协议度量两者的自适应分区(5%的份额)。
在这种情形下,自适应分区调度已经被用于重新组织各个系统功能,使得某些功能在高CPU负载期间被给予优先级,同时仍要确保所有的系统功能都被给予CPU执行时间。与路由选择有关的线程和与记录路由选择度量有关的线程已经与分离的自适应分区关联起来,尽管它们在功能上涉及路由选择操作。类似地,两个在功能上无关的组件,路由选择度量记录和拓扑度量记录,被与相同的自适应分区关联起来。这种把不同线程分配到不同分区的方式,使得进程调度程序130能够减小在高CPU负载条件下由记录线程使用的CPU时间,并能把优先级给予路由选择线程和拓扑协议线程,同时仍然可以执行度量记录。
在方框225处,做出关于系统的哪个线程将被允许在临界状态下运行的确定。把线程指定为临界使其能够以近似实时系统的方式运行,即使可能会超出自适应分区预算的保证预算。当与特定自适应相关的临界线程尽管在缺少对于自适应分区的保证预算的情况下运行时,该自适应分区被认为是已经进入短期负债(short-term debt)。临界线程可以在例如启动时与各种分区关联起来。临界线程将在以下被进一步详细说明。
在方框235处,每个与临界线程关联起来的自适应分区被分配了临界时间预算。可以用时间单位指定临界时间预算,例如毫秒。在示例性系统中,临界时间预算是对于所有与给定自适应分区有关的临界线程可用的CPU时间数量,其超过平均窗口期间那个分区的保证时间预算。通过采用临界指定和临界时间预算,临界线程通常即使在它的相关自适应分区已经耗尽其保证预算的情况下,仍有在CPU上运行的机会。只要分区仍具有可用的临界时间预算,这种情况就会发生。临界线程可以提供在这些分区内的实时行为的能力。
在方框240处,进程调度程序130必须遵循的各种策略可以选择性地指派给系统100。例如,破产策略可以被应用到一个或多个自适应分区,以确定系统100和/或进程调度程序130如何处理自适应分区的破产状态。当在平均窗口的持续时间内自适应分区已经耗尽其保证CPU时间预算和临界时间预算时,临界自适应分区破产。作为另一个实例,系统100可以执行超载通知策略,该策略允许进程向进程调度程序130登记,使得当发生系统超载时该进程就被通知。举例来说,当在平均窗口的持续时间内不能在CPU上执行所有的就绪线程时,发生系统超载。进程可以登记以被告知当系统100进入和/或离开超载状态时的超载情况。应用程序可以使用这种超载通知以适度地降级它们的服务,例如,通过跳过不那么重要的功能,或者通过减小计算的精度来降级。当其它一些自适应分区正在休眠时,自适应分区可能会超出预算,如将在以下提出的那样。并不必要将这认为是系统超载,因此不需要触发超载通知策略。
在方框245处,进程调度程序130被配备了对应于前述的在方框205到240处提供的状态、值和/或分配的数据。如上面提到的那样,可以以许多个不同方式,诸如由系统设计者提供、系统使用者提供、通过其它软件程序等等,来提供这些用于系统100中状态、值和/或分配。
方框250代表了依照方框245的配置数据的线程的执行。各个自适应分区的属性可以是动态的。为此,在一个或多个前述的方框中提出的参数可以根据系统请求、系统状态、系统功能的改变、等等而被改变,如返回到方框205的流程线表示的那样。
系统100的线程也可以随时间而动态改变。例如,与自适应分区有关的线程或线程群组可以在操作期间产生(spawn)、或生成其他线程。该始发线程(originating thread)可以被称为父线程,而被生成的线程可以被称为子线程。进程调度程序130可以被配置成这样,使得子线程自动继承它们的父线程的自适应分区。可选的,或者附加的,可以提供API,其允许在其它自适应分区中生成线程。这样的API仅仅可以对具有充分特权的代码做出。例如,系统应用程序启动器(launcher)可以具有这样的特权。
图3说明了进程调度程序130可以在常规的负载条件下操作的一种方式,在该常规负载条件下没有分区超过其CPU预算。在此实例中,进程调度程序130已经生成了三个自适应分区301、302和303。自适应分区301可能与多媒体应用程序的线程305、306、307和308关联起来。自适应分区302可能与Java应用程序的线程315、316、317、318和319关联起来。自适应分区303可能与系统记录应用程序的线程320、325、330、335和340关联起来。线程305-345具有各种调度优先级,其表示在图3的括号中,其可以独立于关联的自适应分区的保证预算。
在操作中,每个自适应分区301-303和线程305-345可以采取不同的操作状态。例如,自适应分区301-303可以在活动状态和休眠状态中操作。在活动状态中,自适应分区的调度属性可以被用于调度相关线程的CPU时间。当没有与自适应分区有关的就绪线程时,休眠状态发生。在这样的情况下,进程调度程序130有效地将自适应分区作为不存在处理。
线程可以采取,例如,运行状态、就绪状态或阻塞状态。当线程正在被CPU执行时,其处于运行状态。当在进程调度程序130确定的时刻,使得线程为CPU的执行充分准备好的一组条件已经被满足时,线程处于准备状态。当线程等待一个或多个事件的发生时,线程处于阻塞状态。当处于阻塞状态中时,线程并不准备消耗任何CPU资源。一旦线程等待的事件发生,线程可以解除阻塞并进入就绪或运行状态。
自适应分区301-303和相应的线程305-345能够被用于描述不同负载情形期间进程调度程序130的操作。在此实例中,进程调度程序130基于就绪线程的优先级,使CPU可用于执行分配给每个自适应分区301、302和303的就绪线程308、315和345。在常规负载的情形下,当系统100中的高优先级的线程变成就绪时其将立即运行。可以以许多种不同的方式向进程调度程序130指示线程是否就绪,这些方式包括,例如,通过中断事件或类似情况的发生。在说明的实例中,最高优先级的就绪线程是线程345,其具有的优先级为17。线程35将在运行状态下持续操作,直到其被结束、阻塞,或者直到自适应分区303的预算被耗尽。在繁重的负载下,如果自适应分区超出其CPU预算,那么其最高优先级线程不再运行,直到该分区再一次具有在其CPU预算中的可用时间为止。这是在分区301、302和303当中分割不足的CPU时间的系统100的防护措施(safeguard)。在这种状态下,处理器用其保证CPU时间预算内保留的CPU时间来运行自适应分区中的最高优先级的线程。
当自适应分区进入休眠状态时,进程调度程序130把休眠分区的CPU预算分配给其它活动的自适应分区——即使其它活动的自适应分区已经超过它们的预算。例如,如果自适应分区303进入休眠状态,则进程调度程序130把自适应分区303的预算分配给自适应分区302,因为自适应分区302具有最高优先级的就绪线程315。如果两个或多个自适应分区具有带有相同最高优先级的线程,则进程调度程序130依照其它自适应分区的百分比成比例地分割空闲时间。这种分配有助于防止在两个自适应分区具有相同优先级的情况下就绪队列延迟时间较长的情况。
在图4的实例中,有三个自适应分区401、402和403,分别具有70%、20%和10%的CPU预算保证。进一步,每个自适应分区401、402和403分别包括就绪线程408、415和445,这几个就绪线程的优先级为14。如果自适应分区401由于线程408的阻塞而进入休眠状态,则进程调度程序130把所有可用的CPU时间以2∶1的比率分配给自适应分区402和402,该比率对应于它们初始的CPU预算分配。如果自适应分区401在短时间内处于休眠状态,那么进程调度程序130通过重新分配CPU资源使得自适应分区402和403偿还它们每个使用的由分区401付出的CPU时间,可以确保分区401稍后能按照其保证CPU时间预算接收CPU时间。如果自适应分区401在较长的时间内一直处于休眠状态,那么自适应分区402和403使用的全部时间的一部分时间可变成空闲的(free)。自适应分区是在长时间内还是在短时间内处于休眠状态能够以不同的方式来确定。例如,当自适应分区在一个平均窗口内小于(窗口尺寸)-(预算百分比*窗口尺寸)毫秒的持续时间内处于休眠状态,则其可以被说成在短时间内处于休眠状态。
如果所有的自适应分区处于它们的CPU预算极限处,那么进程调度程序130可以指定系统100中具有最高优先级的线程运行。如果两个自适应分区具有带有相同的最高优先级的线程,那么已使用了其预算的最小比例的自适应分区可以被运行。这种操作方式可以被用于避免可能会发生的较长就绪队列延迟。在图4中所示的实例中,窗口尺寸可以是100ms,自适应分区401被分得70%的CPU预算并已使用了40ms,自适应分区402被分得20%的CPU预算并已使用了5ms,自适应分区403被分得10%的CPU预算并已使用了7ms。所有分区具有优先级为14的就绪线程。在这种情形下,自适应分区402的线程415被运行,因为其相对空闲比例为5ms/20ms,或为0.25,而自适应分区401的相对空闲比例为40ms/70ms,或为0.57,而自适应分区403的为7ms/10ms,或为0.70。
如果自适应分区已耗尽分配的CPU预算,并且其就绪线程中的一个或多个被指定为临界,那么进程调度程序130可允许该自适应分区使用其临界CPU预算以运行临界线程。该临界时间预算是进程调度程序130分配给自适应分区以运行所有与该自适应分区有关的临界线程的CPU时间数量。这种临界时间预算构成进程调度程序130在平均窗口期间分配给自适应分区的该分区的常规预算的CPU时间。因此,即使与临界线程有关的自适应分区已经用完预算,只要该自适应分区还没有耗尽其临界时间预算,则临界线程就可以运行。
图5说明了具有两个自适应分区501和502的系统。线程505、506、507和508与自适应分区501相关联,而线程515、516、517、518和519与自适应分区502相关联。自适应分区501例如可以包括与气囊(airbag)通知进程有关的线程。自适应分区501的线程505和508已经被指定为临界线程,但只有线程508处于就绪状态。
在此实例中,自适应分区501已耗尽其保证CPU时间预算。虽然如此,临界线程508可以被允许运行,这是由于通过临界指定而赋予其的重要性。因此,倘若在自适应分区501的临界时间预算内仍旧有CPU时间,则进程调度程序130可以把CPU时间分配给临界线程508。
当进程调度程序130调度诸如线程508的临界线程的运行时,进程调度程序相对于(against)该线程的相关自适应分区的可用保证CPU时间预算来为线程的运行时间记帐(bill)。但,只有在如果进程调度程序130将不运行临界线程时,进程调度程序130相对于该自适应的临界时间预算来计算临界线程使用的CPU时间。为此,当1)系统没有超载,或2)系统超载,但一个或多个自适应分区可能不会耗尽它们的保证CPU时间预算时,用于运行临界线程的CPU时间将不被相对于相关的自适应分区的临界时间预算进行计算。
临界线程可以保持在临界运行状态,直到其进入阻塞状态为止。也就是,其可以如其它任意线程一样离开运行或就绪状态。如以上提到的那样,这可以在线程正在等待消息、中断通知等等时发生。在触发了优先级遗传的操作期间,线程的临界性、或对其自适应分区的临界时间预算的记帐可以连同自适应分区一起被继承。
短期负债被为分区所规定的临界时间预算所限制。随着时间的流逝,该分区可能被要求偿还该短期负债。超出自适应分区的临界时间预算的临界线程可以被认为使相关的自适应分区趋向破产。破产可以作为应用程序差错来处理,并且设计者可以规定系统的响应。响应的示例性选择包括:1)迫使系统重启;2)通知内部或外部系统的监视器(watchdog);和/或3)终止和/或通知其它指定的进程。如果自适应分区耗尽了其临界时间预算,系统可以向日志等添加一个条目。当自适应分区的预算被动态改变(例如,通过模式改变,用于修改CPU百分比的API调用,等等)时,进程调度程序130可以在为破产测试自适应分区之前施加延迟。这就使得在自适应分区可能被宣布破产之前使预算变得稳定。
把线程指定为临界可以已多种不同的方式发生。例如,系统可以自动地标记被I/O中断启动的线程作为临界。该系统还可以规定一组附加的应用程序或操作系统通知事件,例如,可以把它们的相关处理器(handler)线程标记为临界的计时器。API还可以被用于把选定的线程标记为临界。另外,临界父线程的子线程可以被自动指定为临界。
进程调度程序130还可适用于客户/服务器系统中,在该系统中消息发自一个或多个发送/客户线程,用于让一个或多个接收/服务器线程接收和/或处理。图6显示了多个相关的进程,这些进程可以用于在这样的客户/服务器的环境中实现进程调度程序130。在方框605处,第一自适应分区中的客户线程向第二自适应分区中的服务器线程发送消息。当客户线程向服务器线程发送消息时,接收消息的服务器线程可以继承该发送线程的优先级。这就避免了优先级倒置(inversion),因为该服务器线程正在代表发送客户做工作。在方框610处显示了由服务器线程继承发送线程的优先级水平。在方框610处,进程调度程序还可以把客户线程的相同临界状态分配给服务器线程。在方框615处,进程调度程序130可以把服务器线程和与客户线程相关联的相同自适应分区关联起来。
图7说明了可用于解释图6所示的操作的一些方面的系统。在此实例中,存在三个自适应分区701、702和703。自适应分区702可包括例如,由文件系统的进程运行的类型的服务器线程720和725。指派给自适应分区702的属性可随系统的设计变化。但在此实例中,生成的自适应分区702的CPU时间预算为零,并且线程720和725已经被指配以默认优先级为7。自适应分区701可包括多个不同的线程705、710和715,其中线程715构成向自适应分区702的一个或多个服务器线程发送消息的客户线程。类似的,自适应分区703可包括多个不同的线程730、735、740和745,其中线程745构成向自适应分区702的一个或多个服务器线程发送消息的客户线程。
如图7的线条750所示,客户线程715已经传递了被自适应分区702的线程720接收或处理过的消息。类似的,自适应分区703的客户线程745已经传递了被自适应分区702的线程725接收或处理过的消息,如线条755指示的那样。当消息传送750和755发生时,进程调度程序130把每个服务器/接收与发送消息的线程的自适应分区关联起来。在这种情况下,服务器线程720被临时与自适应分区701关联起来,如线条760指示的那样,并且被指派了与线程715相同的优先级,14。同样的,服务器线程725被临时与自适应分区703关联起来,如线条765指示的那样,并且被指派了与线程745相同的优先级,12。线程720和725都可以被置于就绪状态,而线程715和745被置于阻塞状态,因为各自的消息在被进程。一旦线程720已完成对从线程715接收到的消息的处理,则线程720可以返回其原始状态,在该原始状态其被与具有为7的默认优先级的自适应分区702关联起来。同样,一旦线程725已完成对从线程745接收到的消息的处理,则线程725可以返回其原始状态,在该原始状态其被与具有为7的默认优先级的自适应分区702关联起来。
有时,客户线程可以尝试与正在忙于进处理一个或多个以前从其它客户线程接收到的消息的服务器线程通信。例如,如果自适应分区703的线程740解除阻塞并且尝试向服务器线程725发送消息,而服务器线程725正忙于处理一个或多个从线程745接收到的以前的消息,则服务器线程725通常将不能响应线程740,直到其完成对来自客户线程745的以前的消息的处理为止。在这样的情况下,进程调度程序130可以临时地升高一个或多个例如在与客户线程相同的连接路径等待的服务器线程的优先级。对应这些操作的查询和行为在图6的方框620和625处说明。如应用于图7的系统中一样,分配给自适应分区703的线程和分配给自适应分区702的线程之间的连接路径,例如,可以被指派以相同的识别名称/号码。结果是,服务器线程725的优先级可以被提高,以尝试减小可能会在服务器线程725可用于处理来自客户线程740的消息之前发生的等待时间。根据自适应分区702中的线程的性质,多个服务器线程的优先级水平可以被提高。
在图6的方框630处,进程调度程序130操作,从而以适当的方式对每个线程720和725的执行时间记帐。对执行时间记帐的适当方式可以改变。一种方式包括根据与发送线程有关的自适应分区的CPU预算和/或临界CPU预算来应用(apply)接收线程的执行时间。在图7的实例中,响应线程715发送的消息的线程720使用的执行时间,是相对于自适应分区701的CPU预算和/或临界CPU预算计算的。类似的,响应线程745发送的消息的线程725使用的执行时间,是根据自适应分区703的CPU预算和/或临界CPU预算计算的。
诸如文件系统、设备驱动程序和类似物的系统组件的保证预算可以被分配为零。在这样的情况下,与系统组件有关的线程使用的CPU时间将被对其客户计帐。但有时进程调度程序130会在太迟时才能发现特定的系统组件线程最终为那些线程工作。结果是,进程调度程序130可能不能及时对系统组件的线程的运行记帐和/或不能把系统组件的线程的运行对适当的自适应分区计帐。另外,一些系统组件诸如设备驱动程序可具有后台线程(例如,用于审计或者维护),这些后台线程需要不能被赋予特定客户的预算。在这些情况下,系统设计者可以测量后台操作和与各个系统组件有关的不能赋予的负载。结果产生的测量结果可以被用于把非零的预算提供给与各系统组件的线程有关的自适应分区。
在操作中,进程调度程序130所做的不止是简单地指导与自适应分区有关的最高优先级的就绪线程的运行,其中该自适应分区在其预算内还剩有保证CPU时间。例如,当所有的自适应分区大致在相同时间耗尽它们的保证CPU时间预算时,那么进程调度程序130可以指导系统中最高优先级的线程的运行,而不管相关自适应分区的属性如何。另外,当自适应分区具有最高优先级相等的线程时,进程调度程序130可以使用它们的保证CPU时间百分比的比率来分配CPU时间。最后,倘若自适应分区仍具有一部分临界时间预算,则临界线程即使在其自适应分区用完预算时仍可以被运行。
进程调度程序130在其调度确定中可采用一个或多个与每个自适应分区ap有关的排序函数f(ap)。排序函数可以多种不同方式来计算。排序函数的计算结果可以与另一个相比较,以确定进程调度程序130将如何调度与该系统的各个自适应分区有关的线程。
在计算排序函数f(ap)时,许多个不同变量可以被使用。在此根据一个实例说明对这些变量的考虑。在以下实例中,假设“is_critcal(ap)”是布尔变量。“is_critcal(ap)”的值取决于1)自适应分区ap是否具有可用的临界预算,和2)自适应分区ap中的最高优先级就绪线程是否已经被指派临界状态。假设“has_budget(ap)”是指示在最后的平均窗口期间自适应分区ap消耗的CPU时间是否小于它的保证CPU时间预算的布尔变量。假设“highest_prio(ap)”是指示自适应分区ap中所有准备好运行的线程的最高优先级的整数变量。假设“relative_fraction_used(ap)”是实数变量,其对应于在最后的平均窗口期间自适应分区ap消耗的CPU时间的微秒数除以例如以微秒表示的自适应分区ap的预算得到的比率。最后,假设b(ap)是对应于自适应分区ap中的各线程的CPU时间消耗的当前比率的布尔变量。更具体而言,如果与分区ap有关的各线程的CPU时间消耗的当前比率被给定,则b(ap)可以被指派逻辑真值,当进程调度程序130被再次调用以调度与该自适应分区有关的线程时,has_budget(ap)的值也会是逻辑真值。否则,b(ap)可能被指派成逻辑假值。可以认识到的是,其它变量,或者少于前述变量的全部的变量,可被用于计算和排序函数f(ap)。使用哪些变量可由系统设计者和/或终端用户决定。
b(ap)的值可以以多种不同的方式来计算。例如,假定变量t指示高分辨率计数器中的当前时刻,而滴答(tick)是常规事件之间的时间长度,在该常规事件期间进程调度程序检查所有分区。该滴答的周期应该小于平均窗口的尺寸(“窗口尺寸”)。假设函数cpu_time_used(t1,t2)对应于分区ap的各线程在绝对时间t1和t2之间使用的CPU时间的实际值。另外,假设budget(ap)对应于分区ap的保证预算的时间值。那么b(ap)的值就可以通过使用以下等式来计算:
b(ap)=Boolean(cpu_time_used(now,now-windowsize)-cpu_time_used(now-windowsize+tick,now-windowsize)<budget(ap)).
图8显示了通过使用前述变量来计算排序函数f(ap)的方式。所说明的操作可以为在系统100中使用的每个自适应分区ap执行。如所示那样,在方框800处,进程调度程序130确定分区是否具有任何准备好要运行的线程。如果没有与该自适应分区ap相关的就绪线程,则在方框802处该自适应分区的排序函数f(ap)可以被赋以值f(0,0,0,0),并且可以在方框803处启动对于下一个自适应分区的排序函数的计算。在方框805处,进程调度程序130确定自适应分区ap是否具有可用的临界CPU预算,如果有,则确定在自适应分区ap中的最高优先级的就绪线程是否已经被指派成临界状态。基于这种确定,进程调度程序130在方框810处把适当的逻辑状态赋给“is_critical(ap)”变量。在方框813处,进程调度程序130计算在最后的平均窗口期间自适应分区使用的CPU预算。在方框815处,进程调度程序130确定自适应分区已使用的CPU时间是否少于其保证CPU时间预算。基于这种确定,进程调度程序130在方框820处把适当的逻辑状态赋给“has_budget(ap)”变量。在方框830处,通过采用在方框813处获得的值并用那个自适应分区的保证CPU预算时间去除这个值,计算出在最后的平均窗口期间使用的CPU预算时间的相对比率。在方框835处,这个值被赋给“relative_fraction_used(ap)”变量。
在方框840处,进程调度程序130计算一个或多个对应于与自适应分区有关的各线程消耗的CPU时间的当前比率的值。在方框845处,这些值被用于把适当的逻辑状态赋给b(ap)变量。
在方框850处,通过使用前述变量的全部或其子集,对于给定自适应分区ap计算排序函数f(ap)。在此实例中,使用被排序的值(x,a,y,z)来计算排序函数f(ap),其中x=is_cirtical(ap)OR has_budget(ap);a=(Notx)AND b(ap);y=highest_prio(ap);而z=l-relative_fraction_used(ap)。在计算排序函数f(ap)时,x的值被给予比a、y或z的值更多的有效值,a的值被给予比y或z的值更多的有效值,并且y的值被给予比z的值更多的有效值。
如在图9方框905处所示的那样,进程调度程序130运行具有最大f(ap)的自适应分区的最高优先级的线程。但进程调度程序130必须确定该线程的运行时间是要被计到自适应分区的临界预算的账上还是单独计到保证预算的账上。为此,进程调度程序130可以使用一个或多个前述变量来计算另一个函数fcritical(ap)。在此实例中,使用有序值(w,d,y,z)来计算fcritical(ap),其中w=has_budget(ap);d=(NOT w)ANDb(ap);y=highest_prio(ap);并且z=l-relative_fraction_used(ap)。在fcritical(ap)的计算中,w的值被给予比d、y或z的值更多的有效值,d的值被给予比y或z的值更多的有效值,并且y的值被给予比z的值更多的有效值。在方框910处显示了这个计算。在方框915处执行关于该自适应分区的fcritical(ap)和f(ap)之间的比较。如果fcritical(ap)的值小于f(ap)的值,那么该线程的运行时间在方框920处被计到自适应分区的临界预算的帐上,并且在方框925处被计到保证预算的账上。如果fcritical(ap)的值大于或等于f(ap)的值,那么在方框925处该线程的运行时间被单独计到自适应分区的保证预算的帐上。进程调度程序130使用的任何计算应该确保:如果线程或分区不是临界的,只有在与自适应分区相关的最高优先级临界预算不被进程调度程序130选择来运行时,才使用该自适应分区的临界预算。
图10显示了多个不同的相关进程,其可用于执行计算在最后的平均窗口期间消耗的CPU预算时间的相对比率的方法,如图8的方框830中说明的那样。由自适应分区消耗的CPU预算时间相对比例例如是,在最后的平均窗口期间与自适应分区有关的线程运行的微秒数除以以微秒为单位的其在平均窗口中的份额而获得的。可选的,这可以表达为(total_CPU_time_consumed)/(windowsize*percentage)。为了减小对浮点除法的可能的需求,进程调度程序130可以为每个自适应分区计算具有与(total_CPU_time_consumed)/(windowsize*percentage)大致相同的排序特性的数字。这样,可以预先计算常数c(a),使得具有最大(total_CPU_time_consumed)*c(ap)的自适应分区也是具有最大(total_CPU_time_consumed)/(windowsize*percentage)的自适应分区。
可以在例如系统启动期间和每当在系统的各个自适应分区之间重新分配保证CPU预算时预先计算函数c(ap)。在方框1010处,例如在启动时,每个自适应分区的CPU预算百分比被确定。在方框1015处,系统可以为每个自适应分区计算系数q(ap)。q(ap)的值可以例如作为所有其它自适应分区的百分比CPU预算的乘积来被计算。在方框1020处,计算缩放系数。在此实例中,如果最大平均误差是max_error(例如对于1/2%为0.005),那么k=min(list of q(ap))*max_error。常数缩放系数c(ap)在步骤1025处被计算。在此实例中,c(ap)按照c(ap)=q(ap)/k这样来计算。在max_error的差错容忍度以内,值(total_CPU_time_consumed)*c(ap)具有与(total_CPU_time_consumed)/(windowsize*percentage)相同的排序特性。
为了实际比较不同自适应分区使用的相对比例,进程调度程序130可能需要用c(ap)来乘与自适应分区相关的线程的运行时间。但,记帐的时间可能是很大的数目。如果在这些计算中进程调度程序130要通过使用单个相乘指令(single-multiply instruction)而实现,则在方框1030处,记帐的时间可以首先选择CPU预算时间的最高有效位的数字来被缩放。缩放的程度可以由max_error的值来设定。然而,仅仅选择被记帐运行时间的最高有效的16位就能够满足对max_error(例如,1/4至1/2%)任意合理的选择。在这样的情形中,系统可以计算(total_CPU_time_consumed)>>32*c(ap)。在方框1035处,按c(ap)*(adaptive partion execution time)来计算相对预算比率,其中(adaptive partion execution time)构成(total_CPU_time_consumed)的最高有效位的选定数目。
对于实现来说,0.5%到0.25%的误差容忍度被认为是足够的。但,应用可以包括以下概念,即对于任意指定的误差容忍度,选择最小数目的比特用于代表c(ap),在最后的平均窗口尺寸时间期间内由自适应分区ap执行的CPU时间的缩放值,以及c(ap)和缩放后的CPU时间的乘积。最小数目的比特被选择用于表示和执行乘法函数,使得所有的表示和数学误差小于或等于选定的误差容忍度。
把CPU时间记到系统中的每个自适应分区的账上可以以多种不同的方式进行,且在进程调度程序130的操作期间可以发生很多次。例如,每当1)线程从阻塞状态开始运行,2)线程停止运行(即,当线程被高优先级线程占先时,当线程被阻塞时,或者类似情况),和/或3)在其它进程调度程序130需要对CPU时间进行精确计算时的时刻。
典型地,进程调度程序使用标准的计时器中断或滴答(tick)来确定线程已经使用了CPU多长时间。滴答周期经常为一到几微秒左右。
但,进程调度程序130可以包括有效地对系统的各个线程的执行时间进行微量记帐(microbill)的代码。为此,可以采用其周期远小于滴答周期的高分辨率的硬件和/或软件计数器。每次线程开始或停止运行,进程调度程序130把时间戳分配给对应高分辨率计数器的值的相关分区。该时间戳的值可以被缩放到有用的共同的时间单位。线程的相邻的开始和停止时间的时间戳之间的差异被用于对适当的自适应分区进行微量记帐。
高分辨率的计数器可以以许多不同方式来实现。例如,一些CPU具有内置的计数器,其可以大致以CPU运行的时钟频率进行递增。在这样的情形下,该内置计数器可用于微量记帐进程。在另一个例子中,可以通过询问可编程递减计数的计时器来使用软件模拟高分辨率的计数器,其中该可编程递减计数的计时器例如可以通常用于触发时钟中断。这可以是同一个用于提供指示已经发生滴答间隔的计数器。在这样的情形下,时间戳应该考虑计数器值和从给定时间参考点开始已经发生的滴答的数目,使得时间戳能精确地反应各个线程的开始时间和停止时间。
前述的进程调度程序130也被用在采用互斥体的系统中。互斥体被用于防止由于竞争条件产生的数据不相容。当两个和更多线程需要在相同的存储区域上执行操作,但计算结果取决于这些操作被执行的次序时,经常发生竞争状态。互斥体可被用于串行地共享资源。每当全局资源被多于一个的线程访问时,该资源可以具有与其相关的互斥体。可用互斥体来保护存储器分段(“临界区域”)不受其它线程的访问。应用程序以线程请求的顺序把互斥体给予线程。但,进程调度程序130可适合解决以下问题,即当可能占用(hold)互斥体的低优先级的线程不合理地延迟正在等待相同互斥体的较高优先级的线程的访问时发生的问题。
图11显示了这样一种方法,该方法用于当一个线程占用互斥体而其它几个线程可能正在等待同一个互斥体时,在自适应分区系统中区分对互斥体的访问的优先级。当与占用互斥体的线程有关的分区用完了保证CPU时间预算时,进程调度程序130开始把占用互斥体的线程的运行时间,计到所有等待互斥体的线程中等待互斥体且最有可能接下来运行的线程的分区的帐上。进程调度程序130还可以开始把任何被认为是代表占用互斥体的线程工作的线程的运行时间计到与占用互斥体的线程有关的自适应分区的帐上。在方框1110处做出确定,以识别接下来最有可能运行的线程(即,将在占用互斥体的线程被阻塞、完成或类似情况之后运行的线程)。正在等待与当前占用互斥体的线程相同的互斥体的等待线程可以被确定为“接下来最有可能运行”。在方框1115处,进程调度程序130可以把占用互斥体的线程的优先级水平提高到在所有等待的线程中接下来最有可能运行的等待线程的优先级。在方框1120处,进程调度程序130可对与当前占用互斥体的线程有关的自适应分区为其运行时间记帐,同时占用互斥体直到该自适应分区的CPU预算被耗尽(达到零)。在方框1125处,占用线程使用的剩余CPU时间被计到与接下来最有可能运行的等待线程有关的自适应分区的账上。
线程“接下来最有可能运行的”可以通过对等待线程列表中的线程对重复地应用成对 (“比较两个线程”)处理来计算。“比较两个线程”处理可以按照如下这样来执行,其中A和B是要比较的两个线程:建立函数f(ap),其包括有序值(x,a,y,z)。这与以上建立的排序函数f(ap)相同。然后,假设partion_of(X)表示包含线程X的分区。然后,如果f(partion_of(A))>f(partion_of(B)),则线程A比线程B更有可能运行。为每个要被比较的线程构造函数f(X),直到具有最高f(X)的线程被确定。具有最高f(X)的线程可以被确定为“接下来最有可能运行的线程”,并且一旦与占用互斥体的线程有关的自适应分区耗尽具保证CPU预算,则对该具有最高的f(X)的线程的相关的自适应分区为占用互斥体的线程的运行时间记帐。
以上说明的系统和方法可以被配置成能在事务进程系统中运行,在这样的系统中,重要的是如果系统的处理容量超载,应能够继续处理一部分所承受的负载,而不是彻底失败。这样的应用实例包括因特网路由器和电话交换机。本系统和方法也可以配置成能在其它的实时操作系统环境诸如汽车和航空环境中运行,在这些环境中要指定严格的处理,以在严格的事件中执行。一个实例是在汽车环境中,其中气囊打开事件是可能性较低的事件,但如果该事件启动必须为其分配处理器预算。
本系统和方法还可以被配置成能在可能使用不可靠的应用程序的环境中操作。在这样的情形下,诸如java小应用程序的应用程序可以被下载以在操作环境中执行,但该应用程序的性质允许不可靠的应用能接管系统并产生无限循环。操作系统设计者不希望出现这样的情形,因此可以创建适当的自适应分区,使得不可靠的应用程序孤立地被运行,同时限制对其它进程所需要的CPU时间的访问。
尽管已经描述了本发明的各种实施例,但对本领域的普通技术人员来说,很明显的是在本发明的范围内还可以存在更多的实施例和实现。因此,除所附权利要求及其等同物之外,本发明不受其它限制。
Claims (23)
1.一种系统,包括:
处理器;
一个或多个存储器存储单元;
存储在所述一个和多个存储器存储单元中的软件代码,其中所述软件代码可由所述处理器来执行,并且所述软件代码包括:
至少一个发送线程,
至少一个接收线程,其能响应来自所述至少一个发送线程的通信,以执行一个和多个对应于所述通信的任务,和
可由所述处理器执行的调度系统,其至少部分地基于与所述至少一个发送线程有关的处理器预算,来选择性地把所述处理器分配到所述至少一个发送线程和所述至少一个接收线程,其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的处理器预算记帐。
2.如权利要求1所述的系统,其中所述调度系统是操作系统的一部分。
3.如权利要求1所述的系统,其中所述处理器是对称多处理机。
4.如权利要求1所述的系统,其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的处理器预算进行微量记帐(microbill)。
5.如权利要求1所述的系统,其中所述调度系统使所述至少一个发送线程与一自适应分区相关联,并且其中与所述至少一个发送线程有关的所述处理器预算对应于被分配给与所述至少一个发送线程有关的所述自适应分区的处理器预算。
6.如权利要求5所述的系统,其中,所述调度系统为所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的所述自适应分区的处理器预算进行微量记帐(microbill)。
7.一种系统,包括:
处理器;
一个或多个存储器存储单元;
存储在所述一个或多个存储器存储单元中的软件代码,其中所述软件代码可由所述处理器作为多个线程来执行,所述多个线程包括至少一个发送线程和至少一个接收线程;和
包括在所述软件代码中的调度系统,其可由所述处理器来执行,用于至少部分地基于与每个线程有关的处理器预算,来选择性地分配所述处理器,以执行所述至少一个发送线程和所述至少一个接收线程,并且其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的处理器预算记帐。
8.如权利要求7所述的系统,其中所述调度系统是操作系统的一部分。
9.如权利要求7所述的系统,其中所述处理器是对称多处理机。
10.如权利要求7所述的系统,其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的处理器预算进行微量记帐(microbill)。
11.如权利要求7所述的系统,其中所述调度系统使所述至少一个发送线程与一自适应分区相关联,并且其中与所述至少一个发送线程有关的所述处理器预算对应于被分配给所述自适应分区的处理器预算。
12.如权利要求11所述的系统,其中,所述调度系统为所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的所述自适应分区的处理器预算进行微量记帐(microbill)。
13.一种系统,包括:
处理器;
一个或多个存储器存储单元;
存储在所述一个或多个存储器存储单元中的软件代码,其中所述软件代码可由所述处理器来执行,并且所述软件代码包括:
多个自适应分区,其每个与一个或多个进程线程相关联,其中所述多个自适应分区中的每一个具有相应的处理器预算,
至少一个发送线程,其与所述多个自适应分区中的第一自适应分区相关联,
至少一个接收线程,其与所述多个自适应分区中的第二自适应分区相关联,其中所述至少一个接收线程通过执行一个或多个与来自所述至少一个发送线程的通信对应的任务,来响应所述通信,和
可由所述处理器执行的调度系统,其用于至少部分地基于所述第一和第二自适应分区的处理器预算,来选择性地把所述处理器分配给所述至少一个发送线程和所述至少一个接收线程,其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的处理器预算记帐。
14.如权利要求13所述的系统,其中所述调度系统是操作系统的一部分。
15.如权利要求13所述的系统,其中所述处理器是对称多处理机。
16.如权利要求13所述的系统,其中所述调度系统为由所述至少一个接收线程响应由所述至少一个发送线程发送的通信而使用的处理器分配,对与所述至少一个发送线程有关的自适应分区的处理器预算进行微量记帐(microbill)。
17.一种操作具有多个软件线程的处理系统中的进程调度程序的方法,其中所述多个软件线程包括至少一个发送线程和至少一个能响应由所述至少一个发送线程发送的通信的接收线程,并且其中所述至少一个发送线程与具有预定处理器预算的第一自适应分区相关联,而所述至少一个接收线程与具有另外的预定处理器预算的第二自适应分区相关联,所述方法包括:
调度对所述发送线程的执行,其中所述发送线程向所述接收线程发送通信;
调度所述接收线程的执行;和
为由所述接收线程响应所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的处理器预算记帐。
18.如权利要求17所述的方法,其中所述记帐操作包括为所述接收线程响应所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的处理器预算进行微量记帐。
19.一种包括软件代码的存储介质,该软件代码用于执行操作处理系统中的进程调度程序的方法,该处理系统具有多个软件线程,其中所述多个软件线程包括至少一个发送线程和至少一个能响应由所述至少一个发送线程发送的通信的接收线程,并且其中所述至少一个发送线程与具有预定处理器预算的第一自适应分区相关联,而所述至少一个接收线程与具有另外的预定处理器预算的第二自适应分区相关联,其中所述方法包括:
调度对所述发送线程的执行,其中所述发送线程向所述接收线程发送通信;
调度所述接收线程的执行;和
为由所述接收线程响应所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的处理器预算记帐。
20.如权利要求19所述的存储介质,其中所述记帐操作包括为所述接收线程响应所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的处理器预算进行微量记帐。
21.一种进程调度系统,其包括:
第一自适应分区,其与发送线程相关并具有第一预定处理器预算;
第二自适应分区,其与接收线程相关并具有第二预定处理器预算,其中所述接收线程通过执行一个或多个与所述发送线程发送的通信对应的任务,来响应所述通信;
进程调度程序,其适用于至少部分地基于所述第一和第二自适应分区的第一和第二预定处理器预算,来选择性地把处理器分配给所述发送线程和所述接收线程,其中所述进程调度程序为由所述接收线程响应由所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的第一预定处理器预算记帐。
22.如权利要求21所述的进程调度系统,其中所述处理器是对称多处理机。
23.如权利要求21所述的进程调度系统,所述进程调度程序为由所述接收线程响应所述发送线程发送的通信而使用的处理器分配,对所述第一自适应分区的第一预定处理器预算进行微量记帐。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66207005P | 2005-03-14 | 2005-03-14 | |
US60/662,070 | 2005-03-14 | ||
US11/216,795 | 2005-08-31 | ||
US11/317,468 | 2005-12-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1952898A true CN1952898A (zh) | 2007-04-25 |
Family
ID=38059251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006100648185A Pending CN1952898A (zh) | 2005-03-14 | 2006-03-14 | 采用进程线程的自适应分区的进程调度程序 |
Country Status (2)
Country | Link |
---|---|
US (3) | US8387052B2 (zh) |
CN (1) | CN1952898A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751335B (zh) * | 2008-11-28 | 2012-01-18 | 国际商业机器公司 | 调度虚拟机的垃圾收集的方法、装置和集群系统 |
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
CN103218258A (zh) * | 2011-12-07 | 2013-07-24 | 三星电子株式会社 | 用于在操作系统中动态地控制抢占分区的设备和方法 |
CN101452404B (zh) * | 2008-12-09 | 2013-11-06 | 中兴通讯股份有限公司 | 一种嵌入式操作系统的任务调度装置及方法 |
CN103577376A (zh) * | 2012-08-02 | 2014-02-12 | 通用汽车环球科技运作有限责任公司 | 改善多核芯处理器的处理性能的方法和装置 |
WO2016169206A1 (zh) * | 2015-04-23 | 2016-10-27 | 中兴通讯股份有限公司 | 事件处理方法、装置及系统 |
CN106293644A (zh) * | 2015-05-12 | 2017-01-04 | 超威半导体产品(中国)有限公司 | 考虑时间热耦合的功率预算方法 |
CN106462466A (zh) * | 2014-06-23 | 2017-02-22 | 甲骨文国际公司 | 用于在多租户应用服务器环境中提供工作管理器的系统和方法 |
CN109445959A (zh) * | 2018-10-17 | 2019-03-08 | 北京技德终端技术有限公司 | 一种传感器数据处理实时操作系统 |
CN109800061A (zh) * | 2019-02-27 | 2019-05-24 | 上海美亦健健康管理有限公司 | 一种嵌入式软件多实例虚拟化技术 |
US10742568B2 (en) | 2014-01-21 | 2020-08-11 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
CN111614758A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN112667369A (zh) * | 2020-06-08 | 2021-04-16 | 宸芯科技有限公司 | 一种线程调度方法、装置、存储介质及电子设备 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US9361156B2 (en) * | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US7406689B2 (en) * | 2005-03-22 | 2008-07-29 | International Business Machines Corporation | Jobstream planner considering network contention & resource availability |
US20070177519A1 (en) * | 2006-01-30 | 2007-08-02 | Thomsen Jan H | Systems and methods for transcoding bit streams |
US8068541B2 (en) * | 2006-01-30 | 2011-11-29 | Jan Harding Thomsen | Systems and methods for transcoding bit streams |
US20070204844A1 (en) * | 2006-02-08 | 2007-09-06 | Anthony DiMatteo | Adjustable Grill Island Frame |
CA2707680A1 (en) | 2006-03-14 | 2007-09-20 | Transgaming Inc. | General purpose software parallel task engine |
US8041929B2 (en) * | 2006-06-16 | 2011-10-18 | Cisco Technology, Inc. | Techniques for hardware-assisted multi-threaded processing |
US8010966B2 (en) * | 2006-09-27 | 2011-08-30 | Cisco Technology, Inc. | Multi-threaded processing using path locks |
EP1916583A1 (de) * | 2006-10-26 | 2008-04-30 | Siemens Aktiengesellschaft | Verfahren zur Durchführung von Online-Programmänderungen an einem Automatisierungssystem |
US20080120592A1 (en) * | 2006-10-31 | 2008-05-22 | Tanguay Donald O | Middleware framework |
US8479208B2 (en) * | 2007-03-30 | 2013-07-02 | Intel Corporation | System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode |
US8593654B2 (en) * | 2007-10-03 | 2013-11-26 | Hewlett-Packard Development Company, L.P. | Setting a partition size for a print job |
JP2009140130A (ja) * | 2007-12-05 | 2009-06-25 | Nec Electronics Corp | データ処理装置及びデータ処理装置の制御方法 |
US8640131B2 (en) * | 2008-01-18 | 2014-01-28 | Microsoft Corporation | Demand-based processor cycle allocation subsequent to equal group-based processor cycle distribution |
US8555380B2 (en) * | 2008-02-28 | 2013-10-08 | Intel Corporation | Automatic modification of executable code |
US20090300626A1 (en) * | 2008-05-29 | 2009-12-03 | Honeywell International, Inc | Scheduling for Computing Systems With Multiple Levels of Determinism |
US8312456B2 (en) | 2008-05-30 | 2012-11-13 | International Business Machines Corporation | System and method for optimizing interrupt processing in virtualized environments |
US9720729B2 (en) * | 2008-06-02 | 2017-08-01 | Microsoft Technology Licensing, Llc | Scheduler finalization |
US8468356B2 (en) * | 2008-06-30 | 2013-06-18 | Intel Corporation | Software copy protection via protected execution of applications |
US9086913B2 (en) | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
CN101938430B (zh) * | 2009-06-30 | 2014-01-15 | 国际商业机器公司 | 电子邮件的处理方法和处理系统 |
JP5387770B2 (ja) * | 2010-06-22 | 2014-01-15 | 富士通株式会社 | データ転送制御装置、データ転送制御方法、およびデータ転送制御プログラム |
KR20120067825A (ko) * | 2010-12-16 | 2012-06-26 | 한국전자통신연구원 | 임베디드 리눅스를 위한 적응형 프로세스 스케쥴링 방법 |
US9817698B2 (en) * | 2011-06-17 | 2017-11-14 | Microsoft Technology Licensing, Llc | Scheduling execution requests to allow partial results |
US8875146B2 (en) | 2011-08-01 | 2014-10-28 | Honeywell International Inc. | Systems and methods for bounding processing times on multiple processing units |
US9207977B2 (en) * | 2012-02-06 | 2015-12-08 | Honeywell International Inc. | Systems and methods for task grouping on multi-processors |
KR101880452B1 (ko) * | 2012-02-06 | 2018-08-17 | 삼성전자주식회사 | 커널 수행 순서 스케줄링 방법 및 장치 |
US8726255B2 (en) | 2012-05-01 | 2014-05-13 | Concurix Corporation | Recompiling with generic to specific replacement |
US8650538B2 (en) | 2012-05-01 | 2014-02-11 | Concurix Corporation | Meta garbage collection for functional code |
JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8793669B2 (en) | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US9612868B2 (en) | 2012-10-31 | 2017-04-04 | Honeywell International Inc. | Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors |
FR2997773B1 (fr) * | 2012-11-06 | 2016-02-05 | Centre Nat Rech Scient | Procede d'ordonnancement avec contraintes d'echeance, en particulier sous linux, realise en espace utilisateur. |
US9268707B2 (en) | 2012-12-29 | 2016-02-23 | Intel Corporation | Low overhead paged memory runtime protection |
US9569260B2 (en) | 2013-05-31 | 2017-02-14 | Microsoft Technology Licensing, Llc | Efficient priority-aware thread scheduling |
US9369525B2 (en) * | 2013-06-26 | 2016-06-14 | International Business Machines Corporation | Highly resilient protocol servicing in network-attached storage |
US9304861B2 (en) | 2013-06-27 | 2016-04-05 | International Business Machines Corporation | Unobtrusive failover in clustered network-attached storage |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US9471660B2 (en) * | 2014-03-13 | 2016-10-18 | Sybase, Inc. | Partition lookup and state synchronization |
EP3198431A1 (en) | 2014-09-24 | 2017-08-02 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10318280B2 (en) | 2014-09-24 | 2019-06-11 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10102165B2 (en) * | 2014-11-25 | 2018-10-16 | International Business Machines Corporation | Arbitration in an SRIOV environment |
US10250512B2 (en) | 2015-01-21 | 2019-04-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
US10297347B2 (en) * | 2015-04-06 | 2019-05-21 | Preventice Solutions, Inc. | Adverse event prioritization and handling |
US10768984B2 (en) | 2015-06-11 | 2020-09-08 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US10169078B2 (en) | 2015-10-16 | 2019-01-01 | International Business Machines Corporation | Managing thread execution in a multitasking computing environment |
CN106708618A (zh) * | 2017-01-20 | 2017-05-24 | 郑州云海信息技术有限公司 | 一种进程调度方法及装置 |
US10884831B2 (en) * | 2017-06-28 | 2021-01-05 | Apple Inc. | Composable system |
CN109885393A (zh) | 2019-01-10 | 2019-06-14 | 华为技术有限公司 | 读写请求处理方法、装置、电子设备以及存储介质 |
CN111479329B (zh) * | 2019-01-23 | 2022-01-14 | 华为技术有限公司 | 资源调度方法及基站 |
US11334393B2 (en) | 2020-01-07 | 2022-05-17 | Bank Of America Corporation | Resource cluster chaining architecture |
US11301305B2 (en) | 2020-01-07 | 2022-04-12 | Bank Of America Corporation | Dynamic resource clustering architecture |
US10938742B1 (en) | 2020-01-31 | 2021-03-02 | Bank Of America Corporation | Multiplexed resource allocation architecture |
CN111930481B (zh) * | 2020-07-16 | 2024-06-18 | 重庆帮企科技集团有限公司 | 一种基于安卓系统的进程优先级提高方法和装置 |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US630116A (en) * | 1899-01-12 | 1899-08-01 | Henry Schmalz | Magazine tack-hammer. |
US4736318A (en) | 1985-03-01 | 1988-04-05 | Wang Laboratories, Inc. | Data processing system having tunable operating system means |
US5068778A (en) * | 1988-11-28 | 1991-11-26 | Reliance Electric Industrial Company | Industrial control system device |
JP2682770B2 (ja) | 1992-05-15 | 1997-11-26 | 富士通株式会社 | 仮想計算機システムのcpu制御方式 |
US5390232A (en) * | 1992-12-28 | 1995-02-14 | At&T Corp. | System for control of subscriber progragmmability |
US6948172B1 (en) | 1993-09-21 | 2005-09-20 | Microsoft Corporation | Preemptive multi-tasking with cooperative groups of tasks |
DE59310083D1 (de) * | 1993-09-24 | 2000-09-07 | Siemens Ag | Verfahren zum Lastausgleich in einem Multiprozessorsystem |
US5745778A (en) | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
JP3658420B2 (ja) | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
US5912888A (en) | 1994-06-09 | 1999-06-15 | U.S. Robotics Access Corp. | Digital network access server |
US5812844A (en) | 1995-12-07 | 1998-09-22 | Microsoft Corporation | Method and system for scheduling the execution of threads using optional time-specific scheduling constraints |
US6003061A (en) | 1995-12-07 | 1999-12-14 | Microsoft Corporation | Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider |
DE69738832D1 (de) * | 1996-03-28 | 2008-08-28 | Hitachi Ltd | Verfahren zum Planen von periodischen Prozessabläufen |
US6112243A (en) | 1996-12-30 | 2000-08-29 | Intel Corporation | Method and apparatus for allocating tasks to remote networked processors |
US6301616B1 (en) | 1997-04-11 | 2001-10-09 | Microsoft Corporation | Pledge-based resource allocation system |
JP4021518B2 (ja) | 1997-05-27 | 2007-12-12 | 富士通株式会社 | データベース・システム |
JPH1153326A (ja) | 1997-07-30 | 1999-02-26 | Internatl Business Mach Corp <Ibm> | 分散処理システム、クライアントノード、サーバノードおよび分散処理方法 |
US6385638B1 (en) * | 1997-09-04 | 2002-05-07 | Equator Technologies, Inc. | Processor resource distributor and method |
JP3027845B2 (ja) | 1997-11-21 | 2000-04-04 | オムロン株式会社 | プログラム制御装置および方法 |
SE511098C2 (sv) | 1997-12-08 | 1999-08-02 | Ericsson Telefon Ab L M | Kommunikationssystem och förfarande för att sända meddelanden i ett kommunikationssystem |
DE19755129B4 (de) * | 1997-12-11 | 2005-01-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Lastregulierung für ein Echtzeit-Kommunikationssystem |
EP0952519A1 (de) * | 1998-03-04 | 1999-10-27 | Siemens Aktiengesellschaft | Plattform eines Rechnersystems |
US6560628B1 (en) * | 1998-04-27 | 2003-05-06 | Sony Corporation | Apparatus, method, and recording medium for scheduling execution using time slot data |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6477562B2 (en) | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
US6874144B1 (en) | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
US7028298B1 (en) * | 1999-09-10 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and methods for managing resource usage |
US6754690B2 (en) * | 1999-09-16 | 2004-06-22 | Honeywell, Inc. | Method for time partitioned application scheduling in a computer operating system |
US6687904B1 (en) | 1999-11-22 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for selecting a locking policy based on a per-object locking history |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US6757897B1 (en) * | 2000-02-29 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and methods for scheduling and performing tasks |
US6957432B2 (en) | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
US6950848B1 (en) * | 2000-05-05 | 2005-09-27 | Yousefi Zadeh Homayoun | Database load balancing for multi-tier computer systems |
US6961934B2 (en) * | 2000-05-08 | 2005-11-01 | Microtune (San Diego), Inc. | Portable thread environment |
US7302685B2 (en) | 2000-06-02 | 2007-11-27 | Honeywell International Inc. | Methods and apparatus for sharing slack in a time-partitioned system |
US6785889B1 (en) | 2000-06-15 | 2004-08-31 | Aurema, Inc. | System and method for scheduling bandwidth resources using a Kalman estimator with active feedback |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
US6859926B1 (en) | 2000-09-14 | 2005-02-22 | International Business Machines Corporation | Apparatus and method for workload management using class shares and tiers |
EP1199632A1 (en) | 2000-10-20 | 2002-04-24 | Sun Microsystems, Inc. | Method and apparatus for resource access synchronization |
CN1258712C (zh) * | 2000-11-06 | 2006-06-07 | 皇家菲利浦电子有限公司 | 为任务分配预算的方法和系统 |
US20020078194A1 (en) | 2000-12-20 | 2002-06-20 | Murty Neti | Resource management and billing system for a broadband satellite communications system |
EP1217517A1 (en) * | 2000-12-22 | 2002-06-26 | Sun Microsystems, Inc. | Synchronizing calls in a server and client system |
US6957431B2 (en) * | 2001-02-13 | 2005-10-18 | International Business Machines Corporation | System for incrementally computing the maximum cost extension allowable for subsequent execution of each task using fixed percentage of the associated cost |
JP2002342097A (ja) | 2001-05-17 | 2002-11-29 | Matsushita Electric Ind Co Ltd | タスク割当可能時間決定装置及びタスク割当可能時間決定方法 |
GB0112571D0 (en) * | 2001-05-24 | 2001-07-18 | Ibm | Priority inversion in computer system supporting multiple processes |
US7191446B2 (en) * | 2001-06-01 | 2007-03-13 | Texas Instruments Incorporated | Method for resource management in a real-time embedded system |
JP3630118B2 (ja) * | 2001-07-12 | 2005-03-16 | 日本電気株式会社 | スレッド終了方法及び装置並びに並列プロセッサシステム |
WO2003009144A1 (en) * | 2001-07-19 | 2003-01-30 | Wind River Systems, Inc. | Memory management system |
US7412492B1 (en) | 2001-09-12 | 2008-08-12 | Vmware, Inc. | Proportional share resource allocation with reduction of unproductive resource consumption |
US20030061260A1 (en) | 2001-09-25 | 2003-03-27 | Timesys Corporation | Resource reservation and priority management |
US20030069917A1 (en) * | 2001-10-04 | 2003-04-10 | Miller Larry J. | Balanced client/server mechanism in a time-partitioned real-time operting system |
US20030084164A1 (en) * | 2001-10-29 | 2003-05-01 | Mazzitelli John Joseph | Multi-threaded server accept system and method |
US7117497B2 (en) * | 2001-11-08 | 2006-10-03 | Honeywell International, Inc. | Budget transfer mechanism for time-partitioned real-time operating systems |
EP1449080A2 (en) * | 2001-11-19 | 2004-08-25 | Koninklijke Philips Electronics N.V. | Method and system for allocating a budget surplus to a task |
US20050081200A1 (en) * | 2001-12-14 | 2005-04-14 | Rutten Martijn Johan | Data processing system having multiple processors, a task scheduler for a data processing system having multiple processors and a corresponding method for task scheduling |
EP1540475A2 (en) | 2002-08-20 | 2005-06-15 | Honeywell International Inc. | System and method for robust time partitioning of tasks in a real-time computing environment |
US7103745B2 (en) * | 2002-10-17 | 2006-09-05 | Wind River Systems, Inc. | Two-level operating system architecture |
US6988226B2 (en) | 2002-10-17 | 2006-01-17 | Wind River Systems, Inc. | Health monitoring system for a partitioned architecture |
JP4119239B2 (ja) | 2002-12-20 | 2008-07-16 | 株式会社日立製作所 | 計算機資源割当方法、それを実行するための資源管理サーバおよび計算機システム |
US7222343B2 (en) * | 2003-01-16 | 2007-05-22 | International Business Machines Corporation | Dynamic allocation of computer resources based on thread type |
US7761876B2 (en) | 2003-03-20 | 2010-07-20 | Siemens Enterprise Communications, Inc. | Method and system for balancing the load on media processors based upon CPU utilization information |
US7627506B2 (en) | 2003-07-10 | 2009-12-01 | International Business Machines Corporation | Method of providing metered capacity of temporary computer resources |
US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
US20040216101A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor |
US20040226015A1 (en) | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Multi-level computing resource scheduling control for operating system partitions |
US7562362B1 (en) * | 2003-06-18 | 2009-07-14 | Apple Inc. | User control of task priority |
US7620950B2 (en) | 2003-07-01 | 2009-11-17 | International Business Machines Corporation | System and method to monitor amount of usage of applications in logical partitions |
JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
US7512950B1 (en) * | 2003-08-14 | 2009-03-31 | Sun Microsystems, Inc. | Barrier synchronization object for multi-threaded applications |
JP3838437B2 (ja) * | 2003-09-26 | 2006-10-25 | 日本電気株式会社 | ネットワークスイッチ及びその動作方法、並びにブレードサーバ |
US7472389B2 (en) * | 2003-10-29 | 2008-12-30 | Honeywell International Inc. | Stochastically based thread budget overrun handling system and method |
US7840949B2 (en) * | 2003-11-03 | 2010-11-23 | Ramal Acquisition Corp. | System and method for data transformation using dataflow graphs |
US7383548B2 (en) | 2003-11-28 | 2008-06-03 | Nortel Networks Limited | CPU usage regulation |
US20050138168A1 (en) * | 2003-12-23 | 2005-06-23 | Hoffman Philip M. | System and method for metering the performance of a data processing system |
US7421691B1 (en) * | 2003-12-23 | 2008-09-02 | Unisys Corporation | System and method for scaling performance of a data processing system |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US7475399B2 (en) * | 2004-01-13 | 2009-01-06 | International Business Machines Corporation | Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization |
US7584476B2 (en) * | 2004-03-04 | 2009-09-01 | International Business Machines Corporation | Mechanism for reducing remote memory accesses to shared data in a multi-nodal computer system |
US7506361B2 (en) * | 2004-05-17 | 2009-03-17 | International Business Machines Corporation | Method for discovering servers, spawning collector threads to collect information from servers, and reporting information |
US7657892B2 (en) | 2004-05-20 | 2010-02-02 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
JP4520788B2 (ja) | 2004-07-29 | 2010-08-11 | 富士通株式会社 | マルチスレッドプロセッサ |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US20060130062A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Scheduling threads in a multi-threaded computer |
US20060212870A1 (en) * | 2005-02-25 | 2006-09-21 | International Business Machines Corporation | Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization |
US20060206891A1 (en) * | 2005-03-10 | 2006-09-14 | International Business Machines Corporation | System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted |
CA2538503C (en) | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8245230B2 (en) | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US7882505B2 (en) * | 2005-03-25 | 2011-02-01 | Oracle America, Inc. | Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs |
US7975271B2 (en) * | 2005-03-30 | 2011-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock |
US20080307425A1 (en) * | 2005-03-31 | 2008-12-11 | Shailendra Tripathi | Data Processing System and Method |
US7752620B2 (en) * | 2005-06-06 | 2010-07-06 | International Business Machines Corporation | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions |
-
2005
- 2005-08-31 US US11/216,795 patent/US8387052B2/en active Active
- 2005-12-22 US US11/317,468 patent/US8434086B2/en active Active
-
2006
- 2006-03-14 CN CNA2006100648185A patent/CN1952898A/zh active Pending
-
2013
- 2013-04-29 US US13/872,885 patent/US9424093B2/en active Active
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751335B (zh) * | 2008-11-28 | 2012-01-18 | 国际商业机器公司 | 调度虚拟机的垃圾收集的方法、装置和集群系统 |
CN101452404B (zh) * | 2008-12-09 | 2013-11-06 | 中兴通讯股份有限公司 | 一种嵌入式操作系统的任务调度装置及方法 |
CN103218258B (zh) * | 2011-12-07 | 2018-01-26 | 三星电子株式会社 | 用于在操作系统中动态地控制抢占分区的设备和方法 |
CN103218258A (zh) * | 2011-12-07 | 2013-07-24 | 三星电子株式会社 | 用于在操作系统中动态地控制抢占分区的设备和方法 |
CN103577376B (zh) * | 2012-08-02 | 2016-11-02 | 通用汽车环球科技运作有限责任公司 | 改善多核芯处理器的处理性能的方法 |
CN103577376A (zh) * | 2012-08-02 | 2014-02-12 | 通用汽车环球科技运作有限责任公司 | 改善多核芯处理器的处理性能的方法和装置 |
CN102999378B (zh) * | 2012-12-03 | 2015-08-26 | 中国科学院软件研究所 | 一种读写锁实现方法 |
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
US10742568B2 (en) | 2014-01-21 | 2020-08-11 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
US11343200B2 (en) | 2014-01-21 | 2022-05-24 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
US11683274B2 (en) | 2014-01-21 | 2023-06-20 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
CN106462466A (zh) * | 2014-06-23 | 2017-02-22 | 甲骨文国际公司 | 用于在多租户应用服务器环境中提供工作管理器的系统和方法 |
WO2016169206A1 (zh) * | 2015-04-23 | 2016-10-27 | 中兴通讯股份有限公司 | 事件处理方法、装置及系统 |
CN106293644A (zh) * | 2015-05-12 | 2017-01-04 | 超威半导体产品(中国)有限公司 | 考虑时间热耦合的功率预算方法 |
CN109445959A (zh) * | 2018-10-17 | 2019-03-08 | 北京技德终端技术有限公司 | 一种传感器数据处理实时操作系统 |
CN109800061A (zh) * | 2019-02-27 | 2019-05-24 | 上海美亦健健康管理有限公司 | 一种嵌入式软件多实例虚拟化技术 |
CN111614758A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN111614758B (zh) * | 2020-05-20 | 2023-05-02 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN112667369A (zh) * | 2020-06-08 | 2021-04-16 | 宸芯科技有限公司 | 一种线程调度方法、装置、存储介质及电子设备 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Also Published As
Publication number | Publication date |
---|---|
US20130247066A1 (en) | 2013-09-19 |
US8434086B2 (en) | 2013-04-30 |
US9424093B2 (en) | 2016-08-23 |
US8387052B2 (en) | 2013-02-26 |
US20070226739A1 (en) | 2007-09-27 |
US20060206887A1 (en) | 2006-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1952898A (zh) | 采用进程线程的自适应分区的进程调度程序 | |
EP1703388B1 (en) | Process scheduler employing adaptive partitioning of process threads | |
US8631409B2 (en) | Adaptive partitioning scheduler for multiprocessing system | |
CN103793272B (zh) | 一种周期性任务调度方法及系统 | |
US9361156B2 (en) | Adaptive partitioning for operating system | |
EP4404539A1 (en) | Resource scheduling method, apparatus and system, device, medium, and program product | |
Tsenos et al. | Amesos: a scalable and elastic framework for latency sensitive streaming pipelines | |
Guan et al. | A Design That Incorporates Adaptive Reservation into Mixed‐Criticality Systems | |
Kong et al. | Guaranteed scheduling for (m, k)-firm deadline-constrained real-time tasks on multiprocessors | |
Happe et al. | A prediction model for software performance in symmetric multiprocessing environments | |
CN101937371A (zh) | 一种嵌入式系统中监控任务执行状态的方法及装置 | |
Nosrati et al. | Task scheduling algorithms introduction | |
Sugaya et al. | Accounting system: A fine-grained cpu resource protection mechanism for embedded system | |
Kakkar | Scheduling techniques for operating systems for medical and IoT devices: A review | |
Ghiţ et al. | Capri: Achieving Predictable Performance in Cloud Spot Markets | |
Panunzio et al. | An approach to the timing analysis of hierarchical systems | |
CN115914403A (zh) | 分布式服务注册处理方法及装置 | |
Jones et al. | Beowulf Mini-grid Scheduling | |
Kebbal et al. | Scheduling parallel adaptive applications in networks of workstations and clusters of processors | |
Yu et al. | A performance comparison of communication-driven coscheduling strategies for multi-programmed heterogeneous clusters | |
Lennvall | Handling Aperiodic Tasks and Overload in Distributed Off-line Scheduled Real-Time Systems | |
Nyumu et al. | Institute of Mathematics and Statistics | |
Lin | Managing the soft real-time processes in RBED |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |