基于进程事件的信号量系统的制作方法

文档序号:6402519阅读:155来源:国知局
专利名称:基于进程事件的信号量系统的制作方法
技术领域
本发明一般地涉及并行进程,更具体而言,本发明涉及用于管理对共享系统资源进行访问的信号量(semaphore)。
背景技术
执行并行处理的系统包括同时执行的多个进程。使用并行处理时的一个常见问题是保护公共资源的内容。
实现这种保护的一种公知途径是使用信号量,信号量一般是硬件或软件标志。在多任务系统中,信号量是指示公共资源状态的变量。信号量用于锁定正被使用的资源。需要所述资源的进程检查信号量,以确定所述资源的状态,然后决定如何继续。信号量向其它潜在的用户指示出一个文件或其它资源正被使用,并防止由多于一个的进程进行访问。
然而,当多个进程需要访问一个公共资源时,就可能出现诸如饥饿和/或死锁之类的问题。当一个或多个进程被阻止访问公共资源时出现饥饿,而当一个或多个进程互相锁定时可能出现死锁,从而使执行停止。
当存在多个资源时,上述情况还会更复杂。解决此问题的传统方法是对每个资源采用一个信号量。然而,当资源数量变得很大时,这种解决方法并不十分有效。


在附图中,示例性而非限制性地图示了本发明,其中相同的标号指的是类似的元件,在附图中图1是一个方框图,示出了根据本发明一般实施例的系统体系结构。
图2是一个方框图,示出了一个使用信号量的现有技术系统。
图3是一个方框图,示出了根据本发明实施例的一个系统,该系统具有自足(self-contained)信号量系统。
图4是一个方框图,示出了本发明一个实施例中的自足信号量系统。
图5是一个流程图,示出了用于使用图4的自足信号量系统的方法。
图6是一个方框图,示出了本发明另一实施例中的具有定时器元件的自足信号量系统。
图7是一个流程图,示出了用于使用图6的自足信号量系统的方法。
图8是一个方框图,示出了一个根据本发明实施例的系统,该系统具有与全局仲裁器交互的信号量系统。
图9是一个方框图,示出了图8的全局仲裁器的全局优先级队列。
图10是一个方框图,示出了本发明一个实施例中与全局仲裁器交互的信号量系统。
图11是一个示例性流程图,示出了图8中的全局仲裁器的全局优先级队列是如何工作的。
图12是一个流程图,示出了用于图10的信号量系统的方法。
图13是一个方框图,示出了本发明一个实施例中的信号量系统,该系统具有定时器元件并与全局仲裁器交互。
图14是一个流程图,示出了用于图13的信号量系统的方法。
图15是一个方框图,示出了根据本发明一般实施例,用于信号量系统的示例性逻辑电路。
具体实施例方式
本发明的一个方面是一种用于基于公平性的信号量系统的方法,用于管理对共享系统资源的访问。所述方法包括对资源进行请求,然后确定该资源是否正被另一进程所请求,或者该资源是否被另一进程锁定。如果所述资源正被另一进程所请求,则将所述资源给予具有较高优先级的进程。如果所述资源被另一进程锁定,则不授权进程访问所述资源。
在多种变化和不同的实施例中,所述信号量系统可包括并使用定时器元件和全局仲裁器的任意组合,所述全局仲裁器具有全局优先级模块。
本发明包括将在下面描述的多种操作。本发明的这些操作可以由硬件组件来执行,或者可以包含在机器可执行的指令中,所述指令可用于以这些指令编程的通用或专用处理器或者逻辑电路来执行所述操作。或者,所述操作可以由硬件和软件的组合来执行。
可将本发明作为计算机程序产品而提供,所述产品可包括机器可读介质,在该介质上存储有指令,所述指令可被用来对计算机(或其它电子设备)进行编程,以执行本发明的处理。所述机器介质可包括但并不局限于软盘、光盘、CD-ROM(光盘只读存储器),以及磁光盘、ROM(只读存储器)、RAM(随机访问存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电磁可擦除可编程只读存储器)、磁卡或光卡、闪存,或者其它类型的适于存储电子指令的媒体/机器可读介质。
而且,本发明还可被作为计算机程序产品而下载,其中所述程序可以依靠包含在载波或其它传播介质中的数据信号,经由通信链路(例如调制解调器或网络连接)而从远程计算机(例如服务器)传输到请求计算机(例如客户端)。因此,这里应将载波视作为包括机器可读介质。
引言图1示出了系统100,在该系统中可实现本发明的实施例。该系统包括至少一个CPU(中央处理单元)102(仅示出了一个),至少一个存储器104(仅示出了一个)和总线106,CPU 102和存储器104通过总线106进行交互。存储器104包括多个资源108(仅示出了一个)和多个信号量110(仅示出了一个),而CPU 102包括多个进程112(仅示出了一个)。
图2示出了现有技术系统200,该系统可实现在图1的系统100中。在系统200中,CPU 102包括多个进程202、204、206和多个资源208、210、212、214,其中每个资源208、210、212、214都具有一个对应的信号量216、218、220、222,用于管理对资源208、210、212、214的共享访问。或者,每个资源208、210、212、214都可以对应于由单个信号量对象224而非不同的信号量对象216、218、220、222来表示的信号量216、218、220、222的信号量功能。
在现有技术实施例中,当第一进程202、204、206想要访问资源208、210、212、214时,第一进程202、204、206通过系统总线106,将一个读命令发送到所期望的资源208、210、212、214所对应的信号量216、218、220、222,藉以检查资源208、210、212、214的状态。如果所期望的资源208、210、212、214可用,则第一进程202、204、206将一个写命令发送到相应的信号量216、218、220、222,以将信号量216、218、220、222的状态从“未锁定”改变为“锁定”。
在本发明的实施例中描述了下述系统,其中信号量与进程而非资源相关联。当一个信号量被锁定时,就指示出为与该信号量对应的进程而指定的资源的不可用性。当信号量未被锁定时,就指示出其所对应的进程当前未使用任何资源。
信号量可以被与其所对应的进程相关联的一个或多个事件的发生所改变。信号量系统检测这些事件的发生,并控制信号量的状态。在一个实施例中,信号量系统是自足的(self-contained),因为第一信号量系统通过与第二信号量进行通信而代表第一进程进行仲裁,所述第二信号量代表第二进程进行仲裁。在另一实施例中,多个信号量系统对其各自的进程进行仲裁,但依赖于一个用于冲突仲裁处理的全局仲裁器。这些实施例将在下面作进一步描述。
自足信号量在本发明的一个实施例中,如图3的系统300所示,CPU 102包括多个进程302、304、306,而存储器104包括多个资源308、310、312、314和信号量系统316、318、320。在系统300中,每个进程302、304、306都具有一个对应的信号量系统316、318、320,用于管理对资源308、310、312、314的共享访问。或者,所有进程可以共享单个信号量系统324。
在以下描述中,叙述了进程302、304,信号量系统316、318和资源308,以说明两个进程及其相应的信号量系统对于给定的资源308的仲裁过程。然而,本领域普通技术人员将会理解,这些描述适用于进程306、信号量系统320和资源310、312、314,以及可被定义但未在此图示或讨论的其它任何进程、信号量系统和资源。
包括局部优先级模块的信号量图4示出了进程302、304,其具有相应的信号量系统316、318。信号量系统316、318中的每一个都具有用于指示资源的可用性或不可用性的信号量400,还具有局部仲裁器402,局部仲裁器402对其对应的进程302、304的事件进行监视,以确定信号量400的状态,藉以代表其对应的进程302、304,为对给定资源308的访问而进行仲裁。
在一个实施例中,信号量系统316、318还可以另外包括局部优先级模块404,局部优先级模块404具有用于其对应的进程302、304的固定优先级。给进程302、304中的每一个都分配了一个固定优先级,使得第一进程具有比第二进程更高或更低的优先级。如果进程302、304中多于一个进程请求同一资源308,则局部仲裁器402将资源308给予进程302、304中具有较高优先级的那一个,藉以解决冲突。例如,如果进程P1具有的优先级为1而进程P2具有的优先级为2,其中1是高于2的优先级,则如果进程P1和P2同时请求一个给定资源R,则局部仲裁器402将会把资源R给予进程P1,因为P1具有比P2更高的优先级。
图5示出了上述实施例的方法。该方法开始于方框500,然后继续到方框502,在此确定进程P1和进程P2间是否有针对资源R的冲突(即,P1的请求ID是否等于P2的请求ID?)。如果存在冲突,则在方框504,确定P1的局部优先级是否高于P2的局部优先级。如果P1的局部优先级高于P2的局部优先级,则在方框508授权P1访问。否则,在方框512拒绝P1的访问。
如果不存在冲突,则在方框506确定资源R是否被P2锁定(即,如果P1的请求ID不等于P2的请求ID,则P1的请求ID是否等于P2的当前锁定ID?),并在方框510判断P2是否已释放其对R的锁定。如果R被P2锁定,并且P2已经释放了其对R的锁定,则在方框508授权P1访问资源R。如果R被锁定并且P2还未释放其对R的锁定,则在方框512拒绝P1对R的访问。如果不存在冲突,并且资源R未被P2锁定,则在方框508授权P1访问资源R。所述方法在方框514处结束。
包括局部仲裁器以及定时器元件的信号量在另一实施例中,如图6所示,信号量系统316、318可包括局部仲裁器402,以及定时器元件600。信号量系统316、318中的每一个都可具有如上所述的局部优先级模块404,以及定时器元件600,定时器元件600记录其对应的进程302、304在不锁定其信号量的情况下已经为给定资源308而等候的时间。
在一个实施例中,定时器600是完全基于时间的,其中定时器600对从给出锁定请求之后所经过的时钟周期数进行计数。在另一实施例中,定时器600是一个计数器,其确定哪些其它进程已被授权访问其对应的进程正在请求的共享资源。在后一实施例中,每次另一进程被授权访问时就递增定时器600,而当其自身的进程被授权访问时就将定时器600复位(例如复位到0)。
在此实施例中,如果第一进程已经等候了比第二进程更长的时间,则局部仲裁器402授权第一进程进行访问。例如,如果具有优先级1的进程P1已经等候了比具有优先级2的进程P2更长的时间,则局部仲裁器授权进程P1访问。如果进程P2已经等候了比进程P1更长的时间,则局部仲裁器授权进程P2访问。如果两个进程已等候的时间量相等,则局部仲裁器确定哪个进程具有较高的优先级,并授权具有较高优先级的进程进行访问。在此情形下,被授权的是进程P1。
在图7的流程图中示出了说明了此实施例的方法。用于进程P1的信号量系统的方法开始于方框700并继续到方框702,在此确定进程P1和进程P2间是否有针对资源R的冲突。如果存在冲突,则在方框704,确定P1和P2是否已等候了相等的时间量。如果不存在冲突,则在方框706,确定所述资源是否被进程P2锁定。
如果存在冲突,并且P1和P2已经等候了相等的时间量,则在方框712确定P1的局部优先级是否高于P2的局部优先级。如果P1的局部优先级高于P2的局部优先级,则在方框714授权P1访问。否则,在方框716拒绝P1的访问。
如果存在冲突,并且P1和P2并未等候相等的时间量,则在方框708确定P1为资源R等候的时间是否比P2长。如果P1为资源R等候的时间比P2长,则在方框714授权P1访问资源R。否则,在方框716拒绝P1访问资源R。
如果不存在冲突,则在方框706确定资源R是否被P2锁定,并在方框710判断P2是否已释放其对R的锁定。如果R被P2锁定,并且P2已经释放了其对R的锁定,则在方框714授权P1访问资源R。如果R被锁定并且P2还未释放其对R的锁定,则在方框716拒绝P1对R的访问。如果不存在冲突,并且资源R不被P2锁定,则在方框714授权P1访问资源R。所述方法在方框718处结束。
具有全局仲裁器的系统在本发明另一实施例中,如图8所示,系统800包括具有多个进程302、304、306的CPU,还包括一个存储器,该存储器包括多个资源308、310、312、314和多个信号量系统316、318、320。在系统800中,每个进程302、304、306都具有一个对应的信号量系统316、318、320,用于管理对资源308、310、312、314的共享访问。或者,所有进程可以共享单个信号量系统324。另外,系统800还包括用于解决冲突的全局仲裁器802。
在以下描述中,叙述了进程302、304,信号量系统316、318和资源308,以说明两个进程及其相应的信号量系统对于给定的资源308的仲裁过程。然而,本领域普通技术人员将会理解,这些描述适用于进程306、信号量系统320和资源310、312、314,以及可被定义但未在此图示或讨论的其它任何进程、信号量系统和资源。
如图9所示,全局仲裁器802可包括队列900(以下称为“全局优先级队列”),队列900具有条目902、904、906、908、910、912、914、916,其中每个条目对应于一个优先级,并且每个条目值指示唯一的一个进程。(或者,每个条目可以对应于一个唯一进程,而条目值指示该进程的优先级)。起初,每个进程被分配到队列中的具有一个优先级值的一个条目(其中条目值是进程标识符)。当每个进程被授权访问资源时,其就被移动到队列的底部,使得其具有最低的优先级。
全局仲裁器802可包括一个用于所有资源的队列,使得被授权先于第二进程P2而进行访问的第一进程P1随后对所有资源都具有低于P2的优先级,或者全局仲裁器802可包括多个队列,每个队列对应于一个资源,使得被授权先于第二进程P2而进行访问的第一进程P1随后对给定的资源具有低于P2的优先级。
为了说明性目的,讨论了两种实现中的后者。然而本领域普通技术人员应当理解,两种实现都是有效的。
仅包括局部仲裁器的信号量在一个实施例中,如图10所示,信号量系统316、318可包括局部仲裁器402,并且进程302、304中的每一个都在全局仲裁器802的全局优先级队列900中被分配了一个初始优先级。当进程被授权访问资源308时,排序改变。
第一进程的局部仲裁器402与第二进程的局部仲裁器402进行通信,以确定是否存在冲突。如果存在冲突,则全局仲裁器802将资源给予被其全局优先级队列900确定为具有较高全局优先级的那个进程,藉以解决冲突。例如,如果进程P1在全局优先级队列中具有的优先级比P2高,则如果进程P1和P2同时请求给定的资源R,则全局仲裁器授权P1访问资源R。
在图11中示出了一个例子,其中5个进程P1、P2、P3、P4和P5在某一时刻竞争一个给定资源R1。假定全局优先级队列被初始化成使得P1具有最高优先级,而P5最初具有最低优先级(步骤1)。在步骤2,P1和P2同时竞争R1。由于P1具有比P2更高的优先级,因此P1被授权访问,然后在步骤3中移动到队列底部。
在步骤4,P4和P5竞争R1。由于P4具有比P5更高的优先级,因此P4被授权访问并在步骤5中移动到队列底部。在步骤6,P1和P4竞争R1。由于P1具有比P4更高的优先级,因此P1被授权访问并在步骤7中移动到队列底部。在步骤8,P2和P1竞争R1。由于P2具有比P1更高的优先级,因此P2被授权访问并移动到队列底部。按此方式,显然实现了公平性,因为未被授权访问R1的进程比已被授权访问的进程具有更高的优先级。
图12的流程图中示出了上面所讨论的方法。用于进程P1的信号量系统的方法开始于方框1200并继续到方框1202,在此确定进程P1和进程P2间是否有针对资源R的冲突。如果存在冲突,则在方框1204,确定P1的全局优先级是否高于P2的全局优先级。如果P1的全局优先级高于P2的全局优先级,则在方框1208授权P1访问。否则,在方框1212拒绝P1的访问。
如果不存在冲突,则在方框1206确定资源R是否被P2锁定,并在方框1210判断P2是否已释放其对R的锁定。如果R被P2锁定,并且P2已经释放了其对R的锁定,则在方框1208授权P1访问资源R。如果R被锁定并且P2还未释放其对R的锁定,则在方框1212拒绝P1对R的访问。如果不存在冲突,并且资源R不被P2锁定,则在方框1208授权P1访问资源R。所述方法在方框1214处结束。
包括局部仲裁器和定时器元件的信号量在另一实施例中,如图13所示,信号量系统316、318可包括局部仲裁器402,以及定时器元件600,定时器元件600记录其对应的进程在不锁定的情况下已经为给定的资源而等候的时间,同上。另外,还在全局仲裁器802的全局优先级队列900中对每个进程给予了一个条目。
当多个进程请求同一资源时,如果所述多个进程中的第一进程P1具有比所述多个进程中的第二进程P2更高的优先级,则P1的局部仲裁器402如下解决P1与P2之间的冲突·局部仲裁器402将会授权被定时器元件600确定为等候了更长时间的那个进程进行访问;·如果两个进程已经等候的时间量相同,则仲裁处理被转移给全局仲裁器802来解决冲突。
一旦仲裁处理已被转移给全局仲裁器802,则全局仲裁器802查看全局优先级队列900,以确定两个进程302、304中哪个具有较高的优先级。然后,全局仲裁器802授权进程302、304中具有较高优先级的进程进行访问。
图14示出了此过程。用于进程P1的信号量系统的方法开始于方框1400并继续到方框1402,在此确定进程P1和进程P2间是否有针对资源R的冲突。如果存在冲突,则在方框1404,确定P1和P2是否已等候了相等的时间量。如果不存在冲突,则在方框1406,确定所述资源是否被进程P2锁定。
如果存在冲突,并且P1和P2已经等候了相等的时间量,则在方框1412确定P1的全局优先级是否高于P2的全局优先级。如果P1的全局优先级高于P2的全局优先级,则在方框1414授权P1访问。否则,在方框1416拒绝P1的访问。
如果存在冲突,并且P1和P2并未等候相等的时间量,则在方框1408确定P1为资源R等候的时间是否比P2长。如果P1为资源R等候的时间比P2长,则在方框1414授权P1访问资源R。否则,在方框1416拒绝P1访问资源R。
如果不存在冲突,则在方框1406确定资源R是否被P2锁定,并在方框1410判断P2是否已释放其对R的锁定。如果R被P2锁定,并且P2已经释放了其对R的锁定,则在方框1414授权P1访问资源R。如果R被锁定并且P2还未释放其对R的锁定,则在方框1416拒绝P1对R的访问。如果不存在冲突,并且资源R不被P2锁定,则在方框1414授权P1访问资源R。所述方法在方框1418处结束。
图15是用于实现在本发明的实施例中所描述的局部仲裁器402的基本电路图。元件1500和1502示出了用于确定是否存在冲突的电路。元件1500确定第一进程P1和第二进程P2是否正在请求同一资源R,而元件1502确定P1是否正在请求已被P2锁定的资源。元件1504接受来自全局优先级模块的输入以确定哪个进程具有较高优先级,而元件1506接受来自定时器元件的输入以确定哪个进程已经等候了更长的时间。
例如,对于与进程P1相对应的局部仲裁器402,在以下情况下将会授权访问资源R·P1未与P2请求同一资源,并且P1未请求已被P2锁定的资源。这由图15的电路表示如下如果元件1532为“真”(TRUE),则授权P1访问R。如果元件1532为“假”(FALSE),则拒绝P1访问R。如果元件1508和1530都为“真”,则元件1532为“真”。
如果P1和P2未在请求同一资源,则元件1508生成“真”信号。从而,如果P1的请求标识符和P2的请求标识符不相等,则在元件1508处生成“真”信号。
如果元件1526和1528都生成“假”信号,则元件1530生成“真”信号。如果元件1512或1514生成“假”信号,则元件1528生成“假”信号。从而,例如,如果P1未请求P2已锁定的资源,则元件1512生成“假”信号。同样,如果元件1510或1524生成“假”信号,则元件1526生成“假”信号。例如,如果P1未与P2请求同一资源,则元件1510生成“假”信号——换言之,其生成与元件1508相反的信号。
·P1未与P2请求同一资源,P1请求P2已锁定的资源,但P2释放了该锁定。这由所述电路表示如下如果元件1532为“真”,则授权P1访问R。如果元件1532为“假”,则拒绝P1访问R。如果元件1508和1530都为“真”,则元件1532为“真”。
如果P1和P2未在请求同一资源,则元件1508生成“真”信号。从而,如果P1的请求标识符和P2的请求标识符不相等,则在元件1508处生成“真”信号。
如果元件1512或1514生成“假”信号,则元件1528生成“假”信号。从而,例如,如果元件1512反而(因为P1请求了P2已锁定的资源而)生成“真”信号,则元件1514必须生成“假”信号。如果P2释放了其当前锁定的标识符,就出现这种情况。同样,如果元件1510或1524生成“假”信号,则元件1526生成“假”信号。例如,如果P1未与p2请求同一资源,则元件1510生成“假”信号——换言之,其生成与元件1508相反的信号。
·P1与P2请求同一资源,P1未请求P2已锁定的资源(或者如果P1请求了P2已锁定的资源,则P2已释放了该锁定),并且P1已经为所述资源等候了比P2更长的时间。这由图15的电路表示如下如果元件1530为“真”,则授权P1访问R。如果元件1530为“假”,则拒绝P1访问R。如果元件1526和1528都为“假”,则元件1530为“真”。
如果元件1512或1514生成“假”信号,则元件1528生成“假”信号。从而,例如,如果P1未请求P2已锁定的资源,则元件1512生成“假”信号。而且,如果元件1512反而(因为P1请求P2已锁定的资源而)生成“真”信号,则元件1514必须生成“假”信号。如果P2释放了其当前锁定的标识符,就出现这种情况。
由于如果P1与P2请求了同一资源,则元件1510生成“真”信号,因此在以下条件下,元件1526生成“假”信号。P1和P2并未等候相等的时间量,使得元件1518生成“假”信号,并因此使元件1520生成“假”信号。由于P2并未等候比P1更长的时间,因此元件1522生成“假”信号。因此,元件1524生成“假”信号,并且元件1526生成“假”信号。结果,元件1530生成“真”信号,并且授权P1访问R。
·P1与P2请求同一资源,P1未请求P2已锁定的资源(或者如果P1请求了P2已锁定的资源,则P2已释放了该锁定),P1已经为所述资源等候了和P2等长的时间,并且P1的全局优先级高于P2的全局优先级。这由图15的电路表示如下如果元件1530为“真”,则授权P1访问R。如果元件1530为“假”,则拒绝P1访问R。如果元件1526和1528都为“假”,则元件1530为“真”。
如果元件1512或1514生成“假”信号,则元件1528生成“假”信号。从而,例如,如果P1未请求P2已锁定的资源,则元件1512生成“假”信号。而且,如果元件1512反而(因为P1请求P2已锁定的资源而)生成“真”信号,则元件1514必须生成“假”信号。如果P2释放了其当前锁定的标识符,就出现这种情况。
由于如果P1与P2请求了同一资源,则元件1510生成“真”信号,因此仅当元件1524生成“假”信号时,元件1526才生成“假”信号。P1和P2已经等候了相同的时间量,这使得元件1518生成“真”信号。由于元件1518为“真”,因此元件1522必须为“假”。P2不具有比P1更高的优先级,因此元件1516为“假”,使得元件1520为“假”。这使得元件1524为“假”,因此元件1526为“假”。结果,元件1530生成“真”信号,并且授权P1访问R。
从而,描述了一种用于信号量系统的发明,所述信号量系统基于进程事件而非资源事件。在一个实施例中,所述进程事件是简单的固定优先级。在另一实施例中,所述进程事件是基于公平性的动态优先级。
在前面的说明书中,已经参照本发明的具体实施例对其进行了描述。然而很显然,可以对其进行多种修改和变化,而不脱离本发明更广的精神和范围。因此,应将本说明书和附图视作为说明性而非限制性的。
本专利文献公开内容的一部分包含受到版权保护的材料。版权所有人不反对任何人对出现在专利商标局的专利文件或记录中的该专利文献或该专利公开内容的传真复制,但在其它情况下,无论如何都保留所有版权。以下通告适用于以上描述及其附图中的软件和数据Copyright2001,Intel Corporation,All Rights Reserved.
权利要求
1.一种方法,包括为具有第一局部优先级的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程具有第二局部优先级;以及如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较高局部优先级的一方进行访问。
2.如权利要求1所述的方法,其中,对于所述第一进程和所述第二进程中的每一个,所述局部优先级都是固定的。
3.如权利要求1所述的方法,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
4.一种方法,包括为具有第一局部优先级和第一等候时间的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程具有第二局部优先级和第二等候时间;如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较长等候时间的一方进行访问;以及如果所述第一等候时间等于所述第二等候时间,则允许所述第一进程和所述第二进程中具有较高局部优先级的一方进行访问。
5.如权利要求4所述的方法,其中,对于所述第一进程和所述第二进程中的每一个,所述局部优先级都是固定的。
6.如权利要求4所述的方法,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
7.一种方法,包括为在全局仲裁器的全局优先级队列上具有第一全局优先级的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程在所述全局仲裁器的所述全局优先级队列上具有第二全局优先级;以及如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较高全局优先级的一方进行访问。
8.如权利要求7所述的方法,其中,所述全局优先级队列是所述全局仲裁器中的多个全局优先级队列中的一个,并且每个全局优先级队列对应于一个给定的共享资源。
9.如权利要求7所述的方法,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
10.一种方法,包括为在全局仲裁器的全局优先级队列上具有第一全局优先级、并具有第一等候时间的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程在所述全局仲裁器的所述全局优先级队列上具有第二全局优先级,并具有第二等候时间;如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较长等候时间的一方进行访问;以及如果所述第一等候时间等于所述第二等候时间,则允许所述第一进程和所述第二进程中具有较高全局优先级的一方进行访问。
11.如权利要求10所述的方法,其中,所述全局优先级队列是所述所述全局仲裁器中的多个全局优先级队列中的一个,并且每个全局优先级队列对应于一个给定的共享资源。
12.如权利要求10所述的方法,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
13.一种装置,包括局部仲裁器,用于代表对应进程而对多个资源中的一个资源进行仲裁;以及信号量,用于指示所述对应进程的状态。
14.如权利要求13所述的装置,还包括局部优先级模块,用于指示所述对应进程的局部优先级。
15.如权利要求13所述的装置,还包括定时器元件,用于确定所述对应进程的等候时间。
16.一种系统,包括一个或多个共享资源;以及一个或多个进程,每个进程对应于一个信号量系统,并且每个信号量系统具有一个局部仲裁器,用于为对所述共享资源中给定的一个资源的访问而进行仲裁。
17.如权利要求16所述的系统,其中,一个给定的信号量系统还包括局部仲裁器模块,该局部仲裁器模块具有与对应进程相对应的局部优先级,并且所述局部仲裁器通过以下操作来为对所述共享资源中给定的一个资源的访问而进行仲裁如果所述局部仲裁器的对应进程比一个发生冲突的进程具有更高的局部优先级,则允许所述对应进程进行访问。
18.如权利要求17所述的系统,其中,所述局部优先级是固定的。
19.如权利要求17所述的系统,其中,所述给定的信号量系统还包括定时器元件,并且所述局部仲裁器通过以下操作来为对所述共享资源中给定的一个资源的访问而进行仲裁如果所述对应进程为所述给定资源而等候的时间比所述发生冲突的进程更长,则允许所述对应进程进行访问;并且如果所述对应进程为所述给定资源而等候的时间量和所述发生冲突的进程相等,那么,如果所述对应进程比所述发生冲突的进程具有更高的局部优先级,则允许所述对应进程进行访问。
20.如权利要求16所述的系统,其中,所述局部仲裁器通过以下操作来为对所述共享资源中给定的一个资源的访问而进行仲裁如果不存在发生冲突的进程,则允许所述对应进程进行访问。
21.如权利要求20所述的系统,所述系统还包括具有全局优先级队列的全局仲裁器,所述全局仲裁器用于通过将已被授权访问给定资源的进程移动到所述全局优先级队列中具有最低优先级的位置,来修改进程优先级;以及通过允许第一进程和第二进程中具有较高全局优先级的一方进行访问,来对所述第一进程和第二进程之间的冲突进行仲裁。
22.如权利要求16所述的系统,其中,所述信号量系统还包括定时器元件,并且所述局部仲裁器通过以下操作来为对所述共享资源中给定的一个资源的访问而进行仲裁如果所述对应进程为所述给定资源而等候的时间比发生冲突的进程更长,则允许所述对应进程进行访问;并且如果所述对应进程已经为所述给定资源而等候的时间量和所述发生冲突的进程相等,则将所述仲裁处理转移给全局仲裁器。
23.如权利要求22所述的系统,所述系统还包括具有全局优先级队列的所述全局仲裁器,所述全局仲裁器用于通过将已被授权访问给定资源的进程移动到所述全局优先级队列中具有最低优先级的位置,来修改进程优先级;以及通过允许第一进程和第二进程中具有较高优先级的一方进行访问,来对所述第一进程和第二进程之间的冲突进行仲裁。
24.一种机器可读介质,其上存储有表示指令序列的数据,所述指令序列当被处理器执行时,导致所述处理器执行以下操作为具有第一局部优先级的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程具有第二局部优先级;以及如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较高局部优先级的一方进行访问。
25.如权利要求24所述的机器可读介质,其中,对于所述第一进程和所述第二进程中的每一个,所述局部优先级都是固定的。
26.如权利要求24所述的机器可读介质,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则还包括当被处理器执行时导致所述处理器执行以下操作的指令序列确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
27.一种装置,包括至少一个处理器;以及机器可读介质,该机器可读介质上编码有指令,所述指令当被所述处理器执行时,能够指示所述处理器执行以下操作为具有第一局部优先级的第一进程而请求对一个共享资源的访问;确定第二进程是否正在同时请求对所述共享资源的访问,所述第二进程具有第二局部优先级;以及如果所述第二进程正在同时请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较高局部优先级的一方进行访问。
28.如权利要求27所述的装置,其中,对于所述第一进程和所述第二进程中的每一个,所述局部优先级都是固定的。
29.如权利要求27所述的装置,还包括如果所述第二进程并未同时请求对所述共享资源的访问,则还包括被编码的指令,所述指令当被处理器执行时能够使该处理器执行以下操作确定所述第二进程当前是否具有对所述共享资源的锁定;如果所述第二进程当前具有对所述共享资源的锁定,则拒绝所述第一进程访问所述共享资源;并且如果所述第二进程不具有对所述共享资源的锁定,则允许所述第一进程访问所述共享资源。
30.一种装置,包括用于代表对应进程而对多个资源中的一个资源进行仲裁的装置;以及用于指示所述对应进程的状态的装置。
31.如权利要求30所述的装置,还包括用于指示所述对应进程的局部优先级的装置。
32.如权利要求30所述的装置,还包括用于确定所述对应进程的等候时间的装置。
全文摘要
本发明描述了一种用于基于进程事件的信号量系统的方法和装置。所述系统可以具有多个进程;一个或多个共享资源;以及对应于每个进程的信号量系统。当多个进程同时请求访问一个给定的共享资源时,每个信号量系统都代表其对应进程而进行仲裁。在一个实施例中,信号量系统是自足的,并可基于其它进程的事件来为其对应进程进行仲裁。在另一实施例中,信号量系统与全局仲裁器进行交互以解决冲突。
文档编号G06F9/46GK1703676SQ03802026
公开日2005年11月30日 申请日期2003年1月9日 优先权日2002年1月12日
发明者米卡埃尔·莫腾森, 雷内·拉森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1