CN1774699A - 共享资源的并发访问 - Google Patents
共享资源的并发访问 Download PDFInfo
- Publication number
- CN1774699A CN1774699A CNA2004800098682A CN200480009868A CN1774699A CN 1774699 A CN1774699 A CN 1774699A CN A2004800098682 A CNA2004800098682 A CN A2004800098682A CN 200480009868 A CN200480009868 A CN 200480009868A CN 1774699 A CN1774699 A CN 1774699A
- Authority
- CN
- China
- Prior art keywords
- request
- processing
- atomically
- current
- finished
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Abstract
凭借一组原子操作管理多线程计算机中多个进程对共享资源的访问的设备、程序产品和方法,这组原子操作跟踪接收使用共享资源的请求的顺序和在接收到这样的请求之后完成它们的处理的顺序。请求的调度被有效推迟,直到比最近完成请求早接收的所有未调度请求的处理都已完成。在许多实例中,可以非原子地进行请求的处理,从而减轻了有关共享资源的竞争。此外,可以成批调度多个请求,从而减少与各个调度操作有关的开销。
Description
技术领域
本发明涉及计算机和计算机软件,尤其涉及管理计算机中对共享资源的并发访问。
背景技术
在当今社会里,随着对计算机的依赖性不断增加,计算机技术已向许多前沿前进,以赶上不断增加的需求。重要研究和开发工作的一个具体课题是并行性问题,即,在并行下多任务的性能问题。
许多计算机软件和硬件技术已经被开发成有助于提高并行处理。从硬件的观点来看,计算机越来越依赖于多个微处理器来提供不断增加的工作负载容量。并且,已经开发出一些支持并行执行多线程的能力的微处理器,有效地提供了通过多微处理器的使用可达到的许多相同性能增益。从软件的观点来看,已经开发出允许计算机程序以多个线程同时执行,以便基本上可以同时执行多个任务的多线程操作系统和内核。
另外,一些计算机实现了逻辑分区的概念,其中,允许单个物理计算机基本上像多个独立“虚拟”计算机(称为逻辑分区)那样操作,以及在各种各样逻辑分区之间分配物理计算机中的各种资源(例如,处理器、存储器、输入/输出设备)。每个逻辑分区执行单独操作系统,并从用户的角度看和从在逻辑分区上执行的应用软件的角度看,都像完全独立的计算机那样操作。
虽然凭借同时执行多个任务的能力,并行性有效地提高了系统性能,但是,由于需要使多个并发进程的操作同步,尤其考虑到多个线程能够共享的系统资源,并行性的一种副作用是增加了系统复杂性。能够访问特定资源的独立线程或进程通常意识不到其它线程或进程的活动。这样,存在着一个进程可能以与另一个进程有关的出乎意料的方式访问特定资源,造成不确定结果和潜在系统错误的风险。
作为许多例子当中一个,诸如以太网适配器之类的输入/输出(I/O)适配器可能具有能够被在计算机上执行的多个线程或进程共享的数量有限的资源。这种类型的一个资源是帧缓冲器,它用于存储传送到以太网兼容网络和从以太网兼容网络接收的数据的帧。帧缓冲器往往被安排成不同进程依次使用的细片,以及将消耗的每个细片通知I/O适配器。但是,消耗一个细片可能占用相当多时间量,在这个时间量内其它进程可能无法使用其它细片。此外,还存在着两个进程可能试图同时使用同一细片的担忧。
为了消除这些担忧,诸如锁或标志之类的串行化机构可以用于每次使共享资源的访问限于一个进程。锁或标志本质上是多线程环境下一个进程或线程可以排他地获得用以访问特定共享实体或资源的“令牌”。在进程或线程可以访问资源之前,它必须首先从系统中获得令牌。如果另一个进程或线程同时处理令牌,不允许前一个进程或线程访问资源,直到其它进程或线程释放令牌为止。这样,对资源的访问被有效地“串行化”,以防止发生不确定操作。
每当通过串行化机构管理共享资源时,由于需要访问锁定资源的任何线程或进程在着手访问资源之前,往往必须等到对那个资源的锁定被释放,因此并发机会往往会变小。这样,人们强烈希望使锁放置共享资源上的频率最小和持续时间最短。
对于如上所述的I/O适配器例子,保证无冲突访问帧缓冲器的最直截了当的解决方案是仅仅围绕着帧缓冲器的任何使用来放置锁。但是,这样做的话,由于相当大的工作量可能需要一个进程来完成,以准备、翻译或其他方式处理存储在帧缓冲器中的数据,因此并行机会受到严重限制。因此,从并行性的观点来看,在出现所有这些活动的同时把其它进程对帧缓冲器的访问锁在外面是适得其反的。
在一些情况下可以在获得锁在共享资源上的锁之前,进行与利用共享资源有关的一些在前工作,从而缩短共享资源可能需要锁在其它进程上的时间量。但是,人们已经发现以这种方式引导的传统尝试要求重复检查资源可用性和进行更复杂的在前工作。
因此,实际需要的是通过在多线程计算机中执行的多个线程或进程协调对共享资源的访问的改进方式。
发明内容
通过提供凭借一组原子操作管理多线程计算机中多个进程对共享资源的访问的设备、程序产品和方法,本发明解决了与现有技术有关的这些和其它问题,这组原子操作跟踪接收使用共享资源的请求的顺序和在接收到这样的请求之后完成它们的处理的顺序。请求的调度被有效推迟,直到比最近完成请求早接收的所有未调度请求的处理都已完成。
具体地说,按照本发明的一个方面,共享资源可以被能够异步发出使用共享资源的请求的多个进程访问。在第一进程中,唯一标识符被原子地指定给使用共享资源的当前请求,其中,根据相对于多个进程发出的其它请求接收当前请求的顺序,将唯一标识符指定给当前请求。此后,利用唯一标识符完成当前请求的处理,并在这样的处理完成之后,原子地递增完成请求的计数,以及对最近完成的请求之前发出的每个其它请求的处理是否已完成作出原子确定。如果是的话,接着调度处理已经完成的每个未调度请求。
在按照本发明的一些实施例中,可以非原子地完成请求的处理,从而限制与处理请求结合在一起进行的原子操作的持续时间,从而减轻对共享资源的竞争。此外,在一些实施例中,未调度请求的调度可能导致多个请求被成批调度,从而减少单独调度的开销。
附图说明
现在参照附图,仅仅通过举例的方式对本发明加以描述,在附图中:
图1是以按照本发明的方式支持多个客户对共享资源的并发访问的通用计算机结构的方块图;
图2是图解图1的计算机结构中的服务器进程执行来处理客户请求的进程客户请求例程的程序流的流程图;
图3是按照本发明实现共享资源的并发访问的逻辑分区计算机中的主要硬件组件的方块图;
图4是图3的计算机中涉及管理计算机中对共享资源的并发访问的主要组件的方块图;以及
图5是图解在图4中引用的服务器进程执行的进程客户请求例程的程序流的流程图。
具体实施方式
下文讨论的实施例跟踪接收使用共享资源的、由多个客户发出的请求的顺序,以及与用以使用共享资源的调度请求结合起来完成这类请求的处理的顺序。这些请求能够异步发出,而且能够无序完成。结果是,随着请求被接收,根据接收它们的顺序,将唯一标识符指定给它们。此外,跟踪已完成请求的数量,并与管理每个请求结合在一起作出确定,以确定在最近完成的请求之前发出的每个其它请求的处理是否已完成。一旦确定这个条件得到满足,就接着调度处理已完成的每个未调度请求。
正如下面更明显看到的那样,接收请求的顺序和完成这类请求的顺序的跟踪可以通过与共享资源有关和能够通过诸如标志之类的排他锁定机构原子访问的一系列计数器的使用作出。request(请求)计数器可以用于随着请求被接收,将唯一标识符指定给它们。done(完成)计数器可以用于跟踪完成请求的数量(即,诸如准备和提交之类的处理已完成的请求)。last_done计数器可以用于跟踪最近完成的请求,而last_dispatch计数器可以用于跟踪最近调度请求。
在按照本发明的许多实施例中,只需对上述计数器的访问是原子的。与管理请求有关的其它处理可能往往是非原子管理的,从而限制了与管理请求结合在一起进行的原子操作的持续时间,并且减少其他可能妨碍对共享资源的并发访问的竞争。
另外,按照本发明的实施例支持提供请求的成批调度的能力。按照本发明,请求的调度可以以不同方式发生。例如,在共享资源是诸如网络适配器之类的输入/输出适配器的帧缓冲器中的细片的情况下,每当通过输入/输出适配器为客户接收信息包时,可以随着对那个客户的中断的上升实现调度操作。在共享资源是诸如SCSI网络之类的网络中的大容量存储设备的情况下,调度操作可以是将I/O请求已完成通知操作系统。
请求的性质通常随所讨论对共享资源的特定类型而改变。例如,对于数据库资源,请求可以代表数据库交易,而对于文件管理系统资源,请求可以代表文件访问请求。对于存储设备,请求可以代表输入/输出(I/O)请求,而对于处理器资源,请求可以代表将处理器分配给逻辑分区的请求。其它共享资源和请求实现对从本公开受益的本领域普通技术人员来说是显而易见的。
现在转到附图,在附图中,相同的号码贯穿几个图形表示相同的部分,图1图解了可以用于以按照本发明的方式支持对共享资源的同时和异步访问的通用计算机结构50的示范性配置。具体地说,所示的是合并了管理多个客户54对通用共享资源56的访问的资源管理器52的结构50。
可以认为共享资源56实际代表能够被计算机访问的任何类型的计算机资源,例如,诸如以太网适配器、SCSI适配器和其它网络适配器之类的各种类型的输入/输出和其它硬件资源;存储器适配器和控制器;工作站适配器和控制器;数据库控制器;处理器;其它输入/输出适配器和控制器等。此外,可以认为共享资源56包括各种类型的软件资源,例如,内核或操作系统服务、文件管理系统、数据库等。共享资源还可以包括上述类型的资源的子组件,例如,驻留在输入/输出适配器中的缓冲器或其它存储器资源。
可以认为每一个客户54实际上代表能够以与任何其它客户有关的异步方式访问资源56的任何程序代码,或甚至是外部可编程设备。在所图解的实施例中,通常,利用以驻留在计算机中的多个并行进程或线程之一执行的计算机上的程序代码,例如,利用包括单线程和/或多线程处理器的一个或多个处理器、支持多线程的基于软件或操作系统、逻辑分区和/或使多个执行实例能够并行地异步访问共享资源的其它技术,实现每个客户54。
为了管理对共享资源56的访问,资源管理器52包括对于各种客户54生成的资源访问请求,起单独服务器作用的多个服务器进程58。可以将每个服务器进程58静态或动态地指定给给定客户54,并且,应该认识到,服务器进程和客户之间的映射不需要1∶1,可能不时地改变。
资源管理器52还包括与服务器进程交互以协调对共享资源56的访问的调度进程60。正如下面更明显看到的那样,调度进程60可以实现成批调度,以便每次调度多个访问请求。此外,调度进程60还可以管理数据从共享资源56的返回,并可以与服务器进程58交互,或直接与每个客户交互,以将输入数据路由给适当客户。但是,在其它实施例中,可以与调度进程60分开地管理返回数据。并且,应该认识到,资源管理器52可以管理多个共享资源,或多个资源管理器可以用于管理多个共享资源。
为了以按照本发明的方式支持对共享资源的并发访问,资源管理器52包括4个原子计数器62、64、66和68。计数器62在这里被称为request计数器,用于供应要指定给客户54之一生成的下一个访问请求的标识符。对于每个生成的请求,使request计数器62递增到下一个标识符,在服务器进程中将那个标识符存储在my_request变量70中,以便唯一地标识那个请求。在各种实施例中,可以事先或事后递增request计数器62,以便计数器中的当前值可以代表最后接收的请求,或当接收到下一个请求时指定给它的值。
计数器64在这里被称为done计数器,用于跟踪已经完成的访问请求的数量。计数器66在这里被称为last_done计数器,用于保存已经完成的最后(或最近)访问请求的标识符。在允许请求无序完成,即,可以允许较晚请求在较早请求之前完成的情况下,通常需要这两个计数器64和66。
计数器68被称为last_dispach计数器,用于存储已经被调度进程60调度给共享资源的最后(或最近)访问请求的标识符,并且通常在通知调度进程的最后时刻被设置成last_done计数器66的值。应该认识到,选择用于标识计数器62、64、66和68的特定名称仅仅是为了方便,不对本发明的范围构成限制。
在所图解的实施例中,每个计数器62、64、66和68被初始化成0,并且计数器62和64按1递增,导致每个计数器总是被总是增加的整数更新。但是,应该认识到,其它单调数字序列或其它标识符也可以用于唯一地标识按照本发明的请求。此外,虽然可以使用使计数器能够在处理了一定数量的请求之后回绕(roll over)的计数器量值,但已经证明,利用使计数器不能在可行时间间隔(例如,8字节计数器)内回绕的计数器量值可大大简化处理。在系统启动期间重新初始化每个计数器,以便实际上,在计算机结构50的正常操作过程中从来没有计数器回绕也是人们所希望的。
现在转到图2,图2更详细图解了可以用于以按照本发明的方式处理客户请求的示范性进程客户请求例程。服务器进程58响应每个请求执行例程72,这样,当多个客户同时提交请求时,例程72的多个实例可以在任何给定时刻并行地执行。
例程72从获取计数器锁,即,获取与计数器62-68有关的锁或标志的方块74开始。在所图解的实施例中,这样的标志可以与所有计数器62-68有关,或者,在可替代实施例中,可以为每个这样的计数器提供单独的锁,或可以将给定锁指定给一小组计数器。
与锁被多个计数器共享,还是只指定给一个或一小组计数器无关,一旦在方块74中获得锁,控制就转到方块76,以递增request计数器62。然后,方块78将与请求有关的my_request变量70设置成reauest计数器62的当前值。此后,方块80释放计数器锁。结果是,方块74-80有效地实现了对request计数器的原子递增操作,还根据request计数器的递增后值将唯一请求标识符指定给请求。在其它实施例中,可以使用request计数器的递增前值。此外,只要在锁内获得request计数器的有效副本,可替代地,可以在锁外进行方块78中对my_request变量70的值指定。但是,与使用的方式无关,根据相对于多个客户发出的其它请求接收请求的顺序,将唯一标识符有效地指定给请求。
接着,方块82代表客户,通过准备和提供请求完成请求的处理。但是,请注意,在锁或标志状态下不执行方块82,这样,方块82不涉及由于访问共享资源的冲突而可能停止当前进程或另一个进程的任何竞争问题。与准备和提交请求有关的步骤通常随特定请求类型和被访问的资源的类型而改变。例如,为了将请求提交给输入/输出适配器,在方块82中可以进行诸如通过直接存储器存取(DMA)操作为传送准备网络帧之类的各种步骤。按照本发明,在方块82中也可以进行与准备请求、提交请求和/或其他完成请求的处理(例如,存储器分配、复制或传送数据、获取合并资源)有关的其它操作。
接着,方块84再次获取计数器锁,如有必要,等待要获取的计数器锁。一旦获得计数器锁,控制转到方块86来递增done计数器64,从而确立当前请求的处理已完成。
然后,方块88确定当前请求的标识符是否大于存储在last_done计数器66中的值。如果是,知道当前请求是已经完成的最近或最后请求。因此,控制转到方块90,将last_done计数器66的值设置成等于当前请求标识符。然后,控制转到方块92。此外,返回到方块88,如果当前请求标识符没有大于存储在last_done计数器66中的值,则方块88使控制直接转到方块92,从而绕过方块90。
方块92通常通过确定存储在done计数器64中的值是否等于存储在last_done计数器66中的值,确定在最近完成请求之前发出的每个其它请求的处理是否都已完成。当这个条件得到满足时,知道时间上比最近完成请求(标识在计数器66中)早的每个请求都已完成,因为done计数器64中的较小值表示至少还有一个较早请求没有完成。
如果方块92中的条件得到满足,则使控制转到方块94,将last_dispatch计数器68中的值设置成等于存储在last_done计数器66中的那个值,表示直到和包括标识在last_done计数器中的请求的每个请求都已完成。然后,控制转到方块96,以通知调度进程调度所有还未调度请求(通常是执行方块94之前last_done计数器66中的值与存储在last_dispatch计数器68中的值之间的那些)。然后,控制转到方块98,以释放在方块84中获得的计数器锁,从而完成例程72。应该认识到,在按照本发明的其它实施例中,方块94可以在方块96之后执行。
返回到方块92,如果并非所有较早请求都已完成,则方块92使控制转到方块100,通常通过确定当前标识符是否是大于存储在last_dispatch计数器68中的值的一个,确定当前请求的标识符是否是在最后调度请求之后由调度进程启用的第一请求。
如果是,则控制转到方块102,以将计数器68的值设置成等于当前请求标识符。然后,控制转到方块96,通知调度进程调度当前请求。否则,如果在方块中阐述的条件未得到满足,则返回方块100,不要求通过例程72的这个实例进行进一步的工作,因为以后进行的其它工作将使请求最终得到调度。于是,方块100使控制直接转到方块98,释放计数器锁,并且终止该例程。
应该认识到,在一些实施例中可以省略在方块100中进行的判定和因而发生的经过方块102的流程。就为成批调度之后启用的第一请求缩短等待时间而言,上述功能提供了好处。在一些实施例中,第一请求的等待时间可能不值得严重担忧,因此在这样的实施例中可以省略上述功能。在这种情况下,如果这里阐述的条件未得到满足,则方块92可以使控制直接转到方块98。
就管理多个客户对共享资源的访问而言,上面的请求管理技术提供了许多独特优点。从生成请求的角度看,无需要求同步或串行化,就可以生成和保留多个访问请求。例如,在将请求内置在被划分成数量有限的块或细片的缓冲器中的情况下,未必使这样细片的完全消耗同步,就可以将客户同时指定给特定细片。另外,可以成批而不是一个一个地将多个请求调度到共享资源,从而省去了与每次调度有关的许多开销(例如,与通过中断通知客户有关的开销)。并且减少了对用于保护和管理对共享资源的访问的竞争。在上述计数器的相对短更新期间,锁也许只代表特定请求保持着,从而能够获得与在不需要任何同步机构进行请求的调度之前,建立和准备与请求有关的许多开销。
如上所述,上述管理共享资源的并发访问的技术可以用在各种应用中。下面结合图3-5更详细描述的一种具体应用是在诸如图3的计算机10那样的逻辑分区计算机中管理对物理或虚拟以太网适配器的访问的应用。尤其,众所周知,诸如以太网适配器和令牌环适配器之类的输入/输出适配器只具有数量有限的资源,在这种情况下,它们是帧缓冲器中的细片。通常允许多个客户消耗细片。并且,消耗一个细片可能在相当多时间量内占用该细片,在这个时间量内其它客户将无法使用该细片。不影响其它客户地允许多个客户同时消耗这样的细片将使计算机系统中的并行执行更加有效,因此,使系统性能得到提高。像如下所述那样的计算机10以按照本发明的方式支持细片的这种并发消耗。
计算机10一般代表例如诸如网络服务器之类的任意个多用户计算机、中档计算机、大型计算机(例如,IBM eServer计算机)等。但是,应该认识到,本发明可以在其它计算机和数据处理系统中,例如,在诸如工作站、台式计算机和便携式计算机等的单用户计算机中,或在其它可编程电子设备(例如,装有内置控制器等)中实现。另外,本发明也可以与非逻辑分区多线程计算机结合在一起使用。
如图3最佳地示出的那样,计算机10一般包括通过总线6与存储器14耦合的一个或多个处理器12。每个处理器12可以作为单线程处理器来实现,或者,像借助于被显示成装有多个硬件线程18的处理器12a那样,作为多线程处理器来实现。在一般情况下,多线程处理器12a中的每个硬件线程18被驻留在计算机中的软件当作独立处理器来对待。关于这一点,为了本公开的目的,将认为单线程处理器装有单个硬件线程,即,单个独立执行单元。但是,应该认识到,基于软件的多线程或多任务可以与单线程处理器和多线程处理器两者结合在一起使用,以便进一步支持计算机中多个任务的并行性能。
另外,还如图3所图解的那样,处理器12的一个或多个(例如,处理器12b)可以作为服务处理器来实现,服务处理器用于运行专门固件代码以管理系统初始程序装载(IPL),并监视、诊断和配置系统硬件。一般说来,计算机10包括一个服务处理器和用于执行驻留在计算机中的操作系统和应用程序的多个系统处理器,但本发明不局限于这种特定实现。在一些实现中,服务处理器可以以除了通过总线16之外的其它方式与计算机中的各种其它硬件组件耦合。
存储器14可以包括一个或多个级别的存储设备,例如,基于DRAM的主存储器,以及一个或多个级别的数据、指令和/或组合高速缓存,正如在现有技术中众所周知的那样,某些高速缓存为单独处理器服务或为多个处理器服务。并且,存储器14通过总线20与许多类型的外部设备,例如,一个或多个网络适配器22(使计算机与网络24对接)、一个或多个存储器控制器26(使计算机与一个或多个存储设备28对接)和一个或多个工作站控制器30(通过多个工作站适配器与一个或多个终端或工作站对接)耦合。
图3还更详细地图解了用在实现计算机10上包括通过分区管理器或管理程序36管理的多个逻辑分区34的逻辑分区计算环境中的基本软件组件和资源。正如在现有技术中众所周知的那样,可以支持任何数量的逻辑分区,随着分区被加入计算机中或从计算机中去除分区,任何时候驻留在计算机中的逻辑分区的数量都可以动态地变化。
在所图解的基于IBM eServer的实现中,分区管理器36由两层程序代码组成。第一层在这里被称为不可调度部分38,在计算机10的固件或许可内部代码(LIC)内实现,用于在将较高层(例如,操作系统)与硬件访问的细节隔离的同时,向各种硬件组件提供低级接口。固件也可以与诸如服务处理器12b之类的服务处理器通信。不可调度部分38为计算机10提供许多低级分区管理功能,例如,页表管理等。不可调度部分38也没有任务的概念,主要可通过函数调用从软件的较高层访问。
分区管理器36中程序代码的第二层在这里被称为可调度部分40。与没有任务的概念、借助于重定位逃逸并可通过函数调用从软件的较高层访问的不可调度部分38相反,可调度部分40具有任何的概念并借助于重定位继续运行。除了用户无法觉察之外,可调度部分通常以与分区几乎相同的方式执行。可调度部分一般管理较高级分区管理操作,譬如,创建和删除分区。并发I/O维护,将处理器、存储器和其它硬件资源分配给各种分区34等。
通常静态地和/或动态地将计算机10中的一部分可用资源分配给每个逻辑分区34。例如,可以将一个或多个处理器12和/或一个或多个硬件线程18,以及一部分可用存储空间分配给每个逻辑分区。逻辑分区可以共享诸如处理器之类的特定硬件资源,以便多于一个逻辑分区使用一个给定处理器。在可替代实施例中,每次可以将硬件资源只分配给一个逻辑分区。
另外的资源(例如,大容量存储器、备份存储器、用户输入、网络连接和用于它们的I/O适配器)通常以在现有技术中众所周知的方式分配给一个或多个逻辑分区。资源可以以许多种方式(例如,一条总线接一条总线地或一个资源接一个资源地)用同一总线上共享资源的多个逻辑分区分配。甚至可以每次将一些资源分配给多个逻辑分区。
每个逻辑分区34以与未分区计算机的操作系统相同的方式使用控制逻辑分区的基本操作的操作系统42。例如,可以利用可从美国国际商用机器公司(IBM)购买到的OS/400操作系统实现每个操作系统42。
每个逻辑分区34在分离或独立存储空间中运行,因此,从在每个这样的逻辑分区中执行的每个用户应用程序(用户应用程序)44的角度看,每个逻辑分区起几乎与独立未分区计算机相同的作用。这样,用户应用程序通常不需要用在分区环境中的任何特殊配置。
在逻辑分区34的性质像单独虚拟计算机那样的情况下,最好支持分区间通信,以便允许逻辑分区相互通信,仿佛逻辑分区处在单独物理机器上似的。这样,在一些实施例中,最好支持不可调度部分38中的局域网(LAN)46,以便允许逻辑分区34通过诸如以太网协议之类的连网协议相互通信。按照本发明,也可以支持支持分区间通信的其它方式。
应该认识到,按照本发明,可以使用其它逻辑分区环境。例如,不是使用与任何分区34分离的可调度部分40,而是在可替代实施例中,可以将可调度部分的功能合并到一个或多个逻辑分区中。
一般说来,加以执行以实现本发明的实施例的例程,无论作为操作系统的一部分来实现,还是作为特定应用程序、组件、程序、对象、模块或指令序列来实现,甚至作为它们的一个小组来实现,在这里都被称为“计算机程序代码”,或简称为“程序代码”。程序代码通常包括在各个时刻驻留在计算机中的各个存储器和存储设备中,并且当由计算机中的一个或多个处理器读取和执行时,使那个计算机完成执行实施本发明的各个方面的步骤或要素所需的步骤的一条或多条指令。此外,虽然在完全功能化计算机和计算机系统的背景下对本发明作了描述和在下文中将对本发明加以描述,但本领域的普通技术人员应该认识到,本发明的各种实施例能够作为程序产品以各种形式得到分发,并使本发明与实际用于实现分配的信号承载媒体的具体类型无关地得到平等应用。信号承载媒体的例子包括诸如易失性和非易失性存储设备、软盘和其它可换盘、硬盘驱动器、磁带、光盘(例如,CD-ROM(只读光盘驱动器)和DVD(数字多功能盘)等)等的可记录型媒体和诸如数字和模拟通信链路之类的传输型媒体,但不局限于这些。
另外,下文所述的各种程序代码可以根据在本发明的特定实施例中实现它的应用程序或软件组件来识别。但是,应该认识到,使用如下的任何具体程序术语仅仅是为了方便,因此,本发明不应该局限于唯一地应用在这样术语所标识和/或暗示的任何特定应用程序中。并且,在给定可以将计算机程序组织成例程、过程、方法、模块、对象等的通常数量无限的方式,以及在驻留在典型计算机内的各种软件层(例如,操作系统、库、API、应用程序、小应用程序等)内可以分配程序功能的各种方式的情况下,应该认识到,本发明不局限于这里所述的程序功能的特定组织和分配。
本领域的普通技术人员将认识到,图解在图3中的示范性环境无意对本发明加以限制。的确,本领域的普通技术人员将认识到,可以使用其它可替代硬件和/或软件环境,而不偏离本发明的范围。具体地说,本发明不局限于用在逻辑分区环境中,而是可用在支持对共享资源的并发和异步访问的众多其它环境中。
现在转到图4,图4图解了与实现对具体类型的共享资源(这里,虚拟输入/输出适配器中的帧缓冲器)的并发访问有关的主要软件组件。在这种实现中,为了通过虚拟局域网(VLAN)支持分区34之间的分区间通信,多个客户120被布置在各种分区34中。在所图解的实施例中,每个客户可以被实现成,例如,驻留在分区中的设备驱动器。
布置在分区管理器36内的是为了VLAN上的通信,能够被客户120访问的虚拟输入/输出适配器(IOA)122。在这样的配置下,每当一个分区中的客户需要将数据传送到另一个分区中的客户时,以将数据转发给非虚拟IOA几乎相同的方式,将数据从发送客户转发给分区管理器34中分配给发送客户的虚拟IOA 122。数据被虚拟IOA格式化成传统网络信息包(例如,以太网兼容信息包),传送给不同分区34中分配给接收客户120的另一个虚拟IOA122。这种数据通信出现在软件中,而不是出现在像用在物理LAN中那样的物理电缆上,但是,另一方面,使用的通信协议是相同的。然后,分配给接收客户的虚拟IOA 122以与非虚拟IOA大体相同的方式将接收数据传递给接收客户。这样,从每个客户120的角度看,一个客户发送数据和另一个客户接收数据的方式是相同的,仿佛在物理LAN上传送数据似的。
通过以这种方式实现虚拟LAN,保持了分区作为逻辑独立计算机的逻辑结构,因为在一个分区中执行的应用程序将数据传送给另一个分区中的另一个应用程序,仿佛其它分区驻留在不同物理计算机上似的。在许多实例中,这使配置成在非逻辑分区计算机上执行的应用程序能够以与逻辑分区计算机完全相同的方式运行。
每个虚拟IOA 122与用于以与非虚拟IOA相同的方式发送和接收数据的以太网兼容帧的一个或多个帧缓冲器124有关。每个帧缓冲器124又包括代表缓冲器中的不同数据区的多个细片126。每个细片126还包括指向分区中供相关客户120使用的本地缓冲器(例如,缓冲器128)的指针。
在所图解的实施例中,帧缓冲器124中的细片126代表各种客户120能够依次使用的共享资源。多个客户120可以消耗这些细片,由于客户在处理请求期间消耗这些细片,因此随着这些资源被消耗掉,有必要通知客户。例如,在所图解的实施例中,通过将中断从虚拟IOA发布到客户来通知客户。正如下面更明显看到的那样,按照本发明,可以成批地,而不是一个请求一个请求地管理这些工作,以提高调度进程的效率。
在图解在图4中的实施例中,每个虚拟IOA 122起与图1的资源管理器52类似的资源管理器的作用。这样,每个虚拟IOA 122包括多个服务器进程130、调度进程132、request计数器134、done计数器136、last_done计数器138和last_dispatch计数器140。另外,每个服务器进程130存储my_request变量142,以便唯一地标识相关服务器进程发出的每个请求。按照本发明的资源管理通常与从虚拟LAN接收数据一起出现,使得随着有关的数据被相关虚拟IOA接收,通过中断通知客户120。
现在转到图5,图5更详细地图解了在图3和4的环境下特别适合管理客户请求的进程客户请求例程172。例程172在许多请求中与例程72相似,但被配置成特别适合管理客户请求,以便虚拟输入/输出适配器消耗帧缓冲器中的细片。一般说来,每个客户请求原子地获取帧缓冲器中的可用细片,通过原子地递增request计数器将新唯一标识符指定给这样的请求。请求标识符模帧缓冲器中的细片个数用于获取要使用的特定细片。为了这种实现,这里称为used_slot计数器的附加计数器用于保持消耗细片的总数。每当客户释放资源时,通常通过在除了例程172之外的其它例程中实现的功能,使这个计数器递增。
例程172从确定已用细片的总数是否等于可用细片的最大数(用totalslots常数或变量表示)的方块174开始。如果是的话,客户请求失败,并且如图解在方块176中的那样,返回错误。否则,方块174使控制转到方块178,递增已用细片的个数。接着,方块180、182、184和186以与例程72的方块74-80相似的方式原子地递增request计数器并获取请求标识符。
接着,控制转到方块188,通过求当前请求标识符模帧缓冲器中的细片总数,为当前请求设置当前细片(my_slot)。接着,在方块190中,准备和向当前细片提交请求,从而完成请求的处理。这样,以与例程72的方块84和86相似的方式,控制转到方块192以获取计数器锁,然后,转到方块194以递增done计数器。例程172中的其余操作(具体地说,为如方块196、198、200、202、204、206、208和210所示的操作)与上面结合例程72的方块88、90、92、94、96、98、100和102公开的那些相同,方块204中请求的调度是通过对调度进程的中断,生成对分区中需要通知的各种客户的附加中断发生的。另外,与例程72的方块100和102相同,在按照本发明的一些实施例中,可以从例程172中省略方块208和210。
作为上述实现中使用本发明的实例,考虑在虚拟LAN上4个分区相互耦合的情形,虚拟IOA被指定给每个逻辑分区,而3个逻辑分区含有需要发送给第4分区的数据。考虑第1分区含有64KB要发送的数据,第2分区只含有2KB要发送的数据,和第3分区含有64KB要发送的数据。在这种情形下,假设第1、第2和第3分区将请求发送给它们各自的虚拟IOA,然后,这些虚拟IOA格式化要发送到第4分区的虚拟IOA的数据的帧。另外,虚拟IOA按数字顺序将请求发送到第4分区的虚拟IOA,即,第4分区的虚拟IOA按顺序接收来自第1、第2和第3分区的请求。这样,利用例程172,将按序唯一标识符指定给请求,并且这些请求将按顺序消耗第4分区的虚拟IOA的帧缓冲器中的细片。
但是,一旦将标识符指定给请求,虚拟IOA中的每个服务器进程将着手并行地管理它的请求,例如,将相应帧DMA到那个进程消耗的细片所指的客户缓冲器。但是,在所图解的例子中,由于来自第2分区的数据的帧比第1分区的数据的帧小得多(2KB比64KB),因此在完成第1分区的请求之前完成第2分区的请求是可能的。在那种情况下,例程172递增done计数器,并将last_done计数器设置成来自第2分区的请求的唯一标识符。但是,例程在方块200上还将检测到并非所有较早的请求都已完成,结果是,推迟通知第4分区中的客户,直到来自第1分区的请求都已完成,此刻,将发生成批调度,将接收到数据的两个帧通知第4分区。另外,假设来自第3分区的请求晚一些时间完成,则将发生另一次调度以通知第4分区接收第3帧数据。
Claims (26)
1.一种访问计算机中对共享资源的方法,该方法包括,在能够异步发出使用共享资源的请求的多个进程当中的第一进程中:
将唯一标识符原子地指定给使用共享资源的当前请求,其中,根据相对于多个进程发出的其它请求接收当前请求的顺序,将唯一标识符指定给当前请求;
利用唯一标识符完成当前请求的处理;
在当前请求的处理完成之后,原子地递增完成请求的计数;
在当前请求的处理完成之后,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及
响应最近完成请求之前发出的每个其它请求的处理已经完成的确定,调度处理已经完成的每个未调度请求。
2.根据权利要求1所述的方法,其中,非原子地进行当前请求的处理。
3.根据权利要求1所述的方法,还包括,在第一进程中,在当前请求的处理完成之后,原子地确定当前请求是否是最近完成请求。
4.根据权利要求1所述的方法,还包括,在第一进程中,在当前请求的处理完成之后,原子地确定当前请求是否是最后调度操作之后发出的第一请求,并且响应当前请求是最后调度操作之后发出的第一请求的确定,调度当前请求。
5.根据权利要求1所述的方法,其中,调度处理已经完成的每个未调度请求包括成批地调度多个请求。
6.根据权利要求1所述的方法,其中,原子地将唯一标识符指定给当前请求包括递增request计数器,原子地递增完成请求的计数包括递增done计数器,并且该方法还包括响应当前请求是最近完成请求的确定,在当前请求的处理完成之后,将last_done计数器原子地更新成当前请求的唯一标识符;原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成包括将last_done计数器与done计数器进行比较;以及调度处理已经完成的每个未调度请求包括将last_dispatch计数器更新成等于last_done计数器。
7.根据权利要求6所述的方法,其中,利用单调增加的数字序列更新request、done、last_done和last_dispatch计数器中的每一个。
8.根据权利要求1所述的方法,还包括:
响应最近完成请求之前发出的每个其它请求的处理还没有完成的确定,推迟处理已经完成的每个未调度请求的调度;以及
在多个进程当中的第二进程中:
完成比当前请求早的较早请求的处理,较早请求具有在当前请求的唯一标识符前面的指定给它的唯一标识符;
在较早请求的处理完成之后,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及
响应最近完成请求之前发出的每个其它请求的处理已经完成的确定,调度处理已经完成的每个未调度请求。
9.根据权利要求1所述的方法,其中,完成当前请求的处理包括准备请求。
10.根据权利要求1所述的方法,其中,共享资源包括输入/输出适配器中的帧缓冲器的至少一个细片,完成当前请求的处理包括利用细片传送数据,以及调度每个未调度请求包括通知客户接收传送的数据。
11.根据权利要求10所述的方法,其中,计算机包括逻辑分区计算机,而输入/输出适配器是与用于逻辑分区计算机中的分区间通信的虚拟局域网耦合的虚拟输入/输出适配器。
12.根据权利要求1所述的方法,其中,共享资源是从由处理器、硬件设备、输入/输出设备、存储设备、适配器、控制器、数据库、文件系统、服务和它们的组件组成的组中选择出来的。
13.一种设备,包括:
共享资源;
被配置成执行能够异步发出使用共享资源的请求的多个进程的至少一个处理器;以及
被配置成在第一进程中在至少一个处理器上执行的程序代码,用于将唯一标识符原子地指定给使用共享资源的当前请求;利用唯一标识符完成当前请求的处理;在当前请求的处理完成之后,原子地递增完成请求的计数;在当前请求的处理完成之后,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及响应最近完成请求之前发出的每个其它请求的处理已经完成的确定,调度处理已经完成的每个未调度请求,其中,根据相对于多个进程发出的其它请求接收当前请求的顺序,将唯一标识符指定给当前请求。
14.根据权利要求13所述的设备,其中,程序代码被配置成非原子地完成当前请求的处理。
15.根据权利要求13所述的设备,其中,程序代码被进一步配置成在当前请求的处理完成之后,原子地确定当前请求是否是最近完成请求。
16.根据权利要求13所述的设备,程序代码被进一步配置成在当前请求的处理完成之后,原子地确定当前请求是否是最后调度操作之后发出的第一请求,并且响应当前请求是最后调度操作之后发出的第一请求的确定,调度当前请求。
17.根据权利要求13所述的设备,其中,程序代码被配置成通过成批地调度多个请求,调度处理已经完成的每个未调度请求。
18.根据权利要求13所述的设备,还包括request计数器、done计数器、last_done计数器和last_dispatch计数器,其中,程序代码被配置成通过递增request计数器,原子地将唯一标识符指定给当前请求;程序代码被配置成通过递增done计数器,原子地递增完成请求的计数;程序代码被进一步配置成响应当前请求是最近完成请求的确定,在当前请求的处理完成之后,将last_done计数器原子地更新成当前请求的唯一标识符;程序代码被配置成通过将last_done计数器与done计数器进行比较,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及程序代码被配置成通过将last_dispatch计数器更新成等于last_done计数器,进一步调度处理已经完成的每个未调度请求。
19.根据权利要求18所述的设备,其中,利用单调增加的数字序列更新request、done、last_done和last_dispatch计数器中的每一个。
20.根据权利要求13所述的设备,其中,程序代码是第一程序代码,其中,第一程序代码被进一步配置成响应最近完成请求之前发出的每个其它请求的处理还没有完成的确定,推迟处理已经完成的每个未调度请求的调度,并且该设备还包括被配置成在第一进程中在至少一个处理器上执行的第二程序代码,用于完成比当前请求早的较早请求的处理,较早请求具有在当前请求的唯一标识符前面的指定给它的唯一标识符;在较早请求的处理完成之后,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及响应最近完成请求之前发出的每个其它请求的处理已经完成的确定,调度处理已经完成的每个未调度请求。
21.根据权利要求13所述的设备,其中,程序代码被配置成通过准备请求,完成当前请求的处理。
22.根据权利要求13所述的设备,其中,共享资源包括输入/输出适配器中的帧缓冲器的至少一个细片,程序代码被配置成通过利用细片传送数据,完成当前请求的处理;以及程序代码被配置成通过通知客户接收传送的数据,调度每个未调度请求。
23.根据权利要求22所述的设备,其中,该设备包括逻辑分区计算机,而输入/输出适配器是与用于逻辑分区计算机中的分区间通信的虚拟局域网耦合的虚拟输入/输出适配器。
24.根据权利要求13所述的设备,其中,共享资源是从由处理器、硬件设备、输入/输出设备、存储设备、适配器、控制器、数据库、文件系统、服务和它们的组件组成的组中选择出来的。
25.一种程序产品,包括:
被配置成在计算机中能够异步发出使用共享资源的请求的多个进程当中的第一进程中执行的程序代码,用于将唯一标识符原子地指定给使用共享资源的当前请求;利用唯一标识符完成当前请求的处理;在当前请求的处理完成之后,原子地递增完成请求的计数;在当前请求的处理完成之后,原子地确定最近完成请求之前发出的每个其它请求的处理是否已经完成;以及响应最近完成请求之前发出的每个其它请求的处理已经完成的确定,调度处理已经完成的每个未调度请求,其中,根据相对于多个进程发出的其它请求接收当前请求的顺序,将唯一标识符指定给当前请求;以及
承载程序代码的信号承载媒体。
26.根据权利要求25所述的程序产品,其中,信号承载媒体包括传输媒体和可记录媒体中的至少一种。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/422,193 | 2003-04-24 | ||
US10/422,193 US7047337B2 (en) | 2003-04-24 | 2003-04-24 | Concurrent access of shared resources utilizing tracking of request reception and completion order |
PCT/GB2004/001624 WO2004094863A2 (en) | 2003-04-24 | 2004-04-15 | Concurrent access of shared resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1774699A true CN1774699A (zh) | 2006-05-17 |
CN1774699B CN1774699B (zh) | 2010-05-26 |
Family
ID=33298830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800098682A Expired - Lifetime CN1774699B (zh) | 2003-04-24 | 2004-04-15 | 共享资源的并发访问方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7047337B2 (zh) |
EP (1) | EP1620801A2 (zh) |
JP (1) | JP4410795B2 (zh) |
KR (1) | KR100843548B1 (zh) |
CN (1) | CN1774699B (zh) |
CA (1) | CA2522096C (zh) |
TW (1) | TWI265412B (zh) |
WO (1) | WO2004094863A2 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350022B (zh) * | 2008-08-27 | 2010-04-14 | 中国工商银行股份有限公司 | 基于数据库逻辑锁的变更处理方法 |
CN101261729B (zh) * | 2007-02-08 | 2010-06-16 | 威盛电子股份有限公司 | 在分布式图形处理单元内管理多重执行绪的系统与方法 |
CN101170778B (zh) * | 2007-11-14 | 2011-03-02 | 中兴通讯股份有限公司 | 支持多个连接管理程序访问和控制移动终端设备的系统 |
CN102214120A (zh) * | 2010-04-08 | 2011-10-12 | 英特尔公司 | 处理非相干设备的原子操作 |
CN101446909B (zh) * | 2007-11-30 | 2011-12-28 | 国际商业机器公司 | 用于管理任务事件的方法和系统 |
CN103189847A (zh) * | 2010-11-05 | 2013-07-03 | 国际商业机器公司 | 集群式数据处理系统中的存储装置管理 |
CN101874238B (zh) * | 2007-04-11 | 2013-10-16 | 高通股份有限公司 | 用于多线程处理器的线程间跟踪对准方法和系统 |
WO2014053074A1 (en) * | 2012-10-04 | 2014-04-10 | Qualcomm Incorporated | Method and apparatus using high-efficiency atomic operations |
CN101685409B (zh) * | 2008-09-26 | 2014-07-16 | 三星电子株式会社 | 用于管理存储器的方法和存储器管理器 |
CN103946827A (zh) * | 2011-11-22 | 2014-07-23 | 华为技术有限公司 | 用于实施内核和用户空间之间共享的锁的系统和方法 |
CN104025031A (zh) * | 2011-12-28 | 2014-09-03 | 英特尔公司 | 减少应用中对共享存储器单元执行的顺序操作的数量 |
CN105808210A (zh) * | 2014-12-31 | 2016-07-27 | 龙芯中科技术有限公司 | 共享资源的访问方法和装置 |
CN106385377A (zh) * | 2015-07-29 | 2017-02-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN108021597A (zh) * | 2016-10-28 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种并行计数器、服务器和一种计数方法 |
US10318292B2 (en) | 2014-11-17 | 2019-06-11 | Intel Corporation | Hardware instruction set to replace a plurality of atomic operations with a single atomic operation |
CN110231983A (zh) * | 2019-05-13 | 2019-09-13 | 北京百度网讯科技有限公司 | 数据并发处理方法、装置及系统、计算机设备及可读介质 |
CN113342539A (zh) * | 2021-05-31 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751667B1 (en) * | 2000-10-06 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | System for generating unique identifiers in a computer network |
CA2496664C (en) | 2002-08-23 | 2015-02-17 | Exit-Cube, Inc. | Encrypting operating system |
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 |
US7289992B2 (en) * | 2003-05-01 | 2007-10-30 | International Business Machines Corporation | Method, system, and program for lock and transaction management |
US7496574B2 (en) * | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7530067B2 (en) * | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
US7401104B2 (en) | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US8131739B2 (en) * | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7590643B2 (en) | 2003-08-21 | 2009-09-15 | Microsoft Corporation | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7934020B1 (en) * | 2003-09-19 | 2011-04-26 | Vmware, Inc. | Managing network data transfers in a virtual computer system |
US7594053B2 (en) * | 2003-12-12 | 2009-09-22 | Alcatel-Lucent Usa Inc. | Adaptive object level locking |
WO2005089235A2 (en) * | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method providing object messages in a compute environment |
US7437355B2 (en) * | 2004-06-24 | 2008-10-14 | Sap Ag | Method and system for parallel update of database |
WO2006053093A2 (en) | 2004-11-08 | 2006-05-18 | Cluster Resources, Inc. | System and method of providing system jobs within a compute environment |
US8181182B1 (en) * | 2004-11-16 | 2012-05-15 | Oracle America, Inc. | Resource allocation brokering in nested containers |
US20080270770A1 (en) * | 2005-01-24 | 2008-10-30 | Marc Vertes | Method for Optimising the Logging and Replay of Mulit-Task Applications in a Mono-Processor or Multi-Processor Computer System |
US7805422B2 (en) | 2005-02-28 | 2010-09-28 | Microsoft Corporation | Change notification query multiplexing |
US8219823B2 (en) | 2005-03-04 | 2012-07-10 | Carter Ernst B | System for and method of managing access to a system using combinations of user information |
US9075657B2 (en) | 2005-04-07 | 2015-07-07 | Adaptive Computing Enterprises, Inc. | On-demand access to compute resources |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
US7908606B2 (en) * | 2005-05-20 | 2011-03-15 | Unisys Corporation | Usage metering system |
US7487271B2 (en) | 2005-09-22 | 2009-02-03 | Motorola, Inc. | Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system |
US20070094664A1 (en) * | 2005-10-21 | 2007-04-26 | Kimming So | Programmable priority for concurrent multi-threaded processors |
US20070101339A1 (en) * | 2005-10-31 | 2007-05-03 | Shrum Kenneth W | System for and method of multi-dimensional resource management |
US7693811B2 (en) * | 2006-02-28 | 2010-04-06 | International Business Machines Corporation | Generating unique identifiers for logical partitions |
US7761578B2 (en) * | 2006-04-28 | 2010-07-20 | Microsoft Corporation | Communicating in a virtual environment |
US20080140982A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Redundant multiple computer architecture |
US7698540B2 (en) * | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US20080140390A1 (en) * | 2006-12-11 | 2008-06-12 | Motorola, Inc. | Solution for sharing speech processing resources in a multitasking environment |
US10452820B2 (en) * | 2007-06-26 | 2019-10-22 | International Business Machines Corporation | Thread-based software license management |
US8392529B2 (en) | 2007-08-27 | 2013-03-05 | Pme Ip Australia Pty Ltd | Fast file server methods and systems |
US20090158299A1 (en) * | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
US9904969B1 (en) | 2007-11-23 | 2018-02-27 | PME IP Pty Ltd | Multi-user multi-GPU render server apparatus and methods |
WO2009067680A1 (en) | 2007-11-23 | 2009-05-28 | Mercury Computer Systems, Inc. | Automatic image segmentation methods and apparartus |
US9019287B2 (en) | 2007-11-23 | 2015-04-28 | Pme Ip Australia Pty Ltd | Client-server visualization system with hybrid data processing |
US8319781B2 (en) | 2007-11-23 | 2012-11-27 | Pme Ip Australia Pty Ltd | Multi-user multi-GPU render server apparatus and methods |
US10311541B2 (en) | 2007-11-23 | 2019-06-04 | PME IP Pty Ltd | Multi-user multi-GPU render server apparatus and methods |
US8447859B2 (en) * | 2007-12-28 | 2013-05-21 | International Business Machines Corporation | Adaptive business resiliency computer system for information technology environments |
US20090171731A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Use of graphs in managing computing environments |
US8365185B2 (en) * | 2007-12-28 | 2013-01-29 | International Business Machines Corporation | Preventing execution of processes responsive to changes in the environment |
US20090171708A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Using templates in a computing environment |
US8428983B2 (en) | 2007-12-28 | 2013-04-23 | International Business Machines Corporation | Facilitating availability of information technology resources based on pattern system environments |
US8751283B2 (en) * | 2007-12-28 | 2014-06-10 | International Business Machines Corporation | Defining and using templates in configuring information technology environments |
US8782662B2 (en) * | 2007-12-28 | 2014-07-15 | International Business Machines Corporation | Adaptive computer sequencing of actions |
US9558459B2 (en) * | 2007-12-28 | 2017-01-31 | International Business Machines Corporation | Dynamic selection of actions in an information technology environment |
US20090172669A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Use of redundancy groups in runtime computer management of business applications |
US20090172674A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Managing the computer collection of information in an information technology environment |
US8375244B2 (en) * | 2007-12-28 | 2013-02-12 | International Business Machines Corporation | Managing processing of a computing environment during failures of the environment |
US20090172149A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Real-time information technology environments |
US8763006B2 (en) * | 2007-12-28 | 2014-06-24 | International Business Machines Corporation | Dynamic generation of processes in computing environments |
US8868441B2 (en) * | 2007-12-28 | 2014-10-21 | International Business Machines Corporation | Non-disruptively changing a computing environment |
US8346931B2 (en) * | 2007-12-28 | 2013-01-01 | International Business Machines Corporation | Conditional computer runtime control of an information technology environment based on pairing constructs |
US8990810B2 (en) * | 2007-12-28 | 2015-03-24 | International Business Machines Corporation | Projecting an effect, using a pairing construct, of execution of a proposed action on a computing environment |
US8826077B2 (en) | 2007-12-28 | 2014-09-02 | International Business Machines Corporation | Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations |
US20090171730A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Non-disruptively changing scope of computer business applications based on detected changes in topology |
US8677174B2 (en) * | 2007-12-28 | 2014-03-18 | International Business Machines Corporation | Management of runtime events in a computer environment using a containment region |
US8341014B2 (en) | 2007-12-28 | 2012-12-25 | International Business Machines Corporation | Recovery segments for computer business applications |
US8682705B2 (en) * | 2007-12-28 | 2014-03-25 | International Business Machines Corporation | Information technology management based on computer dynamically adjusted discrete phases of event correlation |
US20090171703A1 (en) * | 2007-12-28 | 2009-07-02 | International Business Machines Corporation | Use of multi-level state assessment in computer business environments |
US8392633B2 (en) * | 2008-06-25 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Scheduling requesters of a shared storage resource |
US8321869B1 (en) * | 2008-08-01 | 2012-11-27 | Marvell International Ltd. | Synchronization using agent-based semaphores |
CN102388381B (zh) * | 2009-01-23 | 2015-02-25 | 惠普开发有限公司 | 用于分配共享存储资源的系统和方法 |
US9128895B2 (en) * | 2009-02-19 | 2015-09-08 | Oracle International Corporation | Intelligent flood control management |
US8180877B2 (en) * | 2009-06-04 | 2012-05-15 | International Business Machines Corporation | Logically partitioned system having subpartitions with flexible network connectivity configuration |
US8924984B2 (en) * | 2009-06-26 | 2014-12-30 | Microsoft Corporation | Lock-free barrier with dynamic updating of participant count |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US9165086B2 (en) | 2010-01-20 | 2015-10-20 | Oracle International Corporation | Hybrid binary XML storage model for efficient XML processing |
KR20110094764A (ko) * | 2010-02-17 | 2011-08-24 | 삼성전자주식회사 | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 |
US8352658B2 (en) * | 2010-05-27 | 2013-01-08 | Microsoft Corporation | Fabric based lock manager service |
US20120102242A1 (en) * | 2010-10-26 | 2012-04-26 | Kaminario Technologies Ltd. | Controlling data destaging within a multi-tiered storage system |
US20120124518A1 (en) * | 2010-11-16 | 2012-05-17 | Microsoft Corporation | Managing Operations via a User Interface |
CN102156656B (zh) * | 2010-12-31 | 2014-04-02 | 华为技术有限公司 | 虚拟化平台下获取虚拟框槽号的方法和设备 |
US8677024B2 (en) * | 2011-03-31 | 2014-03-18 | International Business Machines Corporation | Aggregating shared Ethernet adapters in a virtualized environment |
US9088569B2 (en) * | 2011-05-12 | 2015-07-21 | International Business Machines Corporation | Managing access to a shared resource using client access credentials |
US9158597B2 (en) * | 2011-07-08 | 2015-10-13 | Microsoft Technology Licensing, Llc | Controlling access to shared resource by issuing tickets to plurality of execution units |
TWI549056B (zh) * | 2011-12-08 | 2016-09-11 | 微軟技術授權有限責任公司 | 以函式庫作業系統達成之應用程式相容性 |
TW201324360A (zh) * | 2011-12-08 | 2013-06-16 | Chunghwa Telecom Co Ltd | 交付背景執行包覆模組 |
ES2439803B1 (es) * | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático |
US9378023B2 (en) * | 2012-06-13 | 2016-06-28 | International Business Machines Corporation | Cross-pipe serialization for multi-pipeline processor |
US10070839B2 (en) | 2013-03-15 | 2018-09-11 | PME IP Pty Ltd | Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images |
US11183292B2 (en) | 2013-03-15 | 2021-11-23 | PME IP Pty Ltd | Method and system for rule-based anonymized display and data export |
US9509802B1 (en) | 2013-03-15 | 2016-11-29 | PME IP Pty Ltd | Method and system FPOR transferring data to improve responsiveness when sending large data sets |
US8976190B1 (en) | 2013-03-15 | 2015-03-10 | Pme Ip Australia Pty Ltd | Method and system for rule based display of sets of images |
US11244495B2 (en) | 2013-03-15 | 2022-02-08 | PME IP Pty Ltd | Method and system for rule based display of sets of images using image content derived parameters |
US10540803B2 (en) | 2013-03-15 | 2020-01-21 | PME IP Pty Ltd | Method and system for rule-based display of sets of images |
US10089157B2 (en) * | 2014-11-14 | 2018-10-02 | National Instruments Corporation | Autonomous management of concurrent servicing of multiple clients by an instrument |
WO2016159943A1 (en) * | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | Accessing a shared resource |
US11599672B2 (en) | 2015-07-31 | 2023-03-07 | PME IP Pty Ltd | Method and apparatus for anonymized display and data export |
US9984478B2 (en) | 2015-07-28 | 2018-05-29 | PME IP Pty Ltd | Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images |
US10198298B2 (en) * | 2015-09-16 | 2019-02-05 | Salesforce.Com, Inc. | Handling multiple task sequences in a stream processing framework |
US10146592B2 (en) | 2015-09-18 | 2018-12-04 | Salesforce.Com, Inc. | Managing resource allocation in a stream processing framework |
US10261902B2 (en) | 2016-01-04 | 2019-04-16 | Toshiba Memory Corporation | Parallel processing of a series of data units for writing |
US10437635B2 (en) | 2016-02-10 | 2019-10-08 | Salesforce.Com, Inc. | Throttling events in entity lifecycle management |
US10249017B2 (en) | 2016-08-11 | 2019-04-02 | Intel Corporation | Apparatus and method for shared resource partitioning through credit management |
US10504045B2 (en) * | 2016-10-27 | 2019-12-10 | Sap Se | Audit schedule determination |
US10909679B2 (en) | 2017-09-24 | 2021-02-02 | PME IP Pty Ltd | Method and system for rule based display of sets of images using image content derived parameters |
US10956240B2 (en) * | 2018-10-30 | 2021-03-23 | Blackberry Limited | Sharing data by a virtual machine |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
US6598068B1 (en) * | 1996-01-04 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment |
US5805900A (en) * | 1996-09-26 | 1998-09-08 | International Business Machines Corporation | Method and apparatus for serializing resource access requests in a multisystem complex |
US5931924A (en) * | 1997-04-14 | 1999-08-03 | International Business Machines Corporation | Method and system for controlling access to a shared resource that each requestor is concurrently assigned at least two pseudo-random priority weights |
US6237019B1 (en) * | 1998-03-18 | 2001-05-22 | International Business Machines Corporation | Method and apparatus for performing a semaphore operation |
US6745274B1 (en) * | 2000-04-25 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Apparatus and method for synchronizing multiple accesses to common resources |
US6725457B1 (en) * | 2000-05-17 | 2004-04-20 | Nvidia Corporation | Semaphore enhancement to improve system performance |
-
2003
- 2003-04-24 US US10/422,193 patent/US7047337B2/en active Active
-
2004
- 2004-04-01 TW TW093109061A patent/TWI265412B/zh active
- 2004-04-15 JP JP2006506127A patent/JP4410795B2/ja not_active Expired - Fee Related
- 2004-04-15 WO PCT/GB2004/001624 patent/WO2004094863A2/en active Application Filing
- 2004-04-15 CA CA2522096A patent/CA2522096C/en not_active Expired - Lifetime
- 2004-04-15 EP EP04727592A patent/EP1620801A2/en not_active Withdrawn
- 2004-04-15 CN CN2004800098682A patent/CN1774699B/zh not_active Expired - Lifetime
- 2004-04-15 KR KR1020057017734A patent/KR100843548B1/ko not_active IP Right Cessation
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261729B (zh) * | 2007-02-08 | 2010-06-16 | 威盛电子股份有限公司 | 在分布式图形处理单元内管理多重执行绪的系统与方法 |
CN101874238B (zh) * | 2007-04-11 | 2013-10-16 | 高通股份有限公司 | 用于多线程处理器的线程间跟踪对准方法和系统 |
CN101170778B (zh) * | 2007-11-14 | 2011-03-02 | 中兴通讯股份有限公司 | 支持多个连接管理程序访问和控制移动终端设备的系统 |
CN101446909B (zh) * | 2007-11-30 | 2011-12-28 | 国际商业机器公司 | 用于管理任务事件的方法和系统 |
CN101350022B (zh) * | 2008-08-27 | 2010-04-14 | 中国工商银行股份有限公司 | 基于数据库逻辑锁的变更处理方法 |
CN101685409B (zh) * | 2008-09-26 | 2014-07-16 | 三星电子株式会社 | 用于管理存储器的方法和存储器管理器 |
CN102214120B (zh) * | 2010-04-08 | 2013-11-06 | 英特尔公司 | 处理非相干设备的原子操作 |
CN102214120A (zh) * | 2010-04-08 | 2011-10-12 | 英特尔公司 | 处理非相干设备的原子操作 |
CN103189847A (zh) * | 2010-11-05 | 2013-07-03 | 国际商业机器公司 | 集群式数据处理系统中的存储装置管理 |
CN103189847B (zh) * | 2010-11-05 | 2016-01-06 | 国际商业机器公司 | 用于操作数据处理系统的方法和装置 |
CN103946827B (zh) * | 2011-11-22 | 2017-02-22 | 华为技术有限公司 | 用于实施内核和用户空间之间共享的锁的系统和方法 |
CN103946827A (zh) * | 2011-11-22 | 2014-07-23 | 华为技术有限公司 | 用于实施内核和用户空间之间共享的锁的系统和方法 |
CN104025031B (zh) * | 2011-12-28 | 2018-05-08 | 英特尔公司 | 减少应用中对共享存储器单元执行的顺序操作的数量 |
CN104025031A (zh) * | 2011-12-28 | 2014-09-03 | 英特尔公司 | 减少应用中对共享存储器单元执行的顺序操作的数量 |
CN104854845A (zh) * | 2012-10-04 | 2015-08-19 | 高通股份有限公司 | 使用高效的原子操作的方法和装置 |
WO2014053074A1 (en) * | 2012-10-04 | 2014-04-10 | Qualcomm Incorporated | Method and apparatus using high-efficiency atomic operations |
CN104854845B (zh) * | 2012-10-04 | 2019-07-23 | 高通股份有限公司 | 使用高效的原子操作的方法和装置 |
US10318292B2 (en) | 2014-11-17 | 2019-06-11 | Intel Corporation | Hardware instruction set to replace a plurality of atomic operations with a single atomic operation |
CN105808210A (zh) * | 2014-12-31 | 2016-07-27 | 龙芯中科技术有限公司 | 共享资源的访问方法和装置 |
CN105808210B (zh) * | 2014-12-31 | 2018-07-31 | 龙芯中科技术有限公司 | 共享资源的访问方法和装置 |
CN106385377A (zh) * | 2015-07-29 | 2017-02-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN106385377B (zh) * | 2015-07-29 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN108021597A (zh) * | 2016-10-28 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种并行计数器、服务器和一种计数方法 |
CN110231983A (zh) * | 2019-05-13 | 2019-09-13 | 北京百度网讯科技有限公司 | 数据并发处理方法、装置及系统、计算机设备及可读介质 |
CN110231983B (zh) * | 2019-05-13 | 2022-01-28 | 北京百度网讯科技有限公司 | 数据并发处理方法、装置及系统、计算机设备及可读介质 |
CN113342539A (zh) * | 2021-05-31 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CA2522096C (en) | 2012-09-18 |
US20040215858A1 (en) | 2004-10-28 |
WO2004094863A3 (en) | 2005-03-24 |
JP4410795B2 (ja) | 2010-02-03 |
KR100843548B1 (ko) | 2008-07-04 |
JP2006524381A (ja) | 2006-10-26 |
TWI265412B (en) | 2006-11-01 |
EP1620801A2 (en) | 2006-02-01 |
WO2004094863A2 (en) | 2004-11-04 |
CA2522096A1 (en) | 2004-11-04 |
CN1774699B (zh) | 2010-05-26 |
TW200511006A (en) | 2005-03-16 |
US7047337B2 (en) | 2006-05-16 |
KR20060004919A (ko) | 2006-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1774699B (zh) | 共享资源的并发访问方法和设备 | |
CN1278235C (zh) | 用于向一处理器让与资源的系统 | |
EP2411915B1 (en) | Virtual non-uniform memory architecture for virtual machines | |
CN102473106B (zh) | 虚拟环境中的资源分配 | |
JP5159884B2 (ja) | 論理区分の間におけるネットワーク・アダプタ・リソース割振り | |
US8010972B2 (en) | Application connector parallelism in enterprise application integration systems | |
CN100530079C (zh) | 用于在非均衡存储器存取计算机系统中调度任务的方法和设备 | |
US7853928B2 (en) | Creating a physical trace from a virtual trace | |
US7328438B2 (en) | Deallocation of computer data in a multithreaded computer | |
US7840965B2 (en) | Selective generation of an asynchronous notification for a partition management operation in a logically-partitioned computer | |
US20120131260A1 (en) | Hypervisor page fault processing in a shared memory partition data processing system | |
WO2012066640A1 (ja) | 計算機システム、マイグレーション方法及び管理サーバ | |
CN1991768A (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN1274123A (zh) | 分区系统的带有动态配置的外围元件互联槽控制装置 | |
US20090307432A1 (en) | Memory management arrangements | |
JP2008123040A (ja) | リソース割当方法、リソース割当プログラム、および、管理コンピュータ | |
US9792209B2 (en) | Method and apparatus for cache memory data processing | |
CN1975655A (zh) | 用于管理对存储装置的访问的方法和设备 | |
TW201201102A (en) | Resource adjustment methods and systems for virtual machines, and computer program products thereof | |
US20140237149A1 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
Whitcroft | TimWilkinson NickWilliams PeterOsmon Systems Architecture Research Centre City University London England {trs| andy| tim| njw| p. osmon}@ cs. city. ac. uk | |
US20110107035A1 (en) | Cross-logical entity accelerators |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160126 Address after: China Hongkong Quarry Bay's Road No. 979 building 23 layer Taikoo Place Lincoln Patentee after: Lenovo International Ltd Address before: New York grams of Armand Patentee before: International Business Machines Corp. |