[go: up one dir, main page]

CN100449489C - 允许对共享资源的访问的方法和装置 - Google Patents

允许对共享资源的访问的方法和装置 Download PDF

Info

Publication number
CN100449489C
CN100449489C CNB038020262A CN03802026A CN100449489C CN 100449489 C CN100449489 C CN 100449489C CN B038020262 A CNB038020262 A CN B038020262A CN 03802026 A CN03802026 A CN 03802026A CN 100449489 C CN100449489 C CN 100449489C
Authority
CN
China
Prior art keywords
priority
resource
global
semaphore
visit
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
Application number
CNB038020262A
Other languages
English (en)
Other versions
CN1703676A (zh
Inventor
米卡埃尔·莫腾森
雷内·拉森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1703676A publication Critical patent/CN1703676A/zh
Application granted granted Critical
Publication of CN100449489C publication Critical patent/CN100449489C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program 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)
  • Small-Scale Networks (AREA)
  • Bus Control (AREA)

Abstract

本发明描述了一种用于基于进程事件的信号量系统的方法和装置。所述系统可以具有多个进程;一个或多个共享资源;以及对应于每个进程的信号量系统。当多个进程同时请求访问一个给定的共享资源时,每个信号量系统都代表其对应进程而进行仲裁。在一个实施例中,信号量系统是自足的,并可基于其它进程的事件来为其对应进程进行仲裁。在另一实施例中,信号量系统与全局仲裁器进行交互以解决冲突。

Description

