CN1316362C - 重定位在多线程计算机中共享的计算机数据的设备和方法 - Google Patents
重定位在多线程计算机中共享的计算机数据的设备和方法 Download PDFInfo
- Publication number
- CN1316362C CN1316362C CNB2004100028249A CN200410002824A CN1316362C CN 1316362 C CN1316362 C CN 1316362C CN B2004100028249 A CNB2004100028249 A CN B2004100028249A CN 200410002824 A CN200410002824 A CN 200410002824A CN 1316362 C CN1316362 C CN 1316362C
- Authority
- CN
- China
- Prior art keywords
- thread
- data structure
- value
- pointer
- procedure code
- 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
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J37/00—Baking; Roasting; Grilling; Frying
- A47J37/04—Roasting apparatus with movably-mounted food supports or with movable heating implements; Spits
- A47J37/049—Details of the food supports not specially adapted to one of the preceding types of food supports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- A—HUMAN NECESSITIES
- A22—BUTCHERING; MEAT TREATMENT; PROCESSING POULTRY OR FISH
- A22C—PROCESSING MEAT, POULTRY, OR FISH
- A22C17/00—Other devices for processing meat or bones
- A22C17/006—Putting meat on skewers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Food Science & Technology (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了支持重定位多线程计算机中的数据结构并且不需要使用计算昂贵的信号标志或者自旋锁的设备和方法。特别是,访问数据结构由一个共享指针管理,当收到重定位数据结构的请求时,将共享指针最初设置到一个向任何随后访问指针的线程显示该数据结构是不可用的值。此外,为了寻址已经持有共享指针的拷贝的任何线程,从而能够在请求启动之后经由共享指针访问数据结构,因此监视所有这样的线程,以确定任何线程是否正在运行能够使用共享指针访问数据结构的程序码。一旦该条件被满足,就确保线程不可能潜在地经由共享指针访问数据结构,因而可随后重定位数据结构。
Description
技术领域
本发明涉及计算机和计算机软件,特别是涉及重定位多线程计算机中共享的计算机数据,该重定位(deallocation)例如与删除逻辑分区计算机中分区有关。
背景技术
假如在现代社会人们不断增加对计算机的依赖,那么计算机技术就必须推向许多前沿以跟上增涨的需求。重大研发计划的一项课题是并行操作,即并行多任务的性能。
目前已经开发了便于增加并行处理的大量计算机软件和硬件技术。多线程操作系统和核心程序已经依据软件观点开发出来,它允许计算机程序以多“线程”并行运行,以便在同一时间实质上执行多个任务。线程通常代表运行程序的独立路径。例如,对于电子商务计算机应用,可以将不同线程分配给不同客户机,以便每个客户机特定的电子商务交易在一个分离的线程中得到处理。
依据硬件观点,计算机将越来越依赖计算机微处理器来提供增加的工作负荷容量。此外,已经开发了某些支持并行运行多线程的能力的微处理器,有效地提供了可通过多个微处理器使用达到的相同性能增益。
依据软件观点,某些计算机实行了逻辑分区的概念,其中允许单个计算机基本上像多个独立的“虚拟”计算机(称之为逻辑分区)那样进行操作,该虚拟计算机具有在不同逻辑分区中分配的物理计算机(例如,处理器,存储器,输入/输出装置)的同步资源。每个逻辑分区运行一个分离的操作系统,并且从用户的来看(perspective)和从运行在逻辑分区上的软件应用程序来看,它作为一个全独立计算机进行操作。
借助逻辑分区,共享资源(通常称之为“管理器”或者分区管理器)管理逻辑分区并推动向不同逻辑分区的资源分配。例如,分区管理器可以向各个分区分配资源如处理器、工作站适配器、存储装置、存储器空间、网络适配器等,以便按照与分离的物理计算机非常相同的方式支持每个逻辑分区的比较独立的操作。
在逻辑分区方面,创建和删除各自分区而又不需要整个计算机停机和重新启动可能是理想的,这样可以确保计算机中其它分区的连续可用性。创建新分区通常不会有特殊问题,因为可以创建新数据结构支持一个没有冲撞风险的新分区。另一方面,删除分区通常具有更多问题,因为需要确保当用于分区的现有数据结构在从计算机中重定位或者移除时不再使用。
具体说,删除能够在多线程计算机环境中由多线程访问的任何数据结构,需要注意确保线程不使用删除之前的数据结构。否则,线程可能试图随后访问已经删除的数据结构,从而导致不确定结果和潜在的系统故障。
按照惯列,对许多共享数据结构的访问是通过使用信号标志或者自旋锁(spin lock)来管理的。信号标志通常被实施为与数据结构的共享指针关联的各种标志,多个线程可以读取这些标志以确定指针目前是否被一个线程使用。无论线程是否读取一个指示其它线程目前未使用该指针的信号标志,该线程都能够把信号标志设置到向所有其它线程指示该指针当前正在使用中的一个值(一个称之为“获取”信号标志的处理)。这样,当另一个线程希望访问数据结构而检测信号标志被另一个线程持有时,该线程需要等候到其它线程释放该信号标志指示指针(以及由此得到数据结构)可再次对其它线程访问的时候。因而在任何给定时间只允许一个线程持有信号标志。
信号标志和自旋锁的一个显著缺陷是,只要一个关联的数据结构需要被访问,就需要与检验和获取信号标志相关联的实质处理开销。例如,在逻辑分区计算机的情况下,大量数据结构在正常操作过程期间被频繁访问。例如用来存储临界分区配置信息的分区控制块,几乎在每次管理操作的期间都要被访问。在每次分区控制块需要被访问时请求一个线程获取信号标志,依据性能观点被认为是非常昂贵的。
因此,一种实际需要已经以支持重定位的方式出现,即采用减少的处理开销重定位多线程计算机中的数据结构。
发明内容
本发明通过提供不需要使用计算昂贵的信号标记或者自旋锁(spin lock)就可以支持多线程计算机中数据结构的重定位的设备和方法,解决了与现有技术相关联的这些和其它问题。具体而言,通过一个共享指针管理对数据结构的访问,其中当收到一个重定位数据结构的请求时,将该共享指针最初设置到这样一个值:该值向任何此后访问该指针的线程显示,该数据结构不可用。这样,能够确保在启动重定位数据结构的请求时未访问数据结构的线程此后不能获得该数据结构。
此外,为了对已经持有共享指针拷贝的任何线程寻址,从而能够在请求启动之后经由共享指针访问数据结构,应当监视所有这样的线程,以便通过确定任何线程是否正在运行能够使用共享指针访问数据结构的程序码,来确定任何线程是否仍然使用共享指针。否则,处理将等候到被确定为线程不使用共享指针的时候,一旦这一条件被满足,就可以确保线程不可能经由共享指针访问数据结构,从而可以随后重定位数据结构。
通过将一个关联的共享指针设置到唯一值而发出数据结构待重定位的信号,与在试图访问数据结构之前检验共享指针相关联的开销将明显低于获取信号标志的需要。因此,实质上加快对数据结构的访问。此外,通过监视线程以确定线程是否正在运行能够使用访问数据结构的共享指针的程序码,将不需要确定线程是否事实上正在使用共享指针。
上述处理的一个特定实施与逻辑分区计算机的分区删除有关,也就是重定位与将要被删除的分区关联的分区控制块。为了便于重定位分区控制块,可以将指向分区控制块的共享指针设置到禁止访问分区控制块的零值,并表示分区控制块不再访问任何线程。因此,随后试图访问分区控制块的任何线程将不能进行这样的访问。
此外,在这样一种实施中,认为共享指针只能经由分区管理器访问而不能被任何分区访问。因此,为了对仍然使用共享指针的任何线程(即,获得被设置到零值之前的共享指针的拷贝的线程)寻址,该实施例进行等候,直至可以确定没有任何线程仍然使用共享指针。
在该实施中,当确定一个线程待用(inactive)、处于空闲循环(idle loop)中、未运行分区管理器的程序码或者由于共享指针被设置为零值而退出分区管理器的程序码时,可以将该线程确定为未使用共享指针。如果任何这样的条件存在,就认为该线程访问数据结构的任何后续尝试都将导致共享指针的零值的恢复,而不考虑该线程随后运行的程序码将不能使用共享指针访问数据结构的情况。因此,此时可以删除分区控制块而不会对有效线程造成不良影响。
值得注意的是,关于逻辑分区计算机的本发明实施例实质上仅仅是实例,因此本发明不限于下文所公开的特定实施例。
本发明提供了一种从包含由分区管理器管理的多个逻辑分区类型的逻辑分区计算机中删除分区的方法,该逻辑分区计算机还包括在其上运行的多个线程,并且分区管理器访问与删除的分区相关联的分区控制块,该方法包括:当多个线程中的第一线程进入分区管理器的程序码时,将与该第一线程关联的顺序号递增到奇数值和偶数值之一;当第一线程离开程序码时,从奇数或偶数值的另一个递增顺序号;和通过以下方式重定位分区控制块:将指向分区控制块的共享指针设置成指示分区控制块不可用的零值;捕获顺序号的值;等候直至多个线程之每个不再使用共享指针,在等候期间监视每个线程以确定每个线程是否正在运行使用共享指针的程序码,所述确定包括响应多个条件的至少一个条件的满足来确定第一线程不再使用共享指针,所述多个条件包括:第一线程待用的第一条件,第一线程正在分区管理器的空闲循环中运行的第二条件,顺序号被设置到奇数和偶数值之一的第三条件,以及顺序号已经依据捕获值改变的第四条件;和在等候直至多个线程之每个不再使用共享指针之后,重定位分区控制块。
本发明提供了一种重定位可以被多个在计算机中运行的线程访问的数据结构的方法,该方法包括,响应重定位数据结构的请求:将指向数据结构的共享指针设置到一个预定值,该预定值向此后访问该指针的线程指示该数据结构是不可用的;通过监视每个线程以确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码,进行等候直至多个线程之每个不再使用共享指针;和当等候直至多个线程之每个不再使用共享指针之后,重定位数据结构。
形成本发明部分的权利要求说明了表征本发明的这些和其它优点和特点。然而为了更好地理解本发明,以及经过本发明的使用而得到的优点和目的,下面将结合附图以及相伴随的描述方式对本发明进行说明,其中描述了本发明的示范性实施例。
附图说明
图1是本发明逻辑分区计算机中主要部件的方框图;
图2是显示在图1的逻辑分区计算机的分区管理方面所利用的大量数据结构的分区管理存储器空间的方框图;
图3是显示由图1的计算机运行的访问分区控制块例程的程序流的流程图;
图4是显示由图1的计算机运行的访问分区管理器例程的程序流的流程图;
图5是显示由图1的计算机运行的删除逻辑分区例程的程序流的流程图;
图6是显示由图5中引出的可调度服务运行的等候例程的程序流的流程图。
具体实施方式
下面讨论的实施例便于有序地重定位多线程计算机中的数据结构,这样将不需要利用计算昂贵的信号标志和自旋锁,来确保在已经重定位数据结构之后不会有线程试图访问该数据结构。
具体而言,通过一个共享指针管理对数据结构的访问,其中当收到一个重定位数据结构的请求时,将该共享指针最初设置到向任何线程指示此后所访问的指针,是数据结构不可用的指针的一个值。当其它特有值可以用来表示数据结构不可用性时,一个合适值是零值。这样,在指针已经被设置到零值后,只要线程试图获取指针访问数据结构,就禁止该线程访问数据结构。此外,还能够保证即使数据结构已经从存储器中重定位后,该线程也不能试图访问数据结构。
数据结构的重定位可以仅发生在当数据结构被重定位后可以确保线程将不试图访问数据结构的时候。根据本发明,可以按以下方式获得这样的确保:通过监视系统中所有线程,以便通过确定任何线程是否正在运行能够使用共享指针访问数据结构的程序码,确定任何线程是否仍然使用共享指针。能够使用共享指针访问数据结构的程序码可以被认为是这样的程序码:即使当共享指针已经被设置到唯一值如零值以指示数据结构不可用之后,该码也具有保留仍然引用数据结构的共享指针的在前拷贝的潜力。只要线程正在运行这样的程序码,就存在试图使用共享指针的在前拷贝访问数据结构的风险,从而导致不确定结果以及潜在的数据恶化和/或系统故障。
例如,在下面讨论的特定实施例中,待重定位的数据结构是分区控制块,它仅仅可由逻辑分区计算机的分区管理器访问,特别是由分区管理器的不可调度(non-dispatchable)部分访问。假设在这些实施例中,只要线程进入分区管理器的程序码,就要求该线程获得用于该线程希望访问的任何分区控制块的共享指针的新拷贝。因此,在特定其享指针被设置到与重定位其关联的数据结构的尝试有关的零值(或者其它合适的唯一值)之后,只要线程进入分区管理器的程序码,就可以认为该线程将不获取指向数据结构的有效指针。因此,所述线程是,在设置与重定位关联数据结构的请求有关的共享指针的时候,正在分区管理器的程序码内运行并且还未退出该程序码的任何线程,因为存在共享指针的(目前已陈旧的)拷贝仍然存在的可能性。
在各种组合中可以检验的多个因素(factor)能够用来提供这样的保障,即保证线程不运行能够使用共享指针访问数据结构的程序码。一个因素例如确定线程是否为待用,作为一个待用线程(未运行任何指令的一个线程),当共享指针被设置到一个唯一值的时候,不能保留共享指针的陈旧拷贝。另一个因素是确定线程是否正在运行空闲循环(例如,分区管理器中的一个空闲循环),这样线程同样也不能保留共享指针的陈旧拷贝。
再一个因素是确定检测线程是当前所运行的程序码而不是在共享指针被设置到唯一值时能够使用共享指针的程序码;在这种情况下认为,当随后运行能够使用共享指针的程序码时,该线程此后必定获得共享指针的新拷贝。
再一个因素是确定检测线程在共享指针被设置到唯一值时是否已经退出能够使用该共享指针的程序码。在此情况下,认为退出该程序码后的共享指针在随后运行能够使用共享指针的程序码时,将必定获得共享指针的新拷贝。
正如以下更详细的说明,一个机构可以用来检验线程是当前运行的程序码而不是能够使用共享指针访问数据结构的程序码,以及检验线程是否退出能够使用共享指针的程序码。该机构使用当线程进入和退出程序码的特定部分时就进行修改的一个与每个线程相关联指示符。尽管可以使用各种替代的实施例,但是一个合适的指示符是:当线程进入能够访问共享指针的程序码时以及当线程退出同一程序码时递增1的顺序号。使用这样的顺序号,偶数和奇数值之一可以用来指定线程每次退出的程序码不是能够使用共享指针的程序码。此外,通过捕获与共享指针被设置到唯一值有关的顺序号值,然后监视顺序号的当前值,那么顺序号值的任何差异可以用来指示线程在需要时退出程序码从而不能使用共享指针访问数据结构的情况。
值得说明的是,也可以考虑确定线程是否正在运行能够使用共享指针访问数据结构的程序码的其它因素以及因素的组合。此外,可以在不是逻辑分区计算机的计算机中利用本发明的实施例。因此,本发明不局限于这里讨论的特定实施例。
现在转到附图,在附图中相同的标记代表图中相同部件。图1示出了本发明的逻辑分区计算机10的主要硬件部件。计算机10一般代表例如多个多用户计算机的任何一个,比如网络服务器、中型计算机、大型计算机等,例如一个IBM eServer中型计算机。然而,值得说明的是,也可以在其它计算机和数据处理器中实施本发明,例如在单用户计算机如工作站、台式计算机、便携计算机和类似物,或者在其它可编程电子装置(例如,合成嵌入式控制器等)中实施本发明。此外,也可以在非逻辑分区的多线程计算机中利用本发明。
计算机10一般包括经由总线16连接存储器14的一个或多个处理器12。每个处理器12被实施为单线程处理器,或者实施为多线程处理器,如采用被显示为合并多个硬件线程18的处理器12a。多线程处理器12a中的每个硬件线程18被驻留在计算机中的软件线程处理成几乎完全像一个独立的处理器。在这方面,为了公开的目的,单线程处理器将被认为合并了一个单硬件线程,即单一的独立运行单元。然而,值得说明的是,基于软件的多线程或者多任务可以连同单线程和多线程计算机一起使用,以便进一步支持计算机中多任务的并行性能。
此外,如图1所示,一个或多个处理器12(例如处理器12b)可以被实施为服务处理器,用来运行管理系统初始程序装入(IPL)的专用固件码,以及监视、诊断和配置系统硬件。一般来说,计算机10将包括一个服务处理器和多个系统处理器,用来运行驻留在计算机中的操作系统和应用程序,然而本发明不限于该特定实施例。在某些实施中,服务处理器可以采用不通过总线16的方式连接到计算机中的各个其它硬件部件上。
存储器14可以包括一级或多级存储装置,例如,基于DRAM的主存储器,以及一级或多级数据、指令和/或高速缓存器,服务于单处理器或者多处理器的某些高速缓存器是本领域所公知的。此外,存储器14经由总线20连接多种类型的外部装置,例如,一个或多个网络适配器22(将计算机对接网络24),一个或多个存储控制器26(将计算机与一个或多个存储装置28对接)以及一个或多个工作站控制器30(经由多个工作站适配器对接一个或者多个终端或工作站32)。
图1还显示了计算机10实现逻辑分区计算环境时利用的主要软件部件和资源的更多细节,包括由分区管理器或者管理器36管理的多个逻辑分区34。可以支持任何数量的逻辑分区是本领域公知技术,以及任何时候驻留在计算机中的逻辑分区的数量可以随着增加或者从计算机移出分区而动态改变。
在基于IBM eServer的实施例中,分区管理器36由两层程序码组成。第一层称之为不可调度(non-dispatchable)部分38,它在计算机10的固件内实现,或者是计算机10的许可外码,它被用来向各个硬件部件提供低级接口,同时将较高层例如操作系统与硬件访问的细节相隔离。固件还与服务处理器如服务处理器12b通信。不可调度部分38提供计算机10的许多低级分区管理功能,例如页表管理等。不可调度部分38没有任务的概念,它主要是从软件较高层经由功能调用来访问。
分区管理器36程序码的第二层称之为可调度(dispatchable)部分40。与没有任务概念、随着再定位中止而运行以及从软件的较高层经由功能调用访问的不可调度部分38相对照,可调度部分40具有任务概念(类似任何一个操作系统),并且随着再定位接通而运行。可调度部分通常按照与分区非常相同的方式运行,但是对用户隐瞒。可调度部分通常管理较高级分区管理操作如建立和删除分区、并行I/O维持、分配处理器、存储器和到达各个分区34的其它硬件资源等。
每个逻辑分区34通常可以被静态和/动态地分配计算机10中的一部分可用资源。例如,每个逻辑分区可以被分配一个或多个处理器12和/或一个或多个硬件线程18,以及一部分可用存储器空间。逻辑分区还可以共享特定的硬件资源如处理器,这样一个给定的处理器可以由一个以上的逻辑分区使用。在一个可替代的实施中,可以把硬件资源一次仅分配给一个逻辑分区。
附加资源,例如大容量存储器、备用存储器、用户输入、网络连接及其I/O适配器,通常按照本领域公知方式被分配给一个或多个逻辑分区。可以按照多种方式分配资源,例如以逐个总线为基础或者以逐个资源为基础分配资源,使多逻辑分区在同一总线上共享资源。某些资源甚至可以同时被分配给多个逻辑分区。
每个逻辑分区34利用操作系统42按照与不分区计算机的操作系统相同的方式控制逻辑分区的主操作。例如,可以使用可从国际商用机器公司得到的OS/400操作系统实现每个操作系统42。
每个逻辑分区34分离地或独立地操作存储空间,因而从在每个这样的逻辑分区中执行的每个用户应用(用户设备)44来看,每个逻辑分区进行与独立的不分区计算机非常相同操作。因此,用户应用通常不需要任何在分区环境中使用的特定配置。
假如逻辑分区34具有分离的虚拟计算机的性质,则可以理想地支持分区间的通信,以允许逻辑分区相互通信,好像逻辑分区位于分离的物理机器上。因此,在某些实施中,理想的情况是,在不可调度部分38中支持虚拟局域网(LAN)46,以允许逻辑分区34经由连网协议如以太网协议彼此通信。根据本发明,支持诸多分区间通信的其它方式可以得到支持。
需要说明的是,本发明可以利用其它逻辑分区环境。例如,作为一种选择,可调度部分的功能可以被合并到一个或者多个逻辑分区中,而不是利用与任何分区34分离的可调度部分40。
通常,为实现本发明实施例而运行的例程,不论被实施为操作系统的部分还是特定应用、部件、程序、物体、模块或者指令序列,或者甚至其子集,都将被称之为“计算机程序码”或者简称“程序码”。程序码通常包括一个或多个在不同时间驻留在计算机各个存储器和存储装置上的指令;并且当它被一个或者多个计算机的处理器读出和运行时,使该计算机执行运行体现本发明各个方面的步骤或者元素所必需的步骤。此外,尽管在完全起到计算机和计算机系统的上下文中已经并且将说明本发明,但是本领域熟练技术人员将会明白,本发明各个实施例都能够被配置成各种形式的程序产品,并且本发明可以同样地应用,而不考虑用来实际完成该配置的信号承载媒介的特定类型。信号承载媒介包含但不局限于可记录型媒介,比如易失性和非易失性存储器装置、软盘和其它活动盘、硬盘驱动器、磁带、光盘(例如,CD-ROM,DVD等),特别是传输型媒介如数字和模拟通信链路。
此外,此后所述的各种程序码可以根据在本发明特定实施例中所实施的范围之内的应用或者软件部件来标识。然而,应当理解的是,下面的任何特定程序术语仅仅为了方便目的而采用的,因此本发明不限于仅仅在由这种术语标识和/或暗示的任何特定应用中使用。此外,如果存在可以将计算机程序组织成例程、过程、方法、模块、物体和类似物的通常是无穷无尽的方式,以及存在程序功能可以被分配在驻留在一个典型计算机内的各种软件层(例如,操作系统,数据库API,应用程序、小程序等)中的各种方式,则应当理解为本发明不限于这里所述的程序功能的特定组织和分配。
本领域熟练技术人员将会明白,图1所示的实例环境的用意不是限定本发明。实际上,本领域熟练技术人员将会明白,使用其它可替代硬件和/或软件环境不背离本发明的范围。
如上所述,在这里所述的实施例中,执行与逻辑分区计算机的分区删除有关的数据结构的重定位。最好是,支持在逻辑分区计算机中动态建立和删除分区的能力,而又不需要初始程序装入(IPL)或者重新启动计算机。与此操作相联系,保持称之为分区控制块的数据结构,使有效分区存储用于一个关联分区的所需配置。部分逻辑分区的建立需要建立一个关联的分区控制块。同样,部分逻辑分区的删除需要重定位关联的分区控制块。
实际上,在分区管理器中特别是在通常驻留在系统固件中的其不可调度部分中所执行的每个操作都需要访问分区控制块。这种访问通常是通过使用指向分区控制块的共享指针执行,其中从指针的拷贝可以被系统中多个线程获得的观点看,该指针是共享的。通常,希望访问分区控制块的线程必须首先获得其指针的拷贝;一旦获得拷贝,就能够经过指针的相同拷贝进行进一步访问。
例如,如图2所示,分区管理器36的存储器空间50(图1)可以包括一组分区控制块52,一组共享指针54中的一个分别指向每个控制块52。
由于访问与分区管理器中执行的每个实际操作相联系的分区控制块,在任何时候一个线程运行分区管理器中的程序码,因此存在这样一个高似然性:关联的分区控制块将被该线程访问,以及该线程将获得指向此块的共享指针的拷贝。如果这种操作频繁进行,则同步访问共享资源的传统机制,如信号标志或者自旋锁,依据计算观点是非常昂贵的,有可能过度地恶化系统性能。
为了解决这一问题,此后描述的实施例得到分区删除操作实际上是异步的优点,因此,适合于较高级同步协议。此外,在分区管理器码中运行的线程通常不优先,所以此后描述的实施例也可以取得该方案的优点。
具体说,此后描述的实施例通过最初将指向一个区控制块的共享指针设置到指示该块不再可用的一个唯一值,例如零值,来处理重定位该块的请求。此外,此后描述的实施例为每个硬件或者处理器保持一个称之为顺序号的指示符,只要关联的线程或者处理器进入分区管理器的程序码(例如,作为功能调用、中断、机器检验或者系统复位的结果)就递增该指示符。当线程或者处理器离开分区管理器码时也将递增该顺序号。在该实施例中,顺序号的递增在奇偶值的范围内(例如,每次递增将1加入顺序号中),这样在适当地时候,用奇数值或者偶数值指示分区管理器的程序码中存在一个线程、例如,如果在进入分区管理器的程序码之前顺序号是奇数,并且进入时递增其值,则一个偶数值将指示分区管理器的程序码正在由该线程运行。相反,一个奇数值将指示该线程未运行分区程序码,因此该线程将没有仍然指向待重定位的分区控制块的共享指针的前一拷贝。
此外,顺序号在线程或者处理器离开和重新进入管理器的程序码时用于检测。具体说,如下文的更加详细的说明,可以在两个时间点捕获顺序号的值,这样甚至当收到重定位分区控制块的请求时开始发现该线程运行分区管理器的程序码时,顺序号值的任何变化此后也将指示该线程在某些点离开分区管理器的程序码,因而不再具有仍然指向待重定位的分区控制块的共享指针的前一拷贝。
此外,此后描述的实施例还为每个硬件线程或者处理器保留一个状态字段,该字段指示线程或者处理器是否为(1)待用(即,未运行指令),或者(2)以空闲线程等候工作(例如,按分区管理器空闲线程运行指令),实际上可以被确定为在任何情况下,线程或者处理器将没有仍然指向待重定位的分区控制块的共享指针的前一拷贝。
如图2所示,例如,每个线程或者每个处理器指示符用来确定线程或者处理器是否运行能够使用共享指针的程序码,存储合适的该指示符的一种方式是经过多个线程状态块56。每个块中被存储一个线程标识符字段58,该标识符字段58将块56连接到特定硬件线程或者处理器(单线程处理器的情况)。此外,每个块56还包括服务于上述目的的顺序号字段60和状态字段。
值得说明的是,可以使用与确定线程或者处理器是否正在运行能够使用共享指针的程序码有关的各种可替代指示符及其数据结构。因此本发明不局限于这里讨论的特定实施。例如,事实上可以使用任何一个公式实现顺序码,所述公式导致定义分别指示线程是否正在运行分区管理器的程序码的两组值。在所示的实施例中,例如两组值是奇数和偶数。此外,也可以使用不同指示符检测(1)线程目前是否正在运行分区管理器的程序码,(2)线程是否已经交叉分区管理器的程序码与其它程序码的边界。此外,也可以替代地使用其它线程状态信息。
图3-6显示了计算机10可利用的各种实例例程,这些例程按照本发明的一种方式实施逻辑分区删除以及相关联的分区控制块的重定位。具体而言,图3显示了访问分区控制块例程80,只要一个线程需要访问分区控制块,运行分区程序码的该线程就可以执行该例程。如上所述,所示实施例中的分区控制块经由共享指针访问。因此假定在一个硬件线程任何时候进入分区管理器的程序码(例如,作为功能调用和中断的结果)时,线程将需要获得指向该线程需要访问的任何分区控制块的共享指针的新拷贝。然而,还可以假定只要硬件线程离开分区管理器的程序码时,共享指针的任何现存拷贝都将被丢弃。
因此,通过首先确定正在运行例程80的当前线程已经具有指向分区控制块的拷贝,在方框82中开始例程80。例如,假定线程还没有该指针的拷贝,则方框82将控制转向方框83,以获得指向分区控制块的指针的拷贝。随后,方框84确定指针是否被设置到零,即指示分区控制块不可用的一个值。如果否,方框84则将控制转向方框86,以本领域已知的一种方式使用指针访问分区控制块。随后控制转向方框88,终止例程80并返回表示访问成功的“ok”状态。
返回到方框84,如果指针被设置到零值,控制改为转向方框90,用一个表示访问不成功的“错误”状态终止例程80。例程80的主叫(用户)将随后以适当方式处理不成功访问。此外,返回到方框82,如果指向分区控制块的指针在调用流程时已经被获取,则控制直接转向方框86,采用指针访问分区控制块,并以正常方式终止例程。
因此与每次访问指针都需要花费大量处理开销来获得信号标志或者锁的信号标志或者锁实施例相对照,可以发现例程80仅需要在检索指针的第一时间检验用于零值的指针,此时线程正在运行分区管理器的程序码。因此明显减少了路径长度和后续处理开销。
现在转到图4,该图概括地示出了访问分区管理器例程92。只有当线程从运行分区或者其它非分区管理器的程序码转换到运行分区管理器的程序码时才调用例程92,并且说明了在实际执行分区管理器中的预期任务之前(方框94)和之后(方框98),递增与线程关联的顺序号。假定在该实施例中,当线程被建立在分区管理器的程序码中时,顺序号被最初设置到一个偶数值,这样一个奇数值指示该线程正在运行的程序码不是分区管理器的程序码。
将会理解的是,方框94、96和98通常由分区管理器的程序码执行,尽管在某些实施例中。其它程序码如驻留在一个分区中的程序码可以执行一个或多个这些操作。此外,将会明白,在某些实例中,当进入和离开程序码时启动顺序号递增的分区管理器的程序码可以只包括分区管理器的程序码的一个不可调度部分,或者作为选择,包括分区管理器的程序码的非调用和可调度部分。
这里没有单独说明用于每个线程或者处理器的状态字段,作为状态字段的设置,例如指示当线程是待用的(未运行指令)或者在分区管理器空闲循环中等候工作时,通常只要线程的状态改变就仅仅把一个合适的写并入专用状态字段。
图5说明了与删除分区有关的在计算机10中执行的一个删除逻辑分区例程100。在所示的实施例中,经由来自计算机用户接口的删除一个特定分区的请求启动例程100。响应该请求并且如方框102所示,服务处理器可以把该请求通知给分区管理器的可调度部分,导致分区管理器的可调度部分中计算机增益控制的一个线程。如方框104所示,可调度部分调用分区管理器的不可调度部分中的一个服务启动用于待删除的分区的分区控制块的删除,特别是,这一工作是通过把分区控制块设置到零值实现的。然而,用于该指针前一拷贝可以被存储在不可调度部分中,以便于随后重定位分区控制块。
如方框106所示,一旦指针已经被设置到零值,调用就将控制返回到分区管理器的可调度部分,进行等待直至可以被确定为指针不再被计算机中的任何线程使用。此后,如方框108所示,可调度部分发出对不可调度部分的一个调度,以重定位分区控制块的存储器。然后控制返回到可调度部分,随后完成充分删除分区所需的任何其它操作,如方框110所示。然后完成例程100。
图6示出了当在例程100的方框106中等待时,由分区管理器的可调度部分运行的一个示范性等待例程120。具体而言,例程120可以通过在计算机中准备有效线程(或者处理器)的一个比特掩码,在方框120中开始。然后,在方框124中捕获用于每个有效线程(或处理器)的顺序码,并且在方框126中启动一个循环,进行等候直至可以被确定为没有有效线程能够经由共享指针的在前拷贝访问分区控制块,其中该共享指针已经被设置到与分区控制块的重定位有关的零值。
在特殊方框126中启动循环,以处理在方框122中准备的比特掩码中标识的每个有效线程。对于每个这样的线程,控制转向方框128、130、132和134,以检验表示一个线程是否能够使用分区控制块的共享指针在前或者陈旧拷贝的四个因素。
方框128和130例如确定用于线程的状态字段是否指示线程处于空闲状态或者循环中,或者待用。方框132确定线程的当前顺序号是否为奇数值,该奇数值指示线程正在运行的程序码不是分区管理器的程序码。方框134确定线程的当前顺序号是否不同于在方框124中捕获的顺序号,以指示在重定位分区控制块的处理被启动以及指针被设置到零值时的某些后续点,线程已经离开分区管理器的程序码(并且可能重新进入这样的程序码)。
在方框128-134中检验的条件是真实的任何时候,控制转到方框136,以清除与比特掩码相关联的比特。反之,如果方框128-134中检验的条件没有一个是真实的,则跳过方框136,并且控制直接转到方框126,使与仍然设置在比特掩码中的线程相关联的比特指示该线程仍然运行能够使用共享指针的程序码。
一旦已经处理所有有效线程,方框126就把控制转到方框138,以确定比特掩码是否等于零,零的比特掩码指示线程不能使用共享指针访问分区控制块。如果是,则方框138终止例程120,接着可以进行重定位分区控制块的处理。另外,只要任何有效线程仍然运行能够使用共享指针访问分区控制块的分区管理器的程序码,方框138就把控制转到方框140,以延迟某些时段,然后重新开始方框126的循环,再次轮询所有有效线程。直到未检测到有效线程可能潜在地保留共享指针的拷贝以及访问数据结构时,例程120才将重复方框126的循环。
本领域的普通技术人员将会明白这里描述的实施例的有益于公开的各种修改。因此本发明由权利要求确定。
Claims (31)
1、一种从包含由分区管理器管理的多个逻辑分区类型的逻辑分区计算机中删除分区的方法,该逻辑分区计算机还包括在其上运行的多个线程,并且分区管理器访问与删除的分区相关联的分区控制块,该方法包括:
当多个线程中的第一线程进入分区管理器的程序码时,将与该第一线程关联的顺序号递增到奇数值和偶数值之一;
当第一线程离开程序码时,从所述奇数值或偶数值之一再递增顺序号;和
通过以下方式重定位分区控制块:
将指向分区控制块的共享指针设置成指示分区控制块不可用的零值;
捕获顺序号的值;
等候直至多个线程之每个不再使用共享指针,在等候期间监视每个线程以确定每个线程是否正在运行使用共享指针的程序码,所述确定包括响应多个条件的至少一个条件的满足来确定第一线程不再使用共享指针,所述多个条件包括:第一线程待用的第一条件,第一线程正在分区管理器的空闲循环中运行的第二条件,顺序号被设置到奇数和偶数值之一的第三条件,以及顺序号已经依据捕获值改变的第四条件;和
在等候直至多个线程之每个不再使用共享指针之后,重定位分区控制块。
2、一种重定位可以被多个在计算机中运行的线程访问的数据结构的方法,该方法包括,响应重定位数据结构的请求:
将指向数据结构的共享指针设置到一个预定值,该预定值向此后访问该指针的线程指示该数据结构是不可用的;
通过监视每个线程以确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码,进行等候直至多个线程之每个不再使用共享指针;和
当等候直至多个线程之每个不再使用共享指针之后,重定位数据结构。
3、根据权利要求2所述的方法,其中确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码包括确定多个线程中第一线程是否待用。
4、根据权利要求2所述的方法,其中确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码包括确定多个线程中第一线程是否正在运行空闲循环。
5、根据权利要求4所述的方法,其中空闲循环是一个分区管理器空闲循环。
6、根据权利要求2所述的方法,其中确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码包括:确定与多个线程中第一线程相关联的指示符是否指示第一线程目前正在运行程序码。
7、根据权利要求2所述的方法,其中确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码包括:确定与多个线程中第一线程相关联的指示符是否指示第一线程已经离开程序码。
8、根据权利要求2所述的方法,其中确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码包括:确定与多个线程中第一线程相关联的指示符是否指示第一线程目前正在运行程序码或者第一线程已经离开程序码,其中该指示符包括当第一线程进入程序码时从第一值更新到第二值的顺序号,以及当第一线程离开程序码时从第二值更新到第三值的顺序号,和其中,确定与第一线程相关联的指示符是否指示第一线程已经离开程序码包括将该指示符与其旧值进行比较。
9、根据权利要求2所述的方法,还包括:
当多个线程中第一线程进入程序码时,将与该第一线程关联的顺序号从第一组值中选择的第一值递增到从第二组值中选择的第二值;
当第一线程离开程序码时,将顺序号从第二值递增到从第一组值选出的第三值;和
其中,等候直至多个线程之每个不再使用共享指针包括捕获监视每个线程之前的顺序号的值,其中确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码包括确定与第一线程关联的顺序号是否具有选自第二组值的一个值,以及确定顺序号是否具有不同于捕获值的一个值。
10、根据权利要求9所述的方法,其中第一组值由奇数组成,第二组值由偶数组成。
11、根据权利要求2所述的方法,其中计算机是逻辑分区计算机,以及其中程序码包括可访问计算机中多个逻辑分区的分区管理器。
12、根据权利要求11所述的方法,其中程序码包括分区管理器的不可调度部分。
13、根据权利要求11所述的方法,其中数据结构包括由分区管理器使用的分区控制块。
14、根据权利要求2所述的方法,其中将共享指针设置到预定值包括将共享指针设置到零值。
15、根据权利要求2所述的方法,其中多个线程包括在单线程处理器上运行的第一线程。
16、根据权利要求2所述的方法,其中多个线程包括在多线程处理器上运行的第一和第二线程。
17、一种设备,包括:
一个存储器,其内驻留有数据结构;
至少一个处理器,被配置来运行多个线程;和
重定位数据结构装置,包括:响应重定位数据结构的请求,将共享指针设置到一个向此后访问该指针的线程指示数据结构是不可用的预定值的部件,通过监视每个线程以确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件,以及进行等候直至多个线程之每个不再使用共享指针时,重定位数据结构的部件。
18、根据权利要求17所述的设备,其中所述重定位数据结构装置还包括通过确定多个线程中第一线程是否无效,来确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件。
19、根据权利要求17所述的设备,其中所述重定位数据结构装置还包括通过确定多个线程中第一线程是否正在运行空闲循环,来确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件。
20、根据权利要求19所述的设备,其中所述空闲循环是一个分区管理器空闲循环。
21、根据权利要求17所述的设备,其中重定位数据结构装置还包括确定与多个线程中第一线程相关联的指示符是否指示第一线程目前正在运行程序码,来确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件。
22、根据权利要求17所述的设备,其中重定位数据结构装置还包括通过确定与多个线程中第一线程相关联的指示符是否指示第一线程已经离开程序码,来确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件。
23、根据权利要求17所述的设备,其中重定位数据结构装置还包括通过确定与多个线程中第一线程相关联的指示符是否指示第一线程目前正在运行程序码或者第一线程已经离开程序码,来确定一个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件,其中该指示符包括当第一线程进入程序码时从第一值更新到第二值的顺序号,以及当第一线程离开程序码时从第二值更新到第三值的顺序号;并且重定位数据结构装置还包括通过将该指示符与其旧值进行比较,来确定与第一线程相关联的指示符是否指示第一线程已经离开程序码的部件。
24、根据权利要求17所述设备,其中重定位数据结构装置还包括:当多个线程中第一线程进入程序码时,将与该第一线程关联的顺序号从第一组值中选择的第一值递增到从第二组值中选择的第二值的部件;以及当第一线程离开程序码时,将顺序号从第二值递增到从第一组值选出的第三值的部件;其中,重定位数据结构装置还包括通过捕获在监视每个线程之前的顺序号的值,进行等候直至多个线程之每个不再使用共享指针的部件;重定位数据结构装置还包括通过确定与第一线程关联的顺序号是否具有选自第二组值的一个值,以及确定顺序号是否具有不同于捕获值的一个值,来确定每个线程是否正在运行能够使用共享指针访问数据结构的程序码的部件。
25、根据权利要求24所述的设备,其中第一组值由奇数组成,第二组值由偶数组成。
26、根据权利要求17所述的设备,还包括逻辑分区计算机,重定位数据结构装置包括可访问至少在一个处理器上运行的多个逻辑分区的分区管理器。
27、根据权利要求26所述的设备,其中重定位数据结构装置包括分区管理器的不可调度部分。
28、根据权利要求26所述的设备,其中数据结构包括由分区管理器使用的分区控制块。
29、根据权利要求17所述的设备,其中重定位数据结构装置还包括通过把共享指针设置到零值,来将共享指针设置到预定值的部件。
30、根据权利要求17所述的设备,其中至少一个处理器包括一个单线程处理器。
31、根据权利要求17所述的设备,其中至少一个处理器包括多线程处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/400,702 | 2003-03-27 | ||
US10/400,702 US7328438B2 (en) | 2003-03-27 | 2003-03-27 | Deallocation of computer data in a multithreaded computer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1534478A CN1534478A (zh) | 2004-10-06 |
CN1316362C true CN1316362C (zh) | 2007-05-16 |
Family
ID=32989262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100028249A Expired - Fee Related CN1316362C (zh) | 2003-03-27 | 2004-01-17 | 重定位在多线程计算机中共享的计算机数据的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US7328438B2 (zh) |
JP (1) | JP3940404B2 (zh) |
KR (1) | KR100553917B1 (zh) |
CN (1) | CN1316362C (zh) |
TW (1) | TWI267782B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US7028157B2 (en) * | 2003-04-24 | 2006-04-11 | International Business Machines Corporation | On-demand allocation of data structures to partitions |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US20050047439A1 (en) * | 2003-08-26 | 2005-03-03 | Madajczak Tomasz Bogdan | System to process packets according to an assigned sequence number |
US7343513B1 (en) * | 2003-09-24 | 2008-03-11 | Juniper Networks, Inc. | Systems and methods for recovering memory |
US8860737B2 (en) * | 2003-10-29 | 2014-10-14 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
US7836276B2 (en) * | 2005-12-02 | 2010-11-16 | Nvidia Corporation | System and method for processing thread groups in a SIMD architecture |
US8174531B1 (en) | 2003-10-29 | 2012-05-08 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
TWI252412B (en) * | 2004-12-24 | 2006-04-01 | Hon Hai Prec Ind Co Ltd | A system and method for managing main memory of a network server |
US7317514B2 (en) * | 2005-02-03 | 2008-01-08 | International Business Machines Corporation | System and method for optimizing heat management |
US8402224B2 (en) * | 2005-09-20 | 2013-03-19 | Vmware, Inc. | Thread-shared software code caches |
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 |
US7434032B1 (en) | 2005-12-13 | 2008-10-07 | Nvidia Corporation | Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators |
EP1936907A1 (en) * | 2006-12-12 | 2008-06-25 | The Sporting Exchange Ltd. | Transaction processing system |
US9367321B2 (en) * | 2007-03-14 | 2016-06-14 | Xmos Limited | Processor instruction set for controlling an event source to generate events used to schedule threads |
US8185722B2 (en) * | 2007-03-14 | 2012-05-22 | XMOS Ltd. | Processor instruction set for controlling threads to respond to events |
US8087027B2 (en) * | 2007-03-29 | 2011-12-27 | International Business Machines Corporation | Computer program product and system for deferring the deletion of control blocks |
US8209683B2 (en) * | 2007-04-17 | 2012-06-26 | International Business Machines Corporation | System and method for probing hypervisor tasks in an asynchronous environment |
US8645974B2 (en) * | 2007-08-02 | 2014-02-04 | International Business Machines Corporation | Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device |
US8176487B2 (en) * | 2007-08-02 | 2012-05-08 | International Business Machines Corporation | Client partition scheduling and prioritization of service partition work |
US20100191814A1 (en) * | 2008-12-23 | 2010-07-29 | Marco Heddes | System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween |
US9043363B2 (en) * | 2011-06-03 | 2015-05-26 | Oracle International Corporation | System and method for performing memory management using hardware transactions |
US8566816B2 (en) * | 2011-11-01 | 2013-10-22 | Lsi Corporation | Code synchronization |
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
US9244828B2 (en) * | 2012-02-15 | 2016-01-26 | Advanced Micro Devices, Inc. | Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel |
EP2831720A4 (en) * | 2012-03-30 | 2015-12-09 | Intel Corp | PREFERRING MEDIA DEVICES WITH DETERMINED FUNCTIONS |
GB2516083A (en) | 2013-07-11 | 2015-01-14 | Ibm | Virtual Machine Backup |
GB2516087A (en) | 2013-07-11 | 2015-01-14 | Ibm | Virtual Machine Backup |
WO2015112614A1 (en) | 2014-01-21 | 2015-07-30 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
WO2015200376A1 (en) * | 2014-06-23 | 2015-12-30 | Oracle International Corporation | System and method for providing a work manager in a multitenant application server environment |
CN104216767B (zh) * | 2014-09-18 | 2017-10-31 | 东软集团股份有限公司 | 多线程之间访问共享数据的方法及装置 |
GB2532424B (en) | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
CN106484776B (zh) * | 2016-09-12 | 2020-01-10 | 天脉聚源(北京)科技有限公司 | 一种基于多线程的数据处理方法及装置 |
TWI735520B (zh) * | 2017-01-24 | 2021-08-11 | 香港商阿里巴巴集團服務有限公司 | 調整元件邏輯執行緒數量的方法及裝置 |
US10719350B2 (en) * | 2017-10-10 | 2020-07-21 | Sap Se | Worker thread manager |
US11010161B2 (en) * | 2018-03-31 | 2021-05-18 | Micron Technology, Inc. | Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric |
US10783009B2 (en) * | 2018-04-20 | 2020-09-22 | Huawei Technologies Co., Ltd. | Systems and methods for dynamically switching synchronization strategies for accessing data structures |
US10877823B1 (en) | 2019-12-10 | 2020-12-29 | Cisco Technology, Inc. | High performance in-memory communication infrastructure for asymmetric multiprocessing systems without an external hypervisor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304949B1 (en) * | 1997-08-22 | 2001-10-16 | U.S. Philips Corporation | Data processor with localized memory reclamation |
US6338073B1 (en) * | 1998-06-20 | 2002-01-08 | U.S. Philips Corporation | Finalization in incremental garbage collectors |
US6381738B1 (en) * | 1999-07-16 | 2002-04-30 | International Business Machines Corporation | Method for optimizing creation and destruction of objects in computer programs |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS628234A (ja) | 1985-07-03 | 1987-01-16 | Nec Corp | 共用プログラム制御方式 |
JPS63141148A (ja) | 1986-12-03 | 1988-06-13 | Nec Corp | 共用デ−タエリア自動解放制御方式 |
JPH04302339A (ja) | 1991-03-29 | 1992-10-26 | Nec Corp | 共有メモリエリア管理機構 |
JP2915612B2 (ja) | 1991-05-09 | 1999-07-05 | 富士通株式会社 | 共有領域管理方式 |
US5398334A (en) * | 1992-04-06 | 1995-03-14 | General Electric Company | System for automatic garbage collection using strong and weak encapsulated pointers |
US5499329A (en) * | 1992-04-30 | 1996-03-12 | Ricoh Company, Ltd. | Method and system to handle context of interpretation in a document processing language |
CA2100540A1 (en) | 1992-10-19 | 1994-04-20 | Jonel George | System and method for performing resource reconfiguration in a computer system |
JPH07114470A (ja) | 1993-10-19 | 1995-05-02 | Nec Corp | 共有データ管理システム |
US5857102A (en) * | 1995-03-14 | 1999-01-05 | Sun Microsystems, Inc. | System and method for determining and manipulating configuration information of servers in a distributed object environment |
US5872973A (en) * | 1995-10-26 | 1999-02-16 | Viewsoft, Inc. | Method for managing dynamic relations between objects in dynamic object-oriented languages |
US6125352A (en) * | 1996-06-28 | 2000-09-26 | Microsoft Corporation | System and method for conducting commerce over a distributed network |
US6088739A (en) * | 1996-06-28 | 2000-07-11 | Microsoft Corporation | Method and system for dynamic object clustering |
US6044393A (en) | 1996-11-26 | 2000-03-28 | Global Maintech, Inc. | Electronic control system and method for externally and directly controlling processes in a computer system |
US5956754A (en) * | 1997-03-03 | 1999-09-21 | Data General Corporation | Dynamic shared user-mode mapping of shared memory |
JPH10293695A (ja) | 1997-04-22 | 1998-11-04 | Hitachi Ltd | 論理計算機システムの動的再構成方式 |
US6535878B1 (en) * | 1997-05-02 | 2003-03-18 | Roxio, Inc. | Method and system for providing on-line interactivity over a server-client network |
US5895492A (en) | 1997-05-28 | 1999-04-20 | International Business Machines Corporation | Processor associated blocking symbol controls for serializing the accessing of data resources in a computer system |
JPH1165863A (ja) | 1997-08-26 | 1999-03-09 | Hitachi Ltd | 共有資源管理方法 |
US6633916B2 (en) * | 1998-06-10 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for virtual resource handling in a multi-processor computer system |
US6427161B1 (en) * | 1998-06-12 | 2002-07-30 | International Business Machines Corporation | Thread scheduling techniques for multithreaded servers |
US6862635B1 (en) * | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US6721898B1 (en) * | 1999-02-03 | 2004-04-13 | William H. Gates, III | Method and system for tracking software components |
US6691146B1 (en) | 1999-05-19 | 2004-02-10 | International Business Machines Corporation | Logical partition manager and method |
US6279046B1 (en) | 1999-05-19 | 2001-08-21 | International Business Machines Corporation | Event-driven communications interface for logically-partitioned computer |
US7194740B1 (en) | 1999-05-28 | 2007-03-20 | Oracle International Corporation | System for extending an addressable range of memory |
US6687904B1 (en) | 1999-11-22 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for selecting a locking policy based on a per-object locking history |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
JP3611295B2 (ja) | 2000-03-09 | 2005-01-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータシステム、メモリ管理方法及び記憶媒体 |
WO2001082057A2 (en) * | 2000-04-18 | 2001-11-01 | Sun Microsystems, Inc. | Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value |
WO2001080015A2 (en) * | 2000-04-18 | 2001-10-25 | Sun Microsystems, Inc. | Concurrent shared object implemented using a linked-list with amortized node allocation |
US6658652B1 (en) * | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing |
US7117502B1 (en) * | 2000-11-10 | 2006-10-03 | Sun Microsystems, Inc. | Linked-list implementation of a data structure with concurrent non-blocking insert and remove operations |
US20030088483A1 (en) * | 2000-12-28 | 2003-05-08 | Bissell, Inc. | System, method and computer program product for an enhanced E-commerce graphical user interface |
US6993770B1 (en) * | 2001-01-12 | 2006-01-31 | Sun Microsystems, Inc. | Lock free reference counting |
US6820207B2 (en) * | 2001-03-01 | 2004-11-16 | International Business Machines Corporation | Method for rebooting only a specific logical partition in a data processing system as per a request for reboot |
US6971084B2 (en) * | 2001-03-02 | 2005-11-29 | National Instruments Corporation | System and method for synchronizing execution of a batch of threads |
US6711700B2 (en) * | 2001-04-23 | 2004-03-23 | International Business Machines Corporation | Method and apparatus to monitor the run state of a multi-partitioned computer system |
US6865688B2 (en) | 2001-11-29 | 2005-03-08 | International Business Machines Corporation | Logical partition management apparatus and method for handling system reset interrupts |
US7194495B2 (en) * | 2002-01-11 | 2007-03-20 | Sun Microsystems, Inc. | Non-blocking memory management mechanism for supporting dynamic-sized data structures |
US6842759B2 (en) * | 2002-01-16 | 2005-01-11 | International Business Machines Corporation | Single-instance class objects across multiple JVM processes in a real-time system |
US6862674B2 (en) | 2002-06-06 | 2005-03-01 | Sun Microsystems | Methods and apparatus for performing a memory management technique |
US20040107227A1 (en) * | 2002-12-03 | 2004-06-03 | International Business Machines Corporation | Method for efficient implementation of dynamic lock-free data structures with safe memory reclamation |
US7403961B1 (en) * | 2003-03-14 | 2008-07-22 | Xilinx, Inc. | Dangling reference detection and garbage collection during hardware simulation |
US7139855B2 (en) | 2003-04-24 | 2006-11-21 | International Business Machines Corporation | High performance synchronization of resource allocation in a logically-partitioned system |
-
2003
- 2003-03-27 US US10/400,702 patent/US7328438B2/en active Active
-
2004
- 2004-01-17 CN CNB2004100028249A patent/CN1316362C/zh not_active Expired - Fee Related
- 2004-03-03 TW TW093105594A patent/TWI267782B/zh not_active IP Right Cessation
- 2004-03-15 KR KR1020040017403A patent/KR100553917B1/ko not_active IP Right Cessation
- 2004-03-15 JP JP2004073504A patent/JP3940404B2/ja not_active Expired - Lifetime
-
2007
- 2007-10-29 US US11/926,967 patent/US8209692B2/en not_active Expired - Fee Related
-
2008
- 2008-01-08 US US11/970,816 patent/US8234645B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304949B1 (en) * | 1997-08-22 | 2001-10-16 | U.S. Philips Corporation | Data processor with localized memory reclamation |
US6338073B1 (en) * | 1998-06-20 | 2002-01-08 | U.S. Philips Corporation | Finalization in incremental garbage collectors |
US6381738B1 (en) * | 1999-07-16 | 2002-04-30 | International Business Machines Corporation | Method for optimizing creation and destruction of objects in computer programs |
Also Published As
Publication number | Publication date |
---|---|
JP3940404B2 (ja) | 2007-07-04 |
JP2004295882A (ja) | 2004-10-21 |
KR100553917B1 (ko) | 2006-02-24 |
TW200502848A (en) | 2005-01-16 |
US20080046889A1 (en) | 2008-02-21 |
US20080134188A1 (en) | 2008-06-05 |
CN1534478A (zh) | 2004-10-06 |
KR20040084646A (ko) | 2004-10-06 |
US8234645B2 (en) | 2012-07-31 |
US20040194096A1 (en) | 2004-09-30 |
US7328438B2 (en) | 2008-02-05 |
US8209692B2 (en) | 2012-06-26 |
TWI267782B (en) | 2006-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1316362C (zh) | 重定位在多线程计算机中共享的计算机数据的设备和方法 | |
Bernstein | Sequoia: A fault-tolerant tightly coupled multiprocessor for transaction processing | |
CN100430945C (zh) | 动态切换将事务数据写入盘中的模式的设备和方法 | |
CN1774699B (zh) | 共享资源的并发访问方法和设备 | |
CN100485676C (zh) | 文件系统串行化重新初始化装置、方法和系统 | |
US6832298B2 (en) | Server system operation control method | |
US7934119B2 (en) | Failure recovery method | |
CN100568182C (zh) | 在逻辑地分区的数据处理系统内分布工作的方法和系统 | |
US5442785A (en) | Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor | |
KR102051282B1 (ko) | 선택적 리소스 이동을 이용하는 네트워크 결합 메모리 | |
EP0566967A2 (en) | Method and system for time zero backup session security | |
CN101271409A (zh) | 用于迁移逻辑分区的装置和方法以及产品 | |
CA2310099A1 (en) | Computer system transparent data migration | |
CN1629775A (zh) | 用于机器存储器功率和可用性管理的方法和系统 | |
JPH061447B2 (ja) | デ−タベ−スのバックアップの方法 | |
EP2561443A1 (en) | Monitoring writes using thread-local write barrier buffers and soft synchronization | |
CN101137984A (zh) | 用于分布加载数据库的系统、方法和软件 | |
CN101154185A (zh) | 软件运行时执行恢复与重放方法 | |
US7165160B2 (en) | Computing system with memory mirroring and snapshot reliability | |
CN1231449A (zh) | 基于请求的同步总线操作 | |
US7290099B2 (en) | Using parallelism for clear status track processing during error handling behavior in a storage system | |
US20080294866A1 (en) | Method And Apparatus For Memory Management | |
CN101158920A (zh) | 一种检测操作系统故障的方法和装置 | |
US20080184275A1 (en) | Resource ejectability in multiprocessor systems | |
JP2003076671A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070516 Termination date: 20120117 |