CN1327347C - 在多处理环境中执行进程 - Google Patents
在多处理环境中执行进程 Download PDFInfo
- Publication number
- CN1327347C CN1327347C CNB028274814A CN02827481A CN1327347C CN 1327347 C CN1327347 C CN 1327347C CN B028274814 A CNB028274814 A CN B028274814A CN 02827481 A CN02827481 A CN 02827481A CN 1327347 C CN1327347 C CN 1327347C
- Authority
- CN
- China
- Prior art keywords
- priority
- thread
- low priority
- shared
- shared resource
- 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.)
- Expired - Fee Related
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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及到在多处理环境中执行具有不同优先级的进程的方法和***,包含低优先级进程和高优先级进程的执行,其中高优先级进程和低优先级进程(T1)共享给定的资源,此方法包括下述步骤:当低优先级进程将要使用共享资源的时候就提高该低优先级进程的有效优先级,其中该有效优先级被提高到高于多处理环境中的其他进程。这样通过其他进程而使得高优先级进程具有尽可能短的延迟。
Description
技术领域
本发明涉及到在一个由计算设备运行的操作***中执行具有不同优先级的进程的方法,以及一种相应的***。更确切地说,本发明涉及到在给定一个多处理器或多处理环境的条件下,在一个操作***中执行使用了共享资源的具有不同优先级的进程的方法,以及一种相应的***。
背景技术
硬实时(hard real-time)或关键实时(critical real-time)***的软件通常包括高优先级的线程、进程、任务、或者作业等等(在本文全文中这些术语都是可以相互调换地使用的),它们负责执行在时间上很关键的动作或处理。通常,这样的***也包含较低的或者低优先级的线程负责执行后台动作或处理。
低优先级线程的处理可能被高优先级线程和其他优先级介于该高优先级线程和低优先级线程之间的线程(下文中称为中等优先级线程)抢先(pre-empt)。
线程、任务、进程或者作业之类是可以独立于其他部分而执行的一部分程序。支持多线程的操作***使得编程者能够设计其线程的多个部分可以同时执行的程序。
具有不同或者相同优先级的线程也许会通过共享资源(譬如存储器、文件、存储器或文件的一部分之类)进行通信或者使用共享资源。通常对共享资源的访问权是由一个程序对象来保护或处置的,它确保只允许一个线程去访问给定的资源,举例来说,使得在另一个线程完成把数据写入存储器之前(或者与此同时),一个线程不会尝试从存储器读取,反之亦然。这样的程序对象通常称为互斥量(mutex),它是“相互排斥对象”的简称。互斥量是一个允许多个程序线程共享相同资源(譬如文件和存储器访问)但不能同时共享的程序对象。在程序启动的时候,对于每一个被多个线程使用的共享资源,互斥量都伴随着一个独特的名字、标识符等而产生。在这一阶段之后,任何需要该资源的线程都必须在它使用该资源时对其他线程“锁定”该互斥量。当不再需要数据、资源之类的时候,或者当例程结束的时候,互斥量被解锁、释放等。互斥量可以通过一个信号量或者二进制信号量来实现,后者通常是一个硬件或者软件标志。在多任务***中,信号量通常是一个变量,其数值能“锁定”或者指示公共资源状态。它被用来获取正被使用的资源的信息。需要该资源的进程检查该信号量,以便确定该资源的状态并决定如何继续下去,譬如说,是去获取还是锁定一个相应的互斥量。
当高优先级线程和低优先级线程通过共享资源通信或者使用共享资源时,可能会发生阻止高优先级线程访问共享资源时间过长的问题,正如下文将要解释的那样,这样会阻止高优先级线程执行其时间上很关键的任务。假想在某个给定时间,低优先级线程“拥有”对共享资源的访问权,而接下来高优先级线程需要访问该共享资源,于是高优先级线程必须等待直到低优先级线程执行完毕。在这种情形下,中等优先级线程(它不一定必须使用这一特定共享资源)可能会接着通过抢先于低优先级线程而延迟高优先级线程的访问权,于是把高(和低)优先级线程必须等待的时间延长了一定时间量,此时间量等于中等优先级线程所使用的时间,这可能会造成高优先级的任务不能在预期的时间内执行其动作。
在文献中,这一问题通常被称为“优先级反转”,并将联系附图1a进行更详尽的解释。
此前针对这个特定问题的一种解决办法就是实施一种“优先级继承”,有时称为“优先级提升”的机制,其中拥有所有权的线程(譬如低优先级线程)暂时获得和等待中的进程/线程的最高优先级相同的优先级。通过这种方式,任何中等优先级的进程都不能抢先于该低优先级线程,从而也就不会另外延迟高优先级线程的等待时间。正如N.J.Keeling在“Missed it!-How priority Inversion messes up real-time performance and how the Priority Ceiling Protocol puts itright(错过了它!-优先级反转是如何毁了实时性能的,以及优先级封顶协议是如何纠正它的)”(《Real-Time Magazine(实时杂志)》99-4,1999)中所揭示的那样,这种优先级继承机制存在两个问题。当高优先级线程与其他线程共享多重资源时,会出现一个导致优先级继承将耗费太多的时间的问题;而当多线程相互之间共享多重资源时,可能出现另一个问题:如果线程以错误的顺序来分配资源,那么优先级继承并不能防止出现死锁。在Keeling的文献中提出了一种称为“priorityceiling(优先级封顶)”的针对这两个问题的解决方案,其中拥有所有权的线程暂时获得与被允许等待共享资源的互斥量的所有线程中最高优先级相同的优先级,。
然而,对于在高优先级线程和低优先级线程之间经共享资源进行通信的情形,并不总是能使用优先级继承和优先级封顶机制的,于是中等优先级线程(具有介于高优先级线程和低优先级线程之间的优先级)可能会阻止高优先级线程及时执行其动作,结果可能会造成实时应用的作废、错误等等。此外,优先级继承或者优先级封顶的机制的选项可能并不总是可用的或者被支持的,譬如由于运行这些线程的操作***施加了限制。作为一个例子,如果在一个给定时间,例如两个不同的操作***运行于单个处理器上,其中一个操作***是运行了高优先级线程的实时操作***,而另一个操作***是运行了低优先级线程的非实时***,那么低优先级线程的优先级将不能被提升得足够高,以到达高优先级线程的优先级。
发明内容
本发明的一个目的就是在多处理环境中提供执行具有不同优先级的进程的方法和***,其中的方法和***解决了现有技术的问题。
这一点的实现,是通过一种在多处理环境中运行具有不同优先级的进程的方法,其包含对低优先级进程和高优先级进程的执行,其中高优先级进程和低优先级进程共享某一给定资源,其特征在于该方法包含了如下步骤:当低优先级进程将要使用共享资源时,提升低优先级进程的有效优先级,其中该有效优先级被提升为高于该多处理环境中的其它进程的优先级。
这样一来,高优先级进程将只被其他进程延迟尽可能短的时间,以便它将能够在预期的时间里执行其任务,而除了高优先级进程之外的其他进程,都不能延缓低优先级进程访问给定资源,因为其“有效”优先级被提升了。
有效优先级可以被提升,直到高优先级线程已经完成了其他任务。
除了基本的同步和通信装置以及严格的优先级体制(其中一个线程不会被相同或者较低优先级的线程抢先)之外,可以不要求来自操作***的支持。
在一个优选实施例中描述了一个优选的实施方案。在一些进一步的实施方案中,附加的进程可以通过使用互斥量、布尔变量或者信号量来与高优先级进程相同步。
这样一来,提升低优先级进程的“有效”优先级是通过使用附加的线程来代表低优先级(它保持在相同的低优先级)访问给定资源,并和高优先级进程通信而实现的,其中该附加的进程不能被除了高优先级进程之外的其他进程延缓、抢先等等。
在另一优选实施例中描述了另一种优选的实施方案。可供选择地,该有效优先级被提升为与高优先级进程相同或者更高。
优选地,该操作环境是一种抢先的环境。
在一种实施方案中,多处理环境包含至少在一个给定时间,在单个处理器上运行的一个实时操作***和一个非实时操作***,其中实时操作***包含所述的高优先级线程和所述的附加进程,而其中该非实时操作***包含所述的低优先级线程。
这样一来,多处理***具有两组线程或者进程。所有的线程都竞争同一CPU的时间。在第一组中的线程被以严格的优先级进行调度:,一个线程在有一个具有更高优先级的线程同样需要CPU时间时将不能得到CPU时间。在第二组中线程只有当第一组中没有任何线程需要CPU时间时,才能获得CPU时间。所以实际上第一组中的所有线程都具有高于第二组中的线程的优先级。线程不能在不同的组之间迁移。所有的线程都能够共享存储器并在相互之间使用信号量和互斥量。
作为一个例子,譬如,第一组可以通过RTX(=实时扩展,由VenturCom有限公司设计)来调度。这一组能用于象进行实时处理的高优先级线程这样的线程。譬如,第二组可以由Windows NT(由Microsoft设计)来调度。这一组能够用于象进行后台处理和控制处理的低优先级线程那样的线程。
这一目的进一步通过在多处理环境中执行具有不同优先级的进程的***来实现,该环境包含能够适用于执行低优先级进程(T1)和高优先级进程(T4)的装置,其中高优先级进程(T4)和低优先级进程(T1)共享某一给定资源(SM),其特征在于该***包括:
-当低优先级进程(T1)将要使用共享资源(SM)时,临时提升低优先级进程(T1)的有效优先级的装置,其中该有效优先级被提升到高于多处理环境中的另一进程(T1,T2)的优先级。
附图说明
附图1a阐明了根据现有技术来执行具有不同优先级的各种线程;
附图1b阐明了根据本发明来执行具有不同优先级的各种线程;
附图1c和1d阐明了根据本发明可供选择的实施方案来执行具有不同优先级的各种线程;
附图2a阐明了根据本发明的方法的一种实施方案,其中当低优先级进程(T1)已经具有共享资源的访问权时高优先级进程(T4)试图访问它;
附图2b阐明了根据本发明的方法的一种实施方案,其中当低优先级进程已经具有共享资源的访问权时高优先级进程并不试图访问它;
附图3阐明了根据本发明的附加线程(T3)的实施方案的流程图;
附图4阐明了根据本发明的一种***。
具体实施方式
附图1a阐明了根据现有技术来执行具有不同优先级的各种线程。图中所显示的是,一个(譬如)执行时间上很关键的动作的高优先级线程、进程、作业、任务等(T4),一个(譬如)执行后台处理的低优先级或者相对较低优先级的线程(T1),以及一个具有介于T1和T4之间的优先级的中等优先级线程(T2)。所有这些线程都在一个提供多处理器或者多处理环境的操作***中执行,这里任一给定时间只有一单个线程是活动的。附图中以时间函数的形式阐明了这些线程(T4、T2、T1)何时处于活动状态。高优先级(T4)和低优先级线程(T1)使用象存储器一样的共享资源,其中对共享资源的访问是由互斥量(M)来保护的。“wg”指示的是“等待/获得互斥量(M)”的指令、命令等,而“r”指示“释放互斥量(M)”。
在时间轴的开始处,线程(T1)正在执行,而在时刻1线程(T1)执行了“wg”指令,指示线程(T1)想要使用共享资源,(譬如)因为它需要向(T1和T4之间)共享的存储器写入。由于在时刻1的互斥量(M)并没有被其他进程‘拥有’或分配给其它进程,于是线程(T1)开始拥有互斥量,并由此访问共享资源直到它释放该资源。在时刻2,线程(T1)被较高优先级的线程(T4)抢先,而在时刻3,因为线程(T4)试图访问共享资源(譬如从共享存储器中读取),因此它发出“wg”指令。由于在那个时刻互斥量(M)是被其他进程拥有的,所以线程(T4)必须等待直到互斥量(M)被释放,而被抢先了的线程(T1)继续(譬如)向共享的存储器中写入。在时刻4,在T1结束使用共享资源之前,另一个具有低于T4但高于T1的优先级的线程(T2)被启动或者被激活。这个线程(T2)因为具有较高的优先级而抢先于T1,并且被执行,直到在时刻5执行完毕。线程(T2)并没有被T4抢先,因为互斥量(M)被其它线程所拥有而且还没有被释放,所以T4正处于一种等待状态。在这一特定示例中,线程(T2)并没有使用T4和T1共享的资源。
在时刻5,线程(T2)运行完毕,而线程(T1)变为活动。在时刻6,线程(T1)结束使用共享资源,并释放互斥量(M),此后T4就能够获得互斥量(M),并由此能够访问共享资源。在时刻7,线程(T4)结束使用共享资源并释放互斥量(M),而线程(T1)又再次被激活。
因此这样一来,通过具有较低优先级但具有的优先级高于和(T4)共享资源的线程(T1)的线程(T2),(较)高优先级的线程(T4)可以被锁定、延迟、被阻止执行和/或访问某个共享资源等等。这是非常不幸的,特别对于负责时间上很关键的任务的高优先级线程,因为它们可能不能完成这些时间上很关键的动作。
附图1b阐明了根据本发明来执行具有不同优先级的各种线程。图中所显示的是,一个(譬如)执行时间上很关键的动作的高优先级线程、进程、作业、任务等(T4),一个(譬如)执行后台处理的低优先级或者相对较低优先级的线程(T1),一个具有介于T1和T4之间的优先级的中等优先级线程(T2),以及一个具有低于T4但是高于其他线程(T1和T2)的优先级的附加线程(T3)。附图中以时间函数的形式阐明了这些线程(T4、T 3、T2、T1)何时是活动的。在时刻1低优先级线程(T1)指示它想要访问它和高优先级线程(T4)共享的资源。譬如,这个指示可以通过使用或者设置一个信号量来完成。当这种指示发生时,具有低于T4但是高于其他线程(T1和T2)的优先级的附加线程(T3)抢先于T1,并在时刻2,实现“wg”指令的实际执行,以便访问共享资源,由此而对用于共享资源的互斥量(M)进行锁定、预留。这样一来,T3就代表T1对共享资源进行访问,也就是说,T1将不直接访问共享资源。正如用“s”所指示的那样,在时刻1,T3和T1优选地通过使用一个信号量而同步起来。通常,信号量被用于同步,而共享资源或存储器被用于通信。作为替代,可以使用消息传递,其中消息传达信息,而发送或接收消息可以被用来同步。
在时刻3,高优先级线程T4抢先于T3,并且在时刻4之前,它尝试访问共享资源。然而,由于共享资源已经被T3(代表T1)而使用,因此在时刻4,T4在发出“wg”指令之后进入一种等待状态。由于T4正在等待“w”,所以T3(拥有次高的优先级)再继续执行。在时刻5,T3结束使用共享资源,并对互斥量(M)发出释放指令“r”,而此后T4抢先于T3并获得或者锁定“g”互斥量(M),以便它能够访问该共享资源。在时刻6,T4结束使用共享资源并释放“r”互斥量(M)。在时刻7,T4结束执行它的譬如时间上很关键的任务,而T3变为活动。在时刻8,T3运行完毕,并如所指示的那样,再一次通过使用/设置信号量、使用消息传递等来和T1进行同步,此后线程T2抢先于T1并执行,直到在时刻9完成,而其后T1再继续。
T3和T1可以通过适当的机制进行通信,譬如通过共享存储器和/或使用信号量。T3将尽可能迅速地拥有互斥量(M),因为它只能被T4抢先(而不会被任何像T2那样的中等线程抢先),并且只要它拥有互斥量(M)就不等待T1。正常情况下,如果T1还没有把任何指令或信息告诉给T3,那么T3可以通过(譬如)等待一个T1最终将会释放的信号量来等待T1。然而,当T3代表T1访问互斥量(M)的时候,这种现象不会发生。
一般情形下,在T4处于等待共享资源的状态之后,T4可能仍然被T3阻断一小会儿,直到T3结束使用共享资源,然而这个时间段内T3将不会被T1(或者间接地被T2)延缓。
一般情形下,给予T1一个当它需要访问共享资源时会比较高的“有效”优先级。这是在通过使用具有低于T4但高于其他线程(T1和T2)的优先级的附加线程(T3)来实现的一种实施方案中,其中T1和T3被同步,而T3代表T1访问共享资源。
这样一来,对于不使用T1和T4之间的共享资源的中等线程(T2)而言,不可能延迟高优先级线程(T4),从而保证了高优先级线程的(譬如)在时间上很关键的任务被及时完成。
在一种实施方案中,只需要T3的优先级介于T4和其它(T1和T2)之间。然而,一个具有高于T1、T2、T3的新优先级的新进程可能如图1a所描述的那样造成T4的延迟。因此,优选地,T3的优先级仅仅比T4略略低一些而高于其他(T1和T2)。这样一来,除了T4之外将没有其他进程能够抢先于T3,因此而进一步延迟T4。
在一种可供选择的实施方案中,低优先级线程(T1)的有效优先级(譬如通过一个同步的并代表T1访问共享资源的附加进程T3来实现,)被提升到与T4的优先级相同或者可选择地更高。让我们把这样一个线程称为T5。然而,对这样的线程应该非常小心地编程,因为它可能破坏T4的实时性能。然而,出于符合本发明的目的,通常T5使用非常少的CPU时间。这些可选择的方案显示于附图1c中(有效优先级提升得高于T4)和附图1d中(有效优先级提升得和T4一样高)。在附图1d中,实线表示T4而虚线表示T5,以及括号表示在何时哪个线程(T4或者T5)是活动的。此处显示的是在T1同步到附加线程(T5)的时刻1之后,T4和其他线程(T2)可以不抢先于T5。T5在时刻2和3等待、获得和释放互斥量(M)。在时刻4,T4变为活动并在时刻5和6等待、获得和释放互斥量(M),这是在T2和T1分别在时刻7和8变为活动之前。这样一来,任何附加的线程(T2)都不会延迟在时间上很关键的线程(T4)。在这种情形下,当T4和T5具有相同的优先级(附图1d)时,在一些操作***(例如像RTX)中,T4仍然不能抢先于T5。如果T4碰巧恰在时刻1有了重要的任务(这是相当少有的情形),则T4和T5可能启动。如果T4在T5之前启动,那么它将在T5代表T1访问共享资源之前完成其时间上很关键的任务,此后T4将象附图1d说明的(从时刻1到7)一样访问共享资源。如果T5在T5之前启动,那么就对应于图中所示的情形。
附图2a阐明了根据本发明的方法的一种实施方案,其中当低优先级线程(T1)已经具有共享资源的访问权时高优先级线程(T4)试图访问它。该方法在步骤(200)启动。在步骤(201),将根据多处理环境中的进程/线程的优先级来执行它们。在步骤(202),进行低优先级线程(T1)是否需要访问共享存储器这样的共享资源(SM)的测试、指示等。如果不需要,那么该方法将在步骤(201)正常地执行进程。如果需要,则该方法行进到步骤(203),其中根据本发明来提升T1的‘有效’优先级。在步骤(204),T1保护对共享资源的访问,譬如通过获取该共享资源的互斥量(M)来进行,且T1开始使用SM。在步骤(205)确定当T1拥有互斥量(M)时高优先级线程(T4)是否尝试访问共享资源。如果是这种情形,那么T4等待互斥量(M)被释放,并在步骤(206)进入等待状态。如果T4不需要访问共享资源(SM)或者T4正在等待,则T1在步骤(207)结束使用共享资源(SM)并释放共享资源(SM)的互斥量(M)。在T1结束使用共享资源(SM)之后,在步骤(208)确定T4是否在等待。如果未在等待,那么T1完成其处理(包括除访问共享资源(SM)以外的其他事情),且T1的“有效”优先级被降低到其正常的低优先级。该“有效”优先级也可以紧接在T1使用共享资源(SM)做完(步骤(207))之后而在完成其他任务之前被降低。在步骤(209)之后,方法行进到步骤(201),在此各进程将正常运行。如果在步骤(208)T4确实是在等待,那么T4抢先于T1,并在步骤(210)保护对共享资源(SM)的访问,譬如这是通过在获取互斥量(M)而进行,此后,在步骤(211)T4结束使用SM,并在行进到步骤(209)之前,在步骤(212)可能结束其他的任务。
这样一来,在步骤(203)之后,(除了T4之外)其他进程、线程等都不能抢先于T1,由此保证T4不会被延缓得太久。有可能发生的是,T4在步骤(203)之后和在步骤(204)之前想要访问共享资源。在这种情形下,它将立即得到互斥量,使用共享资源,然后又释放互斥量。一种避免T4抢先于T1(或T3)的方法就是如结合附图1c和1d一起阐明的那样,具有一个等于或高于T4的优先级的有效优先级。
如果如同前文和下文所解释的那样,使用代表T1访问共享资源且具有低于T4而高于其他进程的优先级的附加线程(T3)来实施提升T1的“有效”优先级的步骤,那么步骤(203)将调用T3来代表T1而在步骤(204、207、209)中将读取T3而不是T1。优选地,T1和T3将在步骤(203)和步骤(209)进行同步。这种实施方案将联系附图3用更详尽的细节来进行解释。
附图2b阐明了根据本发明的方法的一种实施方案,其中当低优先级线程(T1)已经具有共享资源的访问权时高优先级线程(T4)并不试图访问该共享资源。步骤(220-224;225)对应于附图2a中的步骤(200~204;207)。在T1于步骤(225)释放了对共享资源(SM)的访问权之后,在步骤(226)用布尔变量(B4)、信号量或者消息传递等,向T4给出一个信号、指示等,表示信息、数据等已在等待。
在步骤(227),T4抢先于T1,并(譬如)通过获取互斥量(M),而保护对共享资源的访问,且在步骤(228),T4使用并释放资源(SM)。在步骤(229),T4完成了其它与访问共享资源(SM)无关的任务,如果有的话。在步骤(230),T1恢复执行并完成。“有效”优先级被降低(也可以在步骤(225)完成,且该方法回到步骤(221)。然而,在步骤(225)中降低“有效”优先级不如在步骤(230)中有利,因为T2可能在步骤(226)之前抢先于T1,因此可能会在用信号通知T4之前花费更长的时间。
如果如同前文和下文所解释的那样,使用代表T1访问共享资源且具有低于T4而高于其他进程的优先级的附加线程(T3)来实施提升T1的“有效”优先级的步骤,那么步骤(223)将调用T3来代表T1且在步骤(224、225、226、230)中将读取T3而不是T1。优选地,T1和T3将在步骤(223)和步骤(230)进行同步。如果需要的话,优选地,T3和T4在步骤(226)将通过采用(譬如)互斥量(M)或者布尔变量(B4)和信号量(S4)来进行同步。然而,T3和T4不必在所有的情形下都同步,因为对于一些应用而言,只需要简单地用信号通知T4:信息已在等待就足够了。这种实施方案将联系附图3用更详尽的细节来进行描述。可供选择地,正如其他部分所描述的那样,也可以通过使得线程具有的优先级等于或者高于T4的优先级来实现对“有效”优先级的提升。
附图3阐明了根据本发明的附加线程(T3)的实施方案的流程图。在这种特定的实施方案中,附加的线程(T3)(代表低优先级线程(T1))和高优先级线程(T4)之间通过用互斥量(M)保护而用布尔变量(B4)和信号量(S4)来同步的共享存储器(SM4)进行通信。T3和低优先级线程(T1)之间通过用信号量S1A和信号量S1B来同步的共享存储器(SM1)进行通信。在这一特定的范例中,信息、数据等将使用共享存储器(SM1)从低优先级线程(T1)使用共享存储器(SM4)、通过附加的线程(T3)发送到高优先级线程(T4)。
在步骤(301)本方法进行初始化,其中设定进程和参数的初始值等。在这一特定的范例中,把布尔变量(B4)设置成“假”用来指示没有就绪/可供T4使用的信息、数据等。
在步骤(303),T3的实施例等待一个T1需要向T4发送信息/与T4通信的指示。其它进程(包含T1和T3)在等待过程中可正常地运行。这种等待可以通过等待一个信号量(S1A)来实现,也就是说等待T1访问了共享资源(SM)并且(譬如)将信息或数据放入了共享存储器(SM1),其次等待互斥量(M)被释放。在互斥量(M)是可获得后/如果互斥量可获得,T3保留/把握住它,以便T3可访问共享存储器(SM4)。在步骤(304),来自共享存储器(SM1)的内容被复制到共享存储器(SM4)。在信息传送之后,互斥量(M)被释放,以便其他进程可使用该共享资源。在步骤(305),布尔变量(B4)被设置成“真”,以便通知T4有可获得的信息。在步骤(306),本方法等待信号量(S4),该信号量通知:T4是否已经访问/使用了共享存储器(SM4)中的信息、数据等。在T4使用该信息之后,在步骤(307)释放掉信号量(S1B),通知T1:共享资源(SM1)可以被用作其他目的了,也就是说,T4被做完,而此后方法重新从头开始直到需要进行新的通信。
用于附加线程(T3)的示例性的实施方案的伪码如下:
Boolean B4:=false
While forever do
{
等待S1A; //等待直到T1把信息放入SM1
等待M;
把SM1复制到SM4;
释放M;
B4:=真; //告诉T4已经有信息了
等待S4; //等待T4已使用SM4中的信息
释放S1B; //告诉T1,SM1可以被填充其他信息了。
}
在这个实施方案中,通常,T4将频繁(例如在一个while循环中)执行:
if(B4==真)
{
B4:=假;
等待M;
使用SM4中的信息;
释放M;
释放S4;
}
B4和S4提供在一些应用中可能会有用的额外的同步化,尽管使得这个实施方案更复杂。可供选择地,B4和S4可以从本实施方案中去除。
可供选择地,本方法可以使用循环缓冲器和/或不同的同步方法或计划。此外,从SM1到SM4的复制动作(304)可以被省略,或者用其他动作来代替(譬如,如果信息要从T4传输到T1,那么是从SM4到SM1的复制动作,等等),因为它仅仅被用来从T1向T4传送数据。另一个范例是使用“远程过程调用”,其中第一个过程参数从T1复制到T4,接着T4执行了过程,然后该过程把结果复制T1。然而,这样需要比上面示例中更多的同步化。也可以让它以相反的方向工作。
在这个T3的示范性实施方案的上下文中,附图1b可以表示T1把数据、信息等(通过T3)写入到共享存储器(SM4)的情形,以便让T4读取,但是这里在T1完成写入共享存储器(SM4)之前,T4就尝试去访问共享存储器(SM4)。
伪码的各行按照下文而可与附图1b的时间相对应:
{等待S1A; (对应于T=1)
等待M; (T=2)
把SM1复制到SM4; (在T=2和T=5之间)
释放M; (T=5)
B4:=真; (在T=7之前)
等待S4; (T=7)
释放S1B; (T=8)}
在附图1b的情形中其实并没有使用“B4:=true”,因为在T1(T3)结束之前,T4已经尝试去获取对SM4的访问权了。否则,这将用信号通知T4:它应该去访问SM4以取回信息。
附图4阐明了根据本发明的一种***的实现方案的示意框图。附图中所显示的是根据本发明的***(400),它包含一个或多个微处理器(401),后者通过通信总线(404)或者类似的东西连接到存储器和/或贮存设备(402)和其他设备或者功能单元(403)。微处理器(401)负责执行不同的进程、线程等(T1、T2、T3、T4),负责使用这些线程来执行根据本发明的方法,以及其它诸如操作***、专用程序等的其他软件,以及负责根据本发明而对线程进行同步化。
存储器或贮存设备(402)包含被线程T4和T3共享的、就像共享的存储器(SM4)或文件或其中一部分那样的共享资源,以及被线程T3和T1共享的另一个共享存储器(SM1)或文件。共享资源可以(譬如)是共享的输入/输出(I/O)设备,譬如它包含一个存储器,其中一个线程可以写到存储器中而另一个可以从中读取。在此处也指出了,就联系附图3来描述的示例性的实施方案而言,对于同步各种线程,采用了哪种同步手段。对于SM4而言,它是一个布尔变量(B4)和一个信号量(S4),其中互斥量(M)控制对SM4的访问权,而对于SM1而言,它是第一信号量(S1A)和第二信号量(S1B)。
其他设备或功能单元(403)可以是(譬如)显示器、通信设备、网络设备等等。
可以使用本发明的***的一个例子是(譬如)可在电缆***、地面***、卫星***等当中使用的MPEG-2重新复接设备,它广播数字视频等。同样,象机顶盒或者数字电视机那样的数字视频或者音频的接收机也可以包含符合本发明的***。MPEG-2数据流被实时操作***(譬如RTX)中运行的软件线程实时处理。通常,在同一处理器上,在非实时操作***(譬如Windows NT)中运行了许多控制软件。高优先级线程(T4)可能是实时操作***RTX中的这样的数据流处理线程,而低优先级线程(T1)可能是Windows NT中的控制处理线程。RTX确实提供优先级提升,但是这在RTX的线程和Windows NT的线程之间是不可用的。因此,根据本发明,避免了在时间上很关键的线程(T4)被类似WindowsNT中断、延迟过程调用等的中等优先级线程(T2)延缓太长时间。这样一来,从Windows NT线程到RTX线程的控制命令的通信,从RTX线程到Windows NT线程的错误消息的通信等等,便在没有上述缺陷的情形下得以实现。
Claims (12)
1.一种在多处理环境中执行具有不同优先级的进程的方法,包含执行低优先级进程(T1)和高优先级进程(T4),其中高优先级进程(T4)和低优先级进程(T1)共享给定的资源,该方法包括下述步骤:
-当低优先级进程(T1)将要使用该共享资源时,临时提高该低优先级进程(T1)的有效优先级,其中这一有效优先级被提高到高于多处理环境中的一其他进程(T1,T2)的优先级;
其特征在于提高有效优先级的步骤包含:
-执行附加的进程(T3、T5)来代表该低优先级进程(T1)访问共享资源,其中该附加的进程(T3、T5)具有与该有效优先级相等的优先级。
2.根据权利要求1的方法,其特征在于
该附加的进程(T3、T5)是和该低优先级进程(T1)同步的。
3.根据权利要求1的方法,其特征在于,多处理器环境包含至少在某个给定时间是运行于单个处理器之上的实时操作***和非实时操作***,其中实时操作***包含所述的高优先级线程(T4)和所述的附加的进程(T3、T5),而非实时操作***包含所述的低优先级线程(T1)。
4.根据权利要求2的方法,其特征在于:
-附加的进程(T3)和低优先级进程(T1)之间是采用第一信号量(S1A)和第二信号量(S1B)来同步的。
5.根据权利要求1的方法,其特征在于有效优先级被提高:
-至少直到该低优先级进程(T1)已访问或者使用该共享资源;或者
-如果在该低优先级进程(T1)访问或者使用该共享资源的同时,高优先级进程(T4)试图访问或者使用该共享资源,则至少直到高优先级进程(T4)已访问或者使用该共享资源。
6.根据权利要求1的方法,其特征在于低优先级进程(T1)的有效优先级被提高到低于高优先级进程(T4)的优先级而高于其它进程(T1;T2)。
7.根据权利要求4的方法,其特征在于对共享资源的访问权是被互斥量(M)控制的,因此只要所述的附加的进程(T3、T5)拥有互斥量(M),所述的附加的进程(T3、T5)就不会等待低优先级进程(T1)的执行。
8.根据权利要求1的方法,其特征在于共享资源是从下列一组中选取出来的:
-共享存储器;
-共享文件;以及
-共享的输入/输出设备。
9.根据权利要求1的方法,其特征在于高优先级进程(T4)执行时间上很关键的任务。
10.一种在多处理环境中执行具有不同优先级的进程的***(400),包含适应于执行低优先级进程(T1)和高优先级进程(T4)的装置(401),其中高优先级进程(T4)和低优先级进程(T1)共享给定的资源,该***包括:
-当低优先级进程(T1)将要使用该共享资源时临时提高该低优先级进程(T1)的有效优先级的装置,其中这一有效优先级被提高到高于该多处理环境中的其他进程(T1,T2)的优先级;
其特征在于提高有效优先级的装置被设计为:执行附加的进程(T3、T5)来代表低优先级进程(T1)访问该共享资源,其中附加的进程(T3、T5)具有与有效优先级相等的优先级。
11.根据权利要求10的***,其特征在于
该***(400)包含同步装置,其被设计来使得附加的进程(T3、T5)和低优先级进程(T1)同步。
12.根据权利要求10的***(400),其特征在于,该***包含单个处理器(401),至少在某个给定时间,它包含运行于单个处理器(401)之上的实时操作***和非实时操作***,其中实时操作***包含所述的高优先级线程(T4)和所述的附加的进程(T3、T5),而非实时操作***包含所述的低优先级线程(T1)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02075299 | 2002-01-24 | ||
EP02075299.4 | 2002-01-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1615472A CN1615472A (zh) | 2005-05-11 |
CN1327347C true CN1327347C (zh) | 2007-07-18 |
Family
ID=27589136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028274814A Expired - Fee Related CN1327347C (zh) | 2002-01-24 | 2002-12-19 | 在多处理环境中执行进程 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050125789A1 (zh) |
EP (1) | EP1497726A2 (zh) |
JP (1) | JP4170227B2 (zh) |
KR (1) | KR20040075960A (zh) |
CN (1) | CN1327347C (zh) |
WO (1) | WO2003062988A2 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006146678A (ja) | 2004-11-22 | 2006-06-08 | Hitachi Ltd | 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム |
US8020141B2 (en) * | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8255912B2 (en) | 2005-04-13 | 2012-08-28 | Qualcomm Incorporated | Techniques for setting events in a multi-threaded system |
US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US20070039000A1 (en) * | 2005-08-10 | 2007-02-15 | Hewlett-Packard Development Company, L.P. | Lock order determination method and system |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
JP2007148582A (ja) * | 2005-11-24 | 2007-06-14 | Matsushita Electric Ind Co Ltd | タスク実行制御装置、タスク実行制御方法、及びプログラム |
US7689838B2 (en) * | 2005-12-22 | 2010-03-30 | Intel Corporation | Method and apparatus for providing for detecting processor state transitions |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US7734879B2 (en) * | 2006-07-27 | 2010-06-08 | International Business Machines Corporation | Efficiently boosting priority of read-copy update readers in a real-time data processing system |
KR101282139B1 (ko) * | 2006-09-11 | 2013-07-04 | 삼성전자주식회사 | 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법 |
KR20080064608A (ko) * | 2007-01-05 | 2008-07-09 | 삼성전자주식회사 | SPI(Simple PriorityInheritance) 방식에 따른 멀티태스킹 방법 및임베디드 시스템 |
US20080244507A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
JP4591480B2 (ja) * | 2007-06-29 | 2010-12-01 | ブラザー工業株式会社 | コンピュータプログラム及びネットワーク端末 |
US8495641B2 (en) * | 2007-06-29 | 2013-07-23 | International Business Machines Corporation | Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes |
JP2009025939A (ja) * | 2007-07-18 | 2009-02-05 | Renesas Technology Corp | タスク制御方法及び半導体集積回路 |
US8095932B2 (en) * | 2007-08-14 | 2012-01-10 | Intel Corporation | Providing quality of service via thread priority in a hyper-threaded microprocessor |
US8280832B1 (en) | 2009-03-04 | 2012-10-02 | The Mathworks, Inc. | Proving latency associated with references to a data store |
US9582768B1 (en) | 2008-01-31 | 2017-02-28 | The Mathworks, Inc. | Determining conditions associated with accessing data stores |
US8601457B1 (en) | 2008-01-31 | 2013-12-03 | The Mathworks, Inc. | Checking for access problems with data stores |
US8234647B1 (en) * | 2008-01-31 | 2012-07-31 | The Mathworks, Inc. | Checking for mutual exclusiveness of a shared resource |
US8429657B2 (en) * | 2008-04-28 | 2013-04-23 | Oracle International Corporation | Global avoidance of hang states via priority inheritance in multi-node computing system |
CN101751293B (zh) * | 2008-12-16 | 2013-10-30 | 智邦科技股份有限公司 | 程序的线程群组管理方法 |
JP5482052B2 (ja) * | 2009-09-24 | 2014-04-23 | 富士通株式会社 | 観測分析装置および観測分析方法 |
JP5669222B2 (ja) * | 2009-10-29 | 2015-02-12 | Necディスプレイソリューションズ株式会社 | 公共空間に第三者のコンテンツを表示するシステム、ソフトウェア・アプリケーション及び方法 |
US9940670B2 (en) | 2009-12-10 | 2018-04-10 | Royal Bank Of Canada | Synchronized processing of data by networked computing resources |
AU2010330629B2 (en) * | 2009-12-10 | 2015-11-05 | Royal Bank Of Canada | Synchronized processing of data by networked computing resources |
KR101644800B1 (ko) * | 2010-01-07 | 2016-08-02 | 삼성전자주식회사 | 컴퓨팅 시스템 및 방법 |
WO2012132017A1 (ja) * | 2011-03-31 | 2012-10-04 | 富士通株式会社 | 排他制御方法、および排他制御プログラム |
CN102831007B (zh) * | 2011-06-14 | 2017-04-12 | 中兴通讯股份有限公司 | 实时处理***中的共享资源访问方法和实时处理*** |
CN103870330A (zh) * | 2014-03-03 | 2014-06-18 | 大唐移动通信设备有限公司 | 一种基于dsp的任务调度方法和装置 |
CN106095558B (zh) * | 2016-06-16 | 2019-05-10 | Oppo广东移动通信有限公司 | 一种音效处理的方法及终端 |
US10776156B2 (en) * | 2016-09-30 | 2020-09-15 | Intel Corporation | Thread priority mechanism |
US10579417B2 (en) | 2017-04-26 | 2020-03-03 | Microsoft Technology Licensing, Llc | Boosting user thread priorities to resolve priority inversions |
CN107133092A (zh) * | 2017-05-24 | 2017-09-05 | 努比亚技术有限公司 | 多线程同步处理方法、终端及计算机可读存储介质 |
JP6796040B2 (ja) * | 2017-08-29 | 2020-12-02 | 日立オートモティブシステムズ株式会社 | アクセス制御装置 |
US20190073243A1 (en) * | 2017-09-07 | 2019-03-07 | Alibaba Group Holding Limited | User-space spinlock efficiency using c-state and turbo boost |
US10503550B2 (en) | 2017-09-30 | 2019-12-10 | Intel Corporation | Dynamic performance biasing in a processor |
CN111506438A (zh) * | 2020-04-03 | 2020-08-07 | 华夏龙晖(北京)汽车电子科技股份有限公司 | 一种共享资源访问方法及装置 |
US20230134872A1 (en) * | 2021-10-29 | 2023-05-04 | Blackberry Limited | Thread state transitions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1064778A (zh) * | 1990-11-14 | 1992-09-23 | 弗格森有限公司 | 含有画中画处理器的电视接收机 |
CN2377780Y (zh) * | 1999-04-09 | 2000-05-10 | 南京大学 | 一种机顶盒 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4104365C1 (zh) * | 1991-02-13 | 1992-03-05 | Siemens Ag, 8000 Muenchen, De | |
US5333319A (en) * | 1992-03-02 | 1994-07-26 | International Business Machines Corporation | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources |
US6029190A (en) * | 1997-09-24 | 2000-02-22 | Sony Corporation | Read lock and write lock management system based upon mutex and semaphore availability |
US6587955B1 (en) * | 1999-02-26 | 2003-07-01 | Sun Microsystems, Inc. | Real time synchronization in multi-threaded computer systems |
US6874144B1 (en) * | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
US6308245B1 (en) * | 1999-05-13 | 2001-10-23 | International Business Machines Corporation | Adaptive, time-based synchronization mechanism for an integrated posix file system |
US6904483B2 (en) * | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
-
2002
- 2002-12-19 KR KR10-2004-7011475A patent/KR20040075960A/ko not_active Application Discontinuation
- 2002-12-19 EP EP02790617A patent/EP1497726A2/en not_active Ceased
- 2002-12-19 JP JP2003562785A patent/JP4170227B2/ja not_active Expired - Fee Related
- 2002-12-19 US US10/502,144 patent/US20050125789A1/en not_active Abandoned
- 2002-12-19 WO PCT/IB2002/005632 patent/WO2003062988A2/en not_active Application Discontinuation
- 2002-12-19 CN CNB028274814A patent/CN1327347C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1064778A (zh) * | 1990-11-14 | 1992-09-23 | 弗格森有限公司 | 含有画中画处理器的电视接收机 |
CN2377780Y (zh) * | 1999-04-09 | 2000-05-10 | 南京大学 | 一种机顶盒 |
Also Published As
Publication number | Publication date |
---|---|
US20050125789A1 (en) | 2005-06-09 |
KR20040075960A (ko) | 2004-08-30 |
JP2005516281A (ja) | 2005-06-02 |
WO2003062988A3 (en) | 2004-11-04 |
JP4170227B2 (ja) | 2008-10-22 |
CN1615472A (zh) | 2005-05-11 |
EP1497726A2 (en) | 2005-01-19 |
WO2003062988A2 (en) | 2003-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1327347C (zh) | 在多处理环境中执行进程 | |
US5448734A (en) | Selective distribution of messages using named pipes | |
DE69326272T2 (de) | Verfahren und Gerät zur Ausführung von konditionellen Operationen auf externe gemeinsam genutzte Daten | |
DE69904190T2 (de) | Verfahren und programm zum verarbeiten der verwaltungsanfragen einer verteilten netzwerkanwendung in einer gruppierten rechnerumgebung | |
US5918248A (en) | Shared memory control algorithm for mutual exclusion and rollback | |
CA2091993C (en) | Fault tolerant computer system | |
EP0444376B1 (en) | Mechanism for passing messages between several processors coupled through a shared intelligent memory | |
EP1495571B1 (en) | Transparent consistent semi-active and passive replication of multithreaded application programs | |
US6141720A (en) | Method and apparatus for coordination of a shared object in a distributed system | |
US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
JPH03126158A (ja) | スケジユーリング方法及び装置 | |
JP4171910B2 (ja) | 並列処理システム及び並列処理プログラム | |
US6421701B1 (en) | Method and system for replication support in a remote method invocation system | |
US20030131041A1 (en) | System and method for coordinating access to data for a distributed application | |
WO2012000997A1 (en) | An apparatus for processing a batched unit of work | |
WO2006113434A2 (en) | Fault tolerant distributed lock management | |
JPH06202883A (ja) | プロセス間通信装置及び通信方法 | |
JPH03194647A (ja) | 故障通告方法 | |
JPH04271453A (ja) | 複合電子計算機 | |
CN115495262A (zh) | 一种微内核操作***及进程间消息的处理方法 | |
US6832266B1 (en) | Simplified microkernel application programming interface | |
US6507861B1 (en) | System and method for avoiding deadlock in a non-preemptive multi-threaded application running in a non-preemptive multi-tasking environment | |
JP4584935B2 (ja) | 動作モデルベースマルチスレッドアーキテクチャ | |
Lehey | Improving the FreeBSD SMP Implementation. | |
WO2003038614A2 (en) | Method and system for guaranteeing sequential consistency in distributed computations |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070718 Termination date: 20100119 |