允许对共享资源的访问的方法和装置
技术领域
本发明一般地涉及并行进程,更具体而言,本发明涉及用于管理对共享系统资源进行访问的信号量(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
Figure C0380202600191
2001,Intel Corporation,All Rights Reserved.

Claims (28)

1.一种允许对共享资源的访问的方法,包括:
为具有第一信号量系统的第一进程请求对所述共享资源的访问,所述第一信号量系统具有第一优先级,其中所述第一信号量系统对应于所述第一进程而不对应于任意一个特定资源;
确定具有第二信号量系统的第二进程是否也正在请求对所述共享资源的访问,所述第二信号量系统具有第二优先级,其中所述第二信号量系统对应于所述第二进程而不对应于任意一个特定资源;以及
如果所述第二进程也正在请求对所述共享资源的访问,则允许所述第一进程和所述第二进程中具有较高优先级的一方进行访问,否则
在确定所述共享资源被锁定之后,拒绝所述第一进程访问所述共享资源,或者在确定所述共享资源未被锁定之后,允许所述第一进程访问所述共享资源。
2.如权利要求1所述的方法,其中所述第一优先级和所述第二优先级分别为处于所述第一和第二信号量系统本地的局部优先级。
3.如权利要求2所述的方法,其中对于所述第一进程和所述第二进程中的每一个,所述第一局部优先级和所述第二局部优先级都是固定的。
4.如权利要求1到3中的任一个所述的方法,其中所述第一进程具有第一等候时间并且所述第二进程具有第二等候时间,所述方法还包括至少基于对所述第一等候时间和所述第二等候时间的比较来确定允许所述第一进程进行访问还是允许所述第二进程进行访问。
5.如权利要求4所述的方法,其中:
在确定所述第一等候时间等于所述第二等候时间之后,执行所述允许所述第一进程和所述第二进程中具有较高优先级的一方进行访问的步骤。
6.如权利要求5所述的方法,其中所述优先级为局部优先级,并且其中对于所述第一进程和所述第二进程中的每一个,所述局部优先级都是固定的。
7.如权利要求1所述的方法,其中所述第一优先级包括全局仲裁器的全局优先级队列中的第一全局优先级,并且其中所述第二优先级包括所述全局仲裁器的全局优先级队列中的第二全局优先级。
8.如权利要求7所述的方法,其中所述全局优先级队列是所述全局仲裁器中的多个全局优先级队列中的一个,并且每个全局优先级队列对应于一个给定的共享资源。
9.如权利要求1所述的方法,其中所述第一优先级包括全局仲裁器的全局优先级队列中的第一全局优先级且所述第一进程还具有第一等候时间,并且其中所述第二优先级包括所述全局仲裁器的全局优先级队列中的第二全局优先级且所述第二进程还具有第二等候时间,并且其中所述方法还包括在确定所述第一等候时间等于所述第二等候时间之后,至少基于所述第一全局优先级和所述第二全局优先级,来确定允许所述第一进程进行访问还是允许所述第二进程进行访问。
10.如权利要求1所述的方法,其中存在比信号量系统更多的共享资源。
11.一种用于允许对共享资源的访问的装置,包括:
存储器,用于存储多个共享资源;
一个或多个电路,用于执行第一进程和第二进程;
与所述第一进程相对应的第一信号量系统,其中所述第一信号量系统对应于所述第一进程而不对应于所述多个共享资源中的任意一个特定资源;
与所述第二进程相对应的第二信号量系统,其中所述第二信号量系统对应于所述第二进程而不对应于所述多个共享资源中的任意一个特定资源;以及
一个或多个仲裁器,用于至少基于所述第一信号量系统和所述第二信号量系统中的信息为所述第一进程和所述第二进程对所述多个共享资源的访问进行仲裁。
12.如权利要求11所述的装置,其中所述第一信号量系统包括指示所述第一进程的状态的第一信号量,并且其中所述第二信号量系统包括指示所述第二进程的状态的第二信号量。
13.如权利要求12所述的装置,其中如果所述第二信号量指示出资源正在被所述第二进程访问,则所述一个或多个仲裁器拒绝所述第一进程访问所述资源。
14.如权利要求11到13中的任一个所述的装置,其中所述一个或多个仲裁器包括:
第一局部仲裁器,其代表所述第一进程进行仲裁;以及
第二局部仲裁器,其代表所述第二进程进行仲裁。
15.如权利要求14所述的装置,还包括:
所述第一信号量系统的第一局部优先级模块,其具有用于所述第一进程的第一优先级;以及
所述第二信号量系统的第二局部优先级模块,其具有用于所述第二进程的第二优先级。
16.如权利要求15所述的装置,其中所述一个或多个仲裁器至少基于所述第一信号量系统的第一优先级和所述第二信号量系统的第二优先级来允许进程进行访问。
17.如权利要求14所述的装置,还包括:
所述第一信号量系统的第一定时器,其保存所述第一进程已为资源而等候的第一等候时间;以及
所述第二信号量系统的第二定时器,其保存所述第二进程已为所述资源而等候的第二等候时间。
18.如权利要求17所述的装置,其中所述一个或多个仲裁器至少基于所述第一信号量系统的第一等候时间和所述第二信号量系统的第二等候时间来允许进程进行访问。
19.如权利要求11到13中的任一个所述的装置,其中所述一个或多个仲裁器包括全局仲裁器。
20.如权利要求19所述的装置,其中所述全局仲裁器包括全局优先级队列,所述全局优先级队列包括用于所述第一进程的第一优先级和用于所述第二进程的第二优先级。
21.如权利要求19所述的装置,其中所述一个或多个仲裁器还包括:
第一局部仲裁器,其代表所述第一进程进行仲裁;以及
第二局部仲裁器,其代表所述第二进程进行仲裁。
22.如权利要求21所述的装置,还包括:
所述第一信号量系统的第一定时器,其保存所述第一进程已为资源而等候的第一等候时间;以及
所述第二信号量系统的第二定时器,其保存所述第二进程已为所述资源而等候的第二等候时间。
23.如权利要求11所述的装置,其中存在比信号量系统更多的共享资源。
24.一种管理对资源的访问的方法,包括:
为第一进程请求对所述资源的访问,所述第一进程具有对应的第一信号量,其中所述第一信号量不对应于特定资源;
确定所述资源是否正在被第二进程访问,所述第二进程具有对应的第二信号量,其中所述第二信号量不对应于特定资源;以及
在确定对所述资源的锁定指示出所述资源正在被所述第二进程访问,拒绝所述第一进程访问所述资源,其中所述锁定是在所述第二信号量处指示的。
25.如权利要求24所述的方法,还包括,至少基于对所述第一进程的第一优先级和所述第二进程的第二优先级的比较来允许进程进行访问。
26.如权利要求25所述的方法,其中所述第一优先级和所述第二优先级为局部优先级。
27.如权利要求25所述的方法,其中所述第一优先级和所述第二优先级为全局优先级。
28.如权利要求25到27中的任一个所述的方法,还包括至少基于对所述第一进程的第一等候时间和所述第二进程的第二等候时间的比较来允许所述进程进行访问。
CNB038020262A 2002-01-12 2003-01-09 允许对共享资源的访问的方法和装置 Expired - Fee Related CN100449489C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/045,414 US7174552B2 (en) 2002-01-12 2002-01-12 Method of accessing a resource by a process based on a semaphore of another process
US10/045,414 2002-01-12

Publications (2)

Publication Number Publication Date
CN1703676A CN1703676A (zh) 2005-11-30
CN100449489C true CN100449489C (zh) 2009-01-07

Family

ID=21937739

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038020262A Expired - Fee Related CN100449489C (zh) 2002-01-12 2003-01-09 允许对共享资源的访问的方法和装置

Country Status (6)

Country Link
US (1) US7174552B2 (zh)
EP (1) EP1502185A2 (zh)
CN (1) CN100449489C (zh)
AU (1) AU2003202940A1 (zh)
TW (1) TWI246661B (zh)
WO (1) WO2003060714A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073005B1 (en) * 2002-01-17 2006-07-04 Juniper Networks, Inc. Multiple concurrent dequeue arbiters
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7644194B2 (en) * 2003-07-14 2010-01-05 Broadcom Corporation Method and system for addressing a plurality of Ethernet controllers integrated into a single chip which utilizes a single bus interface
JP2007179190A (ja) * 2005-12-27 2007-07-12 Mitsubishi Electric Corp セマフォ管理方法、およびセマフォ管理プログラム
US8141087B2 (en) * 2006-03-31 2012-03-20 International Business Machines Corporation Resolving computing resource deadlocks based on priority and dependent processes
US8726279B2 (en) 2006-05-06 2014-05-13 Nvidia Corporation System for multi threaded multi processor sharing of asynchronous hardware units
US7506090B2 (en) * 2006-06-14 2009-03-17 Honeywell International Inc. System and method for user-configurable resource arbitration in a process control system
US8429654B2 (en) * 2006-07-06 2013-04-23 Honeywell International Inc. Apparatus and method for guaranteed batch event delivery in a process control system
US20130276109A1 (en) * 2006-07-11 2013-10-17 Mcafee, Inc. System, method and computer program product for detecting activity in association with program resources that has at least a potential of an unwanted effect on the program
EP1988461B1 (en) * 2007-04-30 2016-04-20 Accenture Global Services Limited Alternating processing method, system, and computer program product
CN101546275B (zh) * 2008-03-26 2012-08-22 中国科学院微电子研究所 一种获取多处理器硬件信号量的方法
US20090288074A1 (en) * 2008-05-14 2009-11-19 Microsoft Corporation Resource conflict profiling
TWI512478B (zh) * 2011-01-18 2015-12-11 Asmedia Technology Inc 匯流排主控器與相關方法
US20130055284A1 (en) * 2011-08-29 2013-02-28 Cisco Technology, Inc. Managing shared computer resources
FR2986346A1 (fr) * 2012-01-27 2013-08-02 Tymis Procede d'utilisation d'une memoire partagee
US8718807B2 (en) 2012-03-23 2014-05-06 Honeywell International Inc. System and method for robust real-time control of regular automated production using master recipe
CN102799415A (zh) * 2012-06-13 2012-11-28 天津大学 一种结合信号量的文件读写并行处理方法
TWI510926B (zh) * 2012-07-04 2015-12-01 Acer Inc 支援雙主控裝置存取介面裝置之系統及其電源管理方法
US9081630B2 (en) * 2012-12-12 2015-07-14 Wind River Systems, Inc. Hardware-implemented semaphore for resource access based on presence of a memory buffer in a memory pool
CN103902356B (zh) * 2012-12-26 2018-07-31 上海斐讯数据通信技术有限公司 一种信号量死锁的检测方法
CN103218327B (zh) * 2013-04-28 2016-08-10 惠州市德赛西威汽车电子股份有限公司 嵌入式系统多进程交互共用spi通讯总线的方法
CN104378400B (zh) * 2013-08-15 2018-10-02 腾讯科技(深圳)有限公司 数据分散并发方法和装置
CN106155774A (zh) * 2015-04-23 2016-11-23 中兴通讯股份有限公司 事件处理方法、装置及系统
CN110096355B (zh) * 2018-01-29 2024-04-09 阿里巴巴集团控股有限公司 一种共享资源分配方法、装置和设备
CN112988368A (zh) * 2019-12-12 2021-06-18 北京比特大陆科技有限公司 进程处理方法及相关产品
CN111352762A (zh) * 2020-03-04 2020-06-30 恒生电子股份有限公司 一种进程访问确定方法和相关装置
KR20220135048A (ko) * 2021-03-29 2022-10-06 삼성전자주식회사 버스를 통해 자원을 공유하기 위한 장치 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0012016A1 (en) * 1978-11-30 1980-06-11 Sperry Corporation Memory access control
US4672536A (en) * 1983-03-29 1987-06-09 International Business Machines Corporation Arbitration method and device for allocating a shared resource in a data processing system
US5506972A (en) * 1987-09-30 1996-04-09 International Business Machines Corporation Computer system having dynamically programmable linear/fairness priority arbitration scheme
US5748969A (en) * 1995-05-15 1998-05-05 Hyundai Electronics Industries Co., Ltd. Arbitration apparatus using least recently used algorithm
US6073132A (en) * 1998-03-27 2000-06-06 Lsi Logic Corporation Priority arbiter with shifting sequential priority scheme

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2471631B1 (fr) * 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US5293491A (en) * 1990-12-28 1994-03-08 International Business Machines Corp. Data processing system and memory controller for lock semaphore operations
US5434970A (en) * 1991-02-14 1995-07-18 Cray Research, Inc. System for distributed multiprocessor communication
DE69230462T2 (de) 1991-11-19 2000-08-03 Sun Microsystems, Inc. Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln
WO1997005550A1 (en) * 1995-07-27 1997-02-13 Intel Corporation Protocol for arbitrating access to a shared memory area using historical state information
US5615167A (en) * 1995-09-08 1997-03-25 Digital Equipment Corporation Method for increasing system bandwidth through an on-chip address lock register
US6170018B1 (en) * 1995-11-27 2001-01-02 Sun Microsystems, Inc. Remote procedure calling using an existing descriptor mechanism
US6263425B1 (en) * 1997-07-08 2001-07-17 National Semiconductor Corporation Circuit that implements semaphores in a multiprocessor environment without reliance on atomic test and set operations of the processor cores
US6134579A (en) * 1997-08-15 2000-10-17 Compaq Computer Corporation Semaphore in system I/O space
WO1999022296A2 (en) * 1997-10-29 1999-05-06 Koninklijke Philips Electronics N.V. Method and system for synchronizing block-organized data transfer
US6237019B1 (en) * 1998-03-18 2001-05-22 International Business Machines Corporation Method and apparatus for performing a semaphore operation
US6131094A (en) * 1998-04-24 2000-10-10 Unisys Corp. Method for performing asynchronous writes to database logs using multiple insertion points
US6389497B1 (en) 1999-01-22 2002-05-14 Analog Devices, Inc. DRAM refresh monitoring and cycle accurate distributed bus arbitration in a multi-processing environment
US6353869B1 (en) * 1999-05-14 2002-03-05 Emc Corporation Adaptive delay of polling frequencies in a distributed system with a queued lock
US6629195B2 (en) * 2001-06-26 2003-09-30 Intel Corporation Implementing semaphores in a content addressable memory
US7143414B2 (en) * 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
US7036125B2 (en) * 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0012016A1 (en) * 1978-11-30 1980-06-11 Sperry Corporation Memory access control
US4672536A (en) * 1983-03-29 1987-06-09 International Business Machines Corporation Arbitration method and device for allocating a shared resource in a data processing system
US5506972A (en) * 1987-09-30 1996-04-09 International Business Machines Corporation Computer system having dynamically programmable linear/fairness priority arbitration scheme
US5748969A (en) * 1995-05-15 1998-05-05 Hyundai Electronics Industries Co., Ltd. Arbitration apparatus using least recently used algorithm
US6073132A (en) * 1998-03-27 2000-06-06 Lsi Logic Corporation Priority arbiter with shifting sequential priority scheme

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Analysis and simulation of six bus arbitration protocols. LAKSHMI NARASIMHAN.Microprocessing and microprogramming,ELSEVIER SCIENCE PUBLISHERS,BV.,AMSTERDAM,NL,Vol.38 No.1. 1993
Analysis and simulation of six bus arbitration protocols. LAKSHMI NARASIMHAN.Microprocessing and microprogramming,ELSEVIER SCIENCE PUBLISHERS,BV.,AMSTERDAM,NL,Vol.38 No.1. 1993 *

Also Published As

Publication number Publication date
AU2003202940A1 (en) 2003-07-30
WO2003060714A3 (en) 2004-10-28
EP1502185A2 (en) 2005-02-02
US7174552B2 (en) 2007-02-06
TW200305105A (en) 2003-10-16
TWI246661B (en) 2006-01-01
US20030135537A1 (en) 2003-07-17
CN1703676A (zh) 2005-11-30
AU2003202940A8 (en) 2003-07-30
WO2003060714A2 (en) 2003-07-24

Similar Documents

Publication Publication Date Title
CN100449489C (zh) 允许对共享资源的访问的方法和装置
US5454108A (en) Distributed lock manager using a passive, state-full control-server
EP0428006B1 (en) Multilevel locking system and method
JP3074636B2 (ja) 並列計算機システム
US5913227A (en) Agent-implemented locking mechanism
US7917908B2 (en) Flow lookahead in an ordered semaphore management subsystem
EP0588415A1 (en) Peer to peer connection authorizer
EP0537899A1 (en) Bus arbitration architecture incorporating deadlock detection and masking
KR101388829B1 (ko) 운영 수단에 대한 병렬 액세스들을 위해 일시적 배타적 잠금들을 사용하기 위한 방법 및 시스템
US6145018A (en) Method for hindering some types of nodes from becoming a bus arbitration controller
KR19990013394A (ko) 컴퓨터 자원 억세스 제어 장치 및 그 방법
US5894562A (en) Method and apparatus for controlling bus arbitration in a data processing system
US5644733A (en) Dual coupled partitionable networks providing arbitration logic for managed access to commonly shared busses
EP1187029B1 (en) Peripheral component interconnect arbiter implementation with dynamic priority scheme
CN114780930A (zh) 权限管理方法、装置、计算机设备和存储介质
US6571306B1 (en) Bus request mechanism for bus master which is parked on a shared bus
US6430641B1 (en) Methods, arbiters, and computer program products that can improve the performance of a pipelined dual bus data processing system
US20040117372A1 (en) System and method for controlling access to system resources
JPH0387958A (ja) バスロツク制御方式
KR20060002822A (ko) 저장 제어 장치 및 그의 동작 방법
US7774557B2 (en) Storage access system and method for image forming device
WO1989006011A1 (en) Managing interlocking
US20020083250A1 (en) Apparatus and method for arbitrating use authority for system bus in a multi-stage connection
JP3036468B2 (ja) 排他制御処理装置及び排他制御処理方法並びに排他制御処理プログラムを記憶した記憶媒体
JPS62232064A (ja) 分散デ−タベ−スシステムのデツドロツク防止方式

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090107

Termination date: 20180109

CF01 Termination of patent right due to non-payment of annual fee