CN1906598A - 信息处理设备、存储区管理方法和计算机程序 - Google Patents
信息处理设备、存储区管理方法和计算机程序 Download PDFInfo
- Publication number
- CN1906598A CN1906598A CNA2005800014770A CN200580001477A CN1906598A CN 1906598 A CN1906598 A CN 1906598A CN A2005800014770 A CNA2005800014770 A CN A2005800014770A CN 200580001477 A CN200580001477 A CN 200580001477A CN 1906598 A CN1906598 A CN 1906598A
- Authority
- CN
- China
- Prior art keywords
- thread
- formation
- memory block
- information
- release
- 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
- 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]
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
在有多个线程并行存取存储区的时候,以无差错的方式进行有效的存储区分配。含有登录时间信息的线程信息的线程列表是作为线程管理信息来存储的,由于线程是作为一个数据处理单元,因此,根据每个线程来记录登录时间信息;含有释放请求时间的释放队列是作为存储区管理信息存储的,在此,该释放请求时间是根据每个区单元记录的,并与请求释放但尚未释放的存储区相关。在存储区的分配进程中,比较设置在含于释放队列内的每个队列成分中的释放请求时间和在线程列表中的每个队列成分的最老的登录时间。仅在与具有释放请求时间的队列成分相应的存储区上执行存储区分配进程,在此,该释放请求时间是设置在最老的登录时间之前的。在此配置中,能为分配可靠地选择未存取的存储区。
Description
技术领域
本发明涉及一个信息处理设备、一个存储区管理方法和一个计算机程序。更具体地说,本发明涉及一个信息处理设备、一个存储区管理方法和一个计算机程序,用于在有多个线程(threads)并行访问和更新存储区的配置中分配一个合适的存储区并执行存储管理进程。
背景技术
在单个的操作系统或多个操作系统上执行多个数据处理程序时,系统共用的硬件,例如,CPU或存储器,是按照时间顺序来依次切换的。例如,可用区段管理软件程序来执行多个操作系统(OS)的进程(任务)调度。如果OS(α)和OS(β)共存于一个单独的系统中,其中OS(α)的进程是区段A,OS(β)的进程是区段B,那么,区段管理软件程序就为区段A和区段B确定调度,并用根据由所确定的调度而分配的硬件资源来执行这些操作系统的进程。
专利文献1揭示了一个多OS系统的任务管理技术。根据此揭示内容,并按照加在紧急性进程上的优先级来调度要由多个操作系统执行的任务。
在至少一个操作系统(OS)上执行多个程序的时候,存在多个线程,它们中的每一个都定义为一个程序执行单元,并且每个线程都使用一个作为共用资源的存储器。如果企图将由指定线程当前存取的一个特定的存储区释放给另一个线程的话,就会引发一个存取差错。在已知的工艺技术中,通过设置一个禁止中断期来防止差错引发。禁止中断期的设置导致了另外的问题,例如,进程延迟。
[专利文献1]未经审查的日本专利申请出版物No.2003-345612。
发明内容
鉴于上述的问题研发了此本发明,本发明的一个目的是提供一个信息处理设备、一个存储区管理方法和一个计算机程序,用以分配合适的存储区,并在多线程并行访问和更新存储区的配置中,按照无存取差错的方式执行存储管理进程。
解决这些问题的方法如下。
根据本发明的第一方面,信息处理设备包括:一个用于根据每个数据处理单元来管理线程信息的线程管理器和一个用于管理存储区的存储区管理器。该线程管理器存储一个包含登录时间信息的线程列表(thread list)作为线程管理信息,该登录时间信息是根据每个线程并作为操作系统的功能调用时间由数据处理程序记录的。存储区管理器存储一个含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据区单元记录的,并与请求释放但还尚未释放的存储区有关;在存储区的分配进程中,存储区管理器将设置在含于释放队列内的每个队列成分中的释放请求时间与线程列表中的每个队列成分的最老的登录时间相比较,并分配与具有释放请求时间的队列成分相应的存储区,在此,该释放请求时间是设置在最老的登录时间之前的。
在本发明的一个具体实施例的信息处理设备中,线程管理器相应于多个处理器中的每一个产生一个线程列表,并将含于登录时间信息中的最老的登录时间记录到每个线程列表的标题中,在此,该登录时间信息是设置在含于线程列表内的线程信息中的,并管理所记录的、设置来要由另一个处理器访问的信息。
在本发明的一个具体实施例的信息处理设备中,存储区管理器访问所有的最老的登录时间信息,该信息是设置在与由线程管理器管理的处理器相应的线程列表的标题中,并从最老的登录时间信息中选择最老的登录时间中的最老的一个,在此,最老的登录时间信息是设置在与全部处理器相应的线程列表的标题中的,将选中的最老的登录时间与设置在含于释放队列内的每个队列成分中的释放请求时间相比较,并分配与具有释放请求时间的队列成分相应的一个存储区,在此,该释放请求时间是设置在所选择的最老的登录时间之前的。
在本发明的一个具体实施例的信息处理设备中,线程管理器在线程列表的标题和一个表成分上记录另一个表成分的标识信息,并将该线程列表编制成为一个允许从标题中依次获取每个成分的一个表,并在线程登录或线程退役时更新设置在标题或表成分之一中的标识信息。
在本发明的一个具体实施例的信息处理设备中,存储区管理器在释放队列的标题和一个队列成分上记录另一个队列成分的标识信息,并将释放队列编制成为一个允许从标题中依次获取每个队列成分的表,并在设置一个新队列或取消一个队列时,更新设置在标题和队列成分之一中的标识信息。
在本发明的一个具体实施例的信息处理设备中,存储区管理器根据每个堆单元来执行存储区管理进程,作为具有限定尺寸的存储区的堆单元是相应于每个处理器而设置的;存储区管理器还存储含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据一个堆单元来记录的,并与请求释放但尚未释放的堆有关;在存储区的分配进程内,在含于释放队列内的队列成分中,分配根据每个堆单元记录的存储区。
在本发明的一个具体实施例的信息处理设备中,存储区管理器检查由访问存储区的弱指示符组成的弱指示符链,该存储区是与含于释放队列中的队列成分相对应的,如果在弱指示符链中没有弱指示符存在,就从释放队列中除去该队列成分,并释放与此队列成分相应的存储区。
在本发明的一个具体实施例的信息处理设备中,存储区管理器检查含于弱指示符链中的存储区的退役标志,该弱指示符链是由一个弱指示符组成的,该弱指示符访问与含于释放队列内的队列成分相应的存储区以及包含弱指示符访问区的存储区,如果退役标志表示一个退役状态,就从释放队列中除去该队列成分,并释放与该队列成分相应的存储区。
根据本发明的第二方面,一个存储区管理方法包括如下步骤:一个线程管理步骤,该步骤产生和更新一个线程列表,该线程列表是由含有登录时间信息的线程信息组成的,该登录时间信息是根据每个线程并作为操作系统的功能调用时间由数据处理程序记录的;一个存储区管理步骤,该步骤产生和更新含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据每个区记录的,并与请求释放但尚未释放的存储区相关;一个存储区分配步骤,在存储区分配进程中,该步骤通过比较设置在含于释放队列内的每个队列成分中的释放请求时间与线程列表中的每个队列成分的最老的登录时间,来分配与具有登录请求时间的队列成分相应的存储区,在此,该登录请求时间是设置在最老的登录时间之前的。
在本发明的一个具体实施例的存储区管理方法中,线程管理步骤包括:相应于多个处理器中的每一个产生一个线程列表;将含于登录时间信息内的最老的登录时间记录到每个线程列表的标题中,在此,该登录时间信息是设置在含于线程列表内的线程信息中的;管理所记录的、要由另一个处理器访问的信息。
在本发明的一个具体实施例的存储区管理方法中,存储区分配步骤包括:访问设置在与处理器相应的线程列表的标题中的所有的最老的登录时间信息;在与全部处理器相应的线程列表的标题中,从最老的登录时间信息中选择最老的登录时间中的最老的一个,该最老的登录时间信息设置在与全部处理器相应的线程列表的标题中;将所选择的最老的登录时间与设置在含于释放队列内的每个队列成分中的释放请求时间相比较;分配与具有释放请求时间的队列成分相应的存储区,在此,该释放请求时间是设置在所选择的最老的登录时间之前的。
在本发明的一个具体实施例的存储区管理方法中,线程管理步骤包括:在线程列表的标题和一个表成分上记录另一个表成分的标识信息,将线程列表编制成为一个允许从标题中依序获取每个成分的一个表,并在线程登录或线程退役时,更新设置在标题和表成分之一中的标识信息。
在本发明的一个具体实施例的存储区管理方法中,存储区管理步骤包括:在释放队列的标题和一个队列成分上记录另一个队列成分的标识信息;将释放队列编制成为允许从标题中依次获取每个队列成分的一个表;在设置一个新队列或取消一个队列时,更新设置在标题或队列成分之一中的标识信息。
在本发明的一个具体实施例的存储区管理方法中,存储区管理步骤包括:根据每个堆单元执行存储区管理进程,作为具有限定尺寸的存储区的堆单元是相应于每个处理器而设置的;存储含有释放请求时间的释放队列作为存储区的管理信息,该释放请求时间是根据一个堆单元记录的,并与请求释放但尚未释放的存储区相关。存储区分配步骤包括在含于释放队列内的队列成分中分配根据每个堆单元记录的存储区。
在本发明的一个具体实施例的存储区管理方法中,存储区管理步骤包括:检查由一个弱指示符组成的弱指示符链,该弱指示符访问与含于释放队列中的队列成分相应的存储区,如果在此弱指示符链中不存在弱指示符,就从释放队列中除去该队列成分,并释放与该队列成分相应的存储区。
在本发明的一个具体实施例的存储区管理方法中,存储区管理步骤包括:检查含于弱指示符链中的存储区的退役标志,该弱指示符链是由一个弱指示符组成的,该弱指示符访问与含于释放队列中的队列成分相应的存储区和含有弱指示符访问区的存储区,如果退役标志表示一个退役状态,就从释放队列中除去该队列成分,并释放与该队列成分相应的存储区。
根据本发明的第三方面,用于执行存储区管理进程的计算机程序包括:一个线程管理步骤,该步骤产生和更新一个由含有登录时间信息的线程信息组成的线程列表,该登录时间信息是根据每个线程并作为一个操作系统的功能调用时间由数据处理程序记录的;一个存储区管理步骤,该步骤产生并更新含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据每个区记录的,并与请求释放但尚未释放的存储区相关;一个存储区分配步骤,在存储区分配进程中,通过比较设置在含于释放队列内的每个队列成分中的释放请求时间和在线程列表中的每个队列成分的最老的登录时间,来分配与具有登录请求时间的队列成分相应的存储区,在此,该登录请求时间是设置在最老的登录时间之前的。
本发明为执行各种各样的程序代码的通用计算机系统提供了计算机程序,这些程序存储在如像CD(光盘)、FD(软盘)或MO(磁光盘)之类的计算机可读的存储介质中,或者通过如像网络之类的通信介质而得到。通过以计算机可读方式提供计算机程序,计算机系统执行对计算机程序敏感的处理。
根据本发明的下面的说明和附图,本发明的这些和其它的特征和优点将会变得更为明显。在本发明的说明的上下文中,系统一词是指多个设备的逻辑集,并不限于把多个部件装在同一个机箱中的一个设备。
根据本发明的具体实施例,含有登录时间信息的线程信息的线程列表是作为线程管理信息存储的,由于每一个线程是作为一个数据处理单元,因此,所述的登录时间信息是根据线程来记录的,含有释放请求时间的释放队列是作为存储区管理信息存储的,在此,释放请求时间是按一个区单元记录的,并与请求释放但尚未释放的存储区相关。在存储区的分配进程中,比较设置在含于释放队列内的每个队列成分中的释放请求时间和在线程列表中的每个队列成分的最老的登录时间。仅在与具有释放请求时间的队列成分相应的存储区上执行存储分配处理,在此,该释放请求时间是设置在最老的登录时间之前的。在所有的线程中,只有不是存取目标的那个存储区才能被可靠地选择并对其进行分配处理。在每个线程中以不产生存取差错的方式来安全地进行存储区分配处理。
附图说明
图1是本发明的信息处理设备的方块图。
图2示出了一个处理器模块。
图3示出了本发明的信息处理设备的软件结构。
图4示出了对典型的存储区的存取进程。
图5示出了对典型的存储区的存取进程。
图6示出了在本发明的信息处理设备中由线程管理器管理的信息。
图7详细地示出了在本发明的信息处理设备中由线程管理器管理的信息。
图8示出了在本发明的信息处理设备中由存储区管理器管理的信息。
图9是一个流程图,该图示出了在本发明的信息处理设备中由线程管理器执行的线程信息登录进程的顺序。
图10详细地示出了在本发明的信息处理设备中由线程管理器执行的线程信息登录进程。
图11是一个流程图,该图示出了在本发明的信息处理设备中由线程管理器执行的线程信息退役进程的顺序。
图12详细地说明了在本发明的信息处理设备中由线程管理器执行的线程信息退役进程的顺序。
图13是一个流程图,该图示出了在本发明的信息处理设备中由存储区管理器执行的存储区释放请求登记进程的顺序。
图14是一个流程图,该图详细地示出了在本发明的信息处理设备中由存储区管理器执行的存储区分配进程。
图15示出了弱指示符和弱指示符链的结构。
图16是一个流程图,该图示出了从弱指示符中获取一个值的指示符值获取进程。
图17是一个流程图,该图示出了在含有弱指示符的结构中,一个释放队列的处理(刷新处理)顺序。
具体实施方式
以下将参照附图来详细说明本发明的一个信息处理设备、一个存储区管理方法和一个计算机程序。
下面将参照图1来说明本发明的信息处理设备的硬件结构。处理器模块101包括多个处理器(处理单元),并根据存储在ROM(只读存储器)104和HDD(硬盘驱动器)123中的各种程序来处理数据,这些程序包括操作系统(OS)和在操作系统上运行的应用程序。下面将参照图2来说明处理器模块101。
为了响应通过处理器模块101输入的指令,一个图形驱动程序102产生要在构成输出单元122的显示器的屏幕上显示的数据,并进行三维图形的绘图处理。主存储器(DRAW)103存储由处理器模块101执行的程序以及在执行程序的过程中变化的参数。通过包括CPU总线在内的主机总线111将这些部件互连起来。
通过桥接器105将主机总线连接到如像PCI(外围部件互连/接口)总线之类的外部总线112上。桥接器105控制在主机总线111、外部总线112、控制器106、存储卡107和其它设备之间的数据输入和输出。
输入单元121将信息输入到由用户操作的输入装置中,这些输入装置如像键盘和定位设备。输出单元122包括一个如像液晶显示器和CRT(阴极射线管)之类的图像输出单元,以及如像扬声器之类的音频输出装置。
HDD(硬盘驱动器)123驱动装在其中的硬盘,从而记录或回放要由处理器模块101执行的程序和信息。
驱动器124读取数据和程序,这些数据和程序是存储在一个己装入但又可圻除的记录介质127上的,这种记录介质如像磁盘、光盘、磁光盘、半导体存储器或类似的介质,并通过接口113、外部总线112、桥接器105和主机总线111向主存储器(DRAM)103提供数据和程序。
连接端口125与外部设备128相连接,并且可以包括USB、IEEE 1349总线或类似的线路。连接端口125通过接口113、外部总线112、桥接器105和主机总线111与处理器模块101相连接。与网络相连的通信单元126发送由HDD123或类似装置提供的数据,并从外部接收数据。
下面将参照图2来说明处理器模块的结构。如图所示,处理器模块200包括含有多个主处理器单元的主处理器组201,以及多个副处理器组202到20n,每个副处理器组都含有多个副处理器单元。每个处理器组进而包括一个存储控制器和一个次级高速缓冲存储器。处理器组201到20n通过纵横交叉(cross-bar)结构和分组交换网络之一连接起来,它们中的每一个都包含八个处理器单元。为了响应主处理器组201中的一个主处理器的指令,在多个副处理器组202到20n中至少选择一个副处理器来执行预定的程序。
在每个处理器组中,存储流量控制器控制图1中的主存储器103的数据输入和数据输出。在每个处理器组中,次级高速缓冲存储器作为处理数据的存储区之用。
如上所述,如果在一个或多个操作系统上有多个程序运行,就存在由程序执行单元定义的多个线程,并且使用一个如像图1的主存储器(DRAM)之类的存储器来作为多个线程的共用资源。在另一个线程存取该存储区的时候,如果一个线程企图对一个存储区执行释放进程,就会引发存取差错。在已知的工艺技术中,通过设置一个禁止中断期来防止引发存取差错,但是,设置禁止中断期会导致诸如进程延迟之类的继发性问题。
根据本发明,通过执行一个合适的、对线程敏感的存储管理来进行有效的数据处理。下面将参照图3来详细讨论适合于线程的存储分配和释放进程。
图3示出了在本发明的信息处理设备中的一个软件栈。该软件栈是由操作系统(OS)310和在该操作系统上执行的应用程序320组成的。操作系统(OS)310包括用于执行多任务控制、文件系统管理、存储管理以及输入和输出处理的核心程序311。
核心程序311包括线程管理器(系统调用调度程序)312、用于进行存储区管理的存储区管理器(堆管理模块)313以及其它的核心程序模块314。
在面向对象的存储管理进程中,将一个资源当作一个对象来处理,并根据具有限定尺寸的、被称其为一个堆的存储区来进行存储管理。存储区管理器(堆管理模块)313管理给这个堆的对象分配。在给每个请求堆的线程有效地分配存储区(堆)的时候,存储区管理器(堆管理模块)313释放一个限定的堆。
下面将参照图4和图5来说明给线程分配存储区的一个典型的存储分配进程。如图4所示,可以由一个执行程序的线程通过被设置为指示符信息的标识(ID)表350来存取在图4中被设置为对象的存储区x351、存储区y352、存储区z353。
为了避免第二线程的存取,操作系统(OS)的核心程序锁定ID表350,以防止第二线程存取由第一线当前存取的存储区。这样,直到解锁ID表350时,第二线程才能存取该存储区,因此,数据处理必须等待。
图5示出了具有两层结构的ID表。ID表a371用于存取作为对象的存储区x361和存储区z362等。存储区z362进而包含第二个ID表b372,并允许通过应用第二个ID表b372来存取存储区a363和存储区b364。照此方式,OS的核心程序锁定ID表以防止其它的线程存取此存储区。这样,直到释放锁定时其它的线程才能进行存储存取,从而延迟了数据处理。
在使用存储区x361的期间,即使不使用一个单个的区域,例如,图5的存储区a363和存储区b364之一,在存储管理进程中,核心程序也要锁定ID表a371。结果,不能有效地使用可以利用的存储区。
本发明克服了这样无效使用存储器的问题,从而可以对每个线程进行有效的存储区分配。在如图3所示的核心程序311中,由线程管理器(系统调用调度程序)312和存储区管理器(堆管理模块)313来进行这样的一个进程。下面将详细说明这个进程。
下面将参照图6和图7来说明线程管理器(系统调用调度程序)312的进程。
线程管理器(系统调用调度程序)312为每个处理器执行线程,这些处理器装在信息处理设备中以供执行线程之用。线程管理器(系统调用调度程序)312根据每个处理器来保留线程管理信息。
下面将参照图6和图7来说明线程管理信息。图6示出了根据每个处理器来生成线程管理信息的线程列表。图中示出了仅与处理器1和处理器2对应的线程列表。线程管理器(系统调用调度程序)312产生并保留与执行线程的处理器相对应的、作为线程管理信息的线程列表。
图6(a)示出了作为处理器1的线程管理信息的线程列表。该线程列表是由在处理器1的管理程序中运行的单个线程的登录时间信息和最老的登录时间信息的并置数据组成的。图6(b)示出了作为处理器2的线程管理信息的线程列表。该线程列表是由在处理器2的管理程序中运行的单个线程的登录时间信息和最老的登录时间信息的并置数据组成的。线程的登录时间信息是指一个操作系统从作为各种数据处理程序的应用程序中调用功能(function call)的时间。在任何线程列表中,可由另一个处理器来访问此最老的登录时间信息。如前所述,线程是一个与逻辑区相应的数据处理执行单元。为了执行该线程,保留了如像处理器和存储区之类的各种资源。
如果确定了用于执行线程的处理器,就给该处理器的线程分配可以利用的存储区。线程管理器(系统调用调度程序)312在处理器中分发线程,产生一个作为与存储区分配相关的线程信息的线程列表,并管理这些线程。
管理程序是配置在逻辑区和硬件之间的一个特许层,并管理逻辑区。线程是一个由逻辑区执行的进程。如像由图1和图2中的处理器模块所执行的线程那样,在此所述的线程是由逻辑区来执行的。给每个逻辑区分配硬件资源,这些资源包括计算资源、主处理器、副处理器、存储器和其它设备,并且逻辑区使用分配给它的资源来执行这些进程。
线程管理器(系统调用调度程序)312记录并保留与线程相关的登录时间信息,该线程是由作为特许层配置在逻辑区和硬件之间的管理程序来鉴别的。
下面将参照图7来详细说明由线程管理器(系统调用调度程序)312保留的线程列表信息。如参照图6所述,作为每个处理器的线程管理信息的线程列表包括每个线程的登录时间信息和最老的登录时间信息的并置数据。如图7所示,管理信息包括根据每个处理器设置的变量400和根据每个线程设置的变量410。如前所述,线程的登录时间信息与操作系统调用应用程序的功能调用时间(function call time)相对应,这些应用程序起着各种数据处理程序的作用。
根据每个处理器设置的变量400包括标题(报头)401和最老的登录时间(oldest_time)402。标题(报头)401包括表前端元素的指示符信息。最老的登录时间(oldest_time)402包括设置在表内的若干元素中的最老的登录时间信息。适当地更新这个表以响应线程登录和线程退役。在更新进程中,如果在构成表的元素中更新最老的登录时间,那么,最老的登录时间(oldest_time)402也一起被更新。鉴于存取进程的效率,将标题(报头)401和最老的登录时间(oldest_time)402存储在不同的高速缓存线中。存储标题(报头)401的高速缓存线只存储不需要由另一个处理器访问的那些变量。可由另一个处理器来访问保留有最老的登录时间(oldest_time)402的高速缓存线。
根据每个线程设置的变量410包括前趋线程标识信息(前趋)411和登录时间信息(时间)412。前趋线程标识信息(前趋)411是前趋线程信息的一个标识符(例如,一个指示符)。如所示出的那样,该表含有线程信息,这些线程信息是按照从具有最近的登录时间的线程到具有最老的登录时间的线程的顺序排列的。根据前趋线程标识信息(前趋)411来鉴别每个线程信息,然后获取这些信息。根据最老的登录信息的标题(报头)401来鉴别表前端的线程信息。由于末端线程信息没有前趋线程,因此设置[前趋线程标识信息(前趋)=零]。登录时间(时间)412表示每个线程的登录时间。
下面将参照图8来说明由存储区管理器(堆管理模块)313管理的信息。如前所述,在面向对象的存储管理进程中,资源是作为对象来处理的,并根据具有限定尺寸的、被称其为堆的存储区来进行存储管理。管理给堆分配对象的单元是存储区管理器(堆管理模块)313。在给每个请求堆的线程有效地分配存储区(堆)的时候,存储区管理器(堆管理模块)313就释放这个限定的堆。
存储区管理器(堆管理模块)313保留根据每个处理器设置的堆管理信息。换句话说,堆管理信息单元的数量等于处理器的数量。堆管理信息包括图8的释放队列。该释放队列是一个已请求释放但尚未释放的存储区(堆)的信息。
如图8所示,下面将讨论由存储区管理器(堆管理模块)313保留的释放队列的结构。作为根据每个处理器设置的堆管理信息设置了图8的释放队列。图8的释放队列是为各个处理器单独配置的。
将释放队列设置为一个标题信息(释放_队列_报头)451和队列成分460的并置表。队列成分460包含堆标识符(堆_标识)461、释放请求时间(释放_时间)462、后继队列信息(后继)463和存储区信息464。
堆标识符(堆_标识)461是根据每个处理器为一个存储区设置的堆标识信息。释放请求时间462表示堆的请求时间,也就是说,在此时间上线程发出堆的使用请求。后继队列信息(后继)463是释放队列中后续队列的指示符。存储区信息464是与堆标识符(堆_标识)461相应的处理器可以利用的存储区的存取信息。
标题信息(释放_队列_报头)451包含堆标识符(堆_标识),它是设置为含有前端队列的指示符信息的信息。如所示出的那样,通过跟踪每个队列成分的后继队列信息(后继)463,从标题信息(释放_队列_报头)451中获取全部的队列成分。
在资源分配进程中,给每个线程分配可以利用的处理器,鉴别与每个处理器相应的堆区,并准备执行线程。在此时刻,在与所分配的处理器相应的释放队列中设置队列成分。
根据本发明,在核心程序311中的线程管理器(系统调用调度程序)312和存储区管理器(堆管理模块)313的控制下,给线程进行有效的存储分配。参照图9来讨论在核心程序311中的线程管理器(系统呼叫调度程序)312和存储区管理器(堆管理模块)313的进程。
下面将参照图9到12来说明线程管理器(系统调用调度程序)312的进程。根据参照图6和图7说明的线程列表,线程管理器(系统调用调度程序)312执行线程信息的登录进程和线程信息的退役进程。
在应用程序调用操作系统的功能之后,立即执行线程信息的登录进程。更具体地说,在应用程序调用操作系统的功能时,产生使用处理器的数据处理线程。该线程设置在等待释放存储区的备用状态上。将与线程相应的线程信息重新设置为线程管理器(系统调用调度程序)312的管理信息。
在由操作系统完成一个系统调用进程并把控制转交给应用程序之前,立即执行线程信息的退役进程。更具体地说,由操作系统完成存储分配进程,并将控制转交给应用程序。可以使用由操作系统分配的处理器和存储区来执行线程。在由操作系统完成系统调用并将控制还给应用程序时,将存储区(堆)分配给线程。管理存储区(堆)中在备用状态上的线程信息的线程管理器(系统调用调度程序)312从线程列表中删除线程信息。这个进程就是退役进程。
下面将参照图9的流程图和图10的方块图来说明线程登录进程的顺序。执行线程登录进程以便将新的线程信息510加到如图10所示的线程列表中。用含于与数据500相关的处理器中的标题信息501来表示图10(a)中的新的线程信息510的加入位置。在此加入进程中,编造图10(b)的线程列表。在加入新的线程信息510时,需要更新在现有的线程列表中的各种信息。图9是更新进程的流程图。
下面将说明图9的流程图中的每个步骤。在禁止中断的状态下执行图9中的一系列的步骤。在步骤S101中,将变量[p]设置为执行登录进程的处理器的标识符。如前所述,线程管理器(系统调用调度程序)312根据每个处理器来管理线程列表。为了鉴别用于执行线程登录进程的线程列表,将变量[p]设置为执行登录进程的处理器的标识符。在步骤S102中,将变量[线程]设置为执行退役进程的处理器的标识符。更具体地说,将可变线程设置为图10的线程510的标识符。
在步骤S103中,将变量[老的_报头]设置为前趋线程标识信息(前趋_线程_标识[线程]=报头[p])。
此处理步骤表示给图10(a)的标题501设置的值[报头[p]]也是为新的线程信息510的前趋线程信息511设置的,并且值[head[p]]是为变量[老的_报头]设置的。
在步骤104中,将变量[报头[p]]设置为等于线程。这个处理步骤表示将为图10(a)的标题501设置的值设置为进入线程的新的线程信息510的标识符。
在步骤S105中,为一个可变时间[线程]设置现行时间。这个处理步骤表示该现行时间是为图10(a)的登录线程信息510的登录时间信息512设置的。
在步骤S106中确定在步骤S103中设置的变量[老的报头]是否是零。在步骤S103中设置的变量[老的_报头]是在登录进程之前为图10(a)的标题501设置的信息。如果在登录进程之前将图10(a)的标题501设置为[零],在线程列表中就没有线程信息存在,并且图10的新的线程信息510仅仅是为线程列表设置的线程信息。含于图10(a)中的与处理器相关的数据500中的最老的登录时间信息502是为在步骤S105中为登录时间信息512设置的信息设置的,这就是说,为时间[线程]设置的。
如果变量[老的_报头]不是[零],在线程列表中就存在其登录时间比新的线程信息510更老的线程信息。这样,不用更新含于如图10(a)所示的与处理器相关的数据500中的最老的登录时间502,就能完成处理。
这个登录进程产生了这样的一个线程列表,其中,在可由与处理器相关的数据500的标题501存取的位置上,设置图10(b)的新的线程信息510。
下面将参照图11和图12来详细说明由线程管理器(系统调用调度程序)312执行的线程退役进程。在完成操作系统的系统调用进程之后,在把控制退还给应用程序之前,立即执行线程退役进程。在由操作系统完成存储分配进程之后,在把控制退还给应用程序之时,能够使用由操作系统分配的处理器和存储区来执行线程。在由操作系统完成存储分配进程之后,在把控制退还给应用程序之时,给线程分配存储区(堆)。在备用状态上管理线程信息的线程管理器(系统调用调度程序)312从线程列表中删除线程信息。这就讨论完了线程退役进程。
下面将参照图11来说明退役进程的处理程序。在禁止中断的状态下执行图11的一系列的步骤。执行图11的步骤S201和S202以确定执行退役进程的处理器和线程。在步骤S201中,为执行退役进程的标识符设置一个变量[p]。在步骤S202中,为执行退役进程的当前线程的标识符设置一个变量[线程]。
在步骤S203中,确定在退役进程中要处理的线程的位置。更具体地说,根据在线程列表中退役进程的线程信息的位置来确定是否执行步骤S211到S213或步骤S221到S224。换句话说,如图12(a)或12(b)所示,进程根据是否找到了要退役的线程信息而变得有所不同。
如图12(a)所示,在退役进程中要处理的线程信息550位于线程列表的前端,这就是说,在与处理器相关的数据540的标题541所规定的位置上。将与处理器相关的数据540的标题541的标题信息[head[p]]设置为要退役的线程信息550的标识信息[线程]。如果在步骤S203中的判定结果为“是”,就执行步骤S211到S213。
如图12(b)所示,在退役进程中要处理的线程信息550并非位于线程列表的前端。在此情况下,就不把与处理器相关的数据540的标题541的标题信息[报头[p]]设置为在退役进程中要处理的线程信息550的标识信息[线程]。如果在步骤S203中的判定结果为“否”,处理程序就着手进行步骤S221到S224。
如图12(a)所示,线程信息550现在位于线程列表的前面。在步骤S221中,与处理器相关的数据540的标题541的标题信息[报头[p]]是为前趋线程标识信息[前趋[线程]]551设置的,而此前趋线程标识信息又是为在退役进程中要处理的线程信息550设置的。如图12(a)所示,这个处理步骤相当于设置一个信息,该信息给与处理器相关的数据540的标题541规定一个线程信息560。在退役进程中,如果在要处理的线程信息550中不含有前趋线程,就将前趋线程标识信息[前趋[线程]]551设置为[零]。同样地,将标题541的标题信息[报头[p]]设置为[零]。
在步骤S212中判定是否将与处理器相关的数据540的标题541的标题信息[报头[p]设置为零。如果判定设置为零,由于线程信息550的退役,在线程列表中就没有线程信息存在了。在此情况下,将与处理器相关的数据540的最老的登录时间[最老的_时间]设置为0。
如果在步骤S212中判定没有把与处理器相关的数据540的标题541的标题信息[报头[p]]设置为零,即使是在线程信息550退役之后,在线程列表中也存在线程信息。在此情况下,不用重写与处理器相关的数据540的最老的登录时间[最老的_时间],就结束处理程序。
如图12(b)所示,在退役进程中要处理的线程信息550并非位于线程列表的前面。在步骤S221中,假设变量[succ]是一个紧接在线程列表中退役线程前面的线程。在此假设线程列表的前端是一个正向端。换句话说,这个紧接在前面的线程相应于图12(b)中的线程信息570。
在步骤S222中,将紧接在退役线程前面的线程的前趋线程标识信息[前趋[succ]]更新为退役线程的前趋线程标识信息[前趋[线程]]。这个处理步骤相当于设置一个信息,该信息给图12(b)所示的线程信息570的前趋线程标识信息规定了线程信息580。如果在退役进程中、在要处理的线程信息550之前没有前趋线程存在,就将前趋线程标识信息[前趋[线程]]551设置为[零],因而,线程信息570的前趋线程标识信息也设置为[零]。
在步骤S223中,确定是否将退役线程的前趋线程标识信息[前趋[线程]]设置为零了。如果判定设置为零了,线程信息550的退役就表示具有最老的登录时间的线程的退役。在此情况下,将时间[succ]设置为与处理器相关的数据540的最老的登录时间[最老的_时间],并结束处理程序。换句话说,如果不存在图12(b)的线程信息580,就执行此进程。将线程信息570的登录时间572设置为与处理器相关的数据540的最老的登录时间[最老的_时间]。
如果在步骤S223中确定没有将退役线程的前趋线程标识信息[前趋[线程]]设置为零,就存在这样的一个线程信息,它具有比在退役进程中要处理的线程信息550更老的登录时间,这个线程信息就是图12(b)中的线程信息580。这样,不用重写与处理器相关的数据540的最老的登录时间[最老的_时间]就结束处理程序。
下面将参照图13来说明存储区管理器(堆管理模块)313的进程。存储区管理器(堆管理模块)313保留了图8的释放队列,以作为根据每个处理器而设置的堆管理信息。该释放队列是一个已请求释放但尚未释放的存储区(堆)的信息。
存储区管理器(堆管理模块)313执行存储区(堆)的释放请求登记进程和存储区分配进程。执行存储区(堆)的释放请求登记进程以便将一个新的队列加入到参照图8说明的释放队列中。执行存储区的分配进程以便将存储区(堆)分配给线程,并根据需要从释放队列中删除一个队列。
下面将参照图13的流程图来说明存储区的释放请求登记进程。在步骤S301中,将一个队列成分的堆标识[hid]设置为请求释放存储区的一个堆标识符,在此,该队列成分是作为释放队列中的一个新队列而设置的。如前所述,为与处理器相应的每个堆设置作为存储区管理信息的释放队列。存储区管理器(堆管理模块)313根据每个堆来释放和分配存储区。存储区管理器(堆管理模块)313设置一个请求释放的堆标识,作为要加入到释放队列中的队列的堆标识。
在步骤S302中,为新的队列成分的后继队列信息(后继)设置释放队列标题(释放_队列_报头[hid])。在步骤S303中,如果确定将释放队列标题(释放_队列_报头[hid])的值设置为等于释放区的后继队列信息(后继),就将新的队列成分的指示符信息输入到释放队列标题(释放_队列_报头[hid])中,并在队列中设置如像存储区信息之类的各种信息。从而结束处理程序。
在步骤S303中,如果确定释放队列标题(释放_队列_报头[hid])的值不等于释放区的后继队列信息(后继),处理程序就回到步骤S302上,以重复步骤S302和303。在核查了释放队列标题(释放_队列_报头[hid])的值等于释放区的后继队列信息(后继)之后,将如像存储区信息之类的各种信息设置到队列之中。从而结束处理程序。
在由具有重写的释放区的后继队列信息(后继)的另一个处理器来同时执行另一个队列设置进程的时候,在步骤S303中确定释放队列标题(释放_队列_报头[hid])的值不等于释放区的后续队列信息(后继)。
在释放队列中设置一个新的队列,以响应在步骤S303中的确定,即释放队列标题(释放_队列_报头[hid])的值等于释放区的后续队列信息(后继)。可靠地保留(保证)与进程相应的存储区。
下面将参照图14来说明存储区管理器(堆管理模块)313的存储区(堆)分配进程。在步骤S401中,将变量[hid]设置为执行存储区分配的处理器的标识符。根据每个处理器来执行存储区分配进程。首先鉴别一个要为其分配存储区的处理器。
在步骤402中确定在存储器中是否存在一个其尺寸与请求分配的存储区相同的未使用的存储区。更具体地说,存储区管理器(堆管理模块)313检验在存储器中是否存在一个未使用的区域,它的尺寸与线程所需要的存储区的尺寸相同。如果确定有这样的一个存储区,处理程序就进行步骤S405。存储区管理器(堆管理模块)313分配该存储区,以作为与具有在步骤S401中设置的标识符的处理器相应的线程的数据处理存储区。
如果在步骤402中确定不能得到一个其尺寸与请求分配的存储区的尺寸相同的未使用的存储区,那么,处理程序就着手进行步骤S403。在步骤403中,存储区管理器(堆管理模块)313确定请求分配的存储区的尺寸是否小于预定的阈值。如果确定请求分配的存储区的尺寸小于预定的阈值,处理程序就着手进行步骤S404。在步骤S404中,存储区管理器(堆管理模块)313确定在堆区中是否存在满足请求分配的存储区的尺寸的未使用的存储区。如果确定在堆区中存在满足请求分配的存储区的尺寸的未使用的存储区,在步骤S405中,存储区管理器(堆管理模块)313就执行设置为未使用的堆区的存储区的分配进程。如果所请求的存储区的尺寸小于预定的阈值并且仅满足未使用的堆区的分配,就进行这个处理步骤。
如果在步骤403中确定请求分配的存储区尺寸不小于预定的阈值,或者,如果在步骤S404中确定在堆区中不存在满足请求分配的存储区尺寸的未使用区,那么,在步骤403中确定请求分配的存储区尺寸不小于预定的阈值之后,就进行步骤S406和随后的步骤,以分配存储区。通过访问释放队列和线程列表来进行步骤S406中的处理步骤。
在步骤406中,将变量[报头]设置为释放队列标题(释放_队列_报头[hid]),并将释放队列标题(释放_队列_报头[hid])设置为0。
在步骤407中,将变量[时间]设置为最老的登录时间的最小值,也就是设置在与全部处理器相应的线程列表中的最老的登录时间中的最老的一个。
在步骤S408中,存储区管理器(堆管理模块)313比较释放请求时间(释放_时间)和最老的登录时间的最小值,在此,所述的释放请求时间是设置在根据每个标题追踪的每个成分中的,而最老的登录时间是设置在与全部处理器相应的线程列表中的,这些处理器具有在步骤S407中设置的时间[时间],此外,存储区管理器(堆管理模块)313仅选择小于值[时间]的请求释放时间(释放_时间)。存储区管理器(堆管理模块)313从释放队列中删除所选择的请求释放时间(释放_时间),释放与这些队列相应的存储区,并将这些释放的存储区分配给存储请求线程。
保证在全部处理器的最老的登录时间的最小值之前请求释放的存储区不是全部线程的存取目标。通过选择、释放并分配存储区来安全地执行存储区分配处理。
在步骤S409中,为释放队列标题(释放_队列_报头[hid])设置剩余队列末端的后继队列信息(后继),在此,所述的剩余队列是指除了在步骤S408中从释放队列中删除的队列以外的队列。如果在步骤S410中确定了将释放队列标题(释放_队列_报头[hid])的值设置为等于末端队列的后继队列信息(后继),就为释放队列标题(释放_队列_报头[hid])设置剩余队列的前端队列的指示符,在此,所述的剩余队列是指除了在步骤S408中从释放队列中删除的队列以外的队列。
如果在步骤S410中确定没有将释放队列标题(释放_队列_报头[hid])的值设置为等于末端队列的后继队列信息(后继),处理程序就回到步骤S409,以重复步骤409到410。在检验了将释放队列标题(释放_队列_报头[hid])的值设置为等于末端队列的后继队列信息(后继)之后,存储区管理器(堆管理模块)313就给队列设置如像存储区信息之类的各种信息。从而结束处理程序。
如果由具有重写的后继队列信息(后继)的另一个处理器来执行另一个队列的设置和删除进程,在步骤S410中就可以确定:没有将释放队列标题(释放_队列_报头[hid])的值设置为等于末端队列的后继队列信息(后继)。
存储区管理器(堆管理模块)313仅选择具有请求释放时间(释放_时间)的队列,该请求释放时间是设置在小于最老的登录时间的最小值的释放队列中,而这些最老的登录时间是设置在与全部处理器相应的线程列表之中。存储区管理器(堆管理模块)313从释放队列中删除所选择的队列,释放与这些队列相应的存储区,并把这些存储区分配给存储请求线程。在存储分配进程中,只能可靠选择没有被设置为全部线程的存取目标的存储区。以无存取差错的方式给每个线程进行存储区分配处理。
下面将说明一个用于支持弱指示符应用的存储管理进程。已参照图8讨论过了由存储区管理器(堆管理模块)313保留的释放队列的结构。将释放队列设置成为一个标题信息(释放_队列_报头)451和队列成分460的并置表。队列成分460包含堆标识符(报头_标识)461、释放请求时间(释放_时间)462、后继队列信息(后继)463和存储区信息464。
堆标识符(报头_标识)461是相对于每个处理器而设置的存储区的堆标识信息。释放请求时间(释放_时间)462表示发出堆请求的时间,也就是说,在此时间上线程发出一个堆的使用请求。后继队列信息(后继)463是释放队列中后继队列的指示符。存储区信息464是与堆标识符(报头_标识)461相应的处理器可以利用的存储区的存取信息。
标题信息(释放_队列_报头)451包括堆标识符(报头_标识),它是设置来作为含有前端队列的指示符信息的信息。如所示,通过根据标题信息(释放_队列_报头)451来追踪每个队列成分的后继队列信息(后继)463,可以获得全部的队列成分。
在资源分配进程中给每个线程分配可以利用的处理器,鉴别与每个处理器相应的堆区,并且线程是在等待执行的备用状态上。此刻,在与所分配的处理器相应的释放队列中设置队列成分。
参照图8所讨论的释放队列是作为存储区管理信息来存储的。为了分配存储区,将为释放队列中的每个队列成分设置的释放请求时间和线程列表中的最老的登录时间相比较。在带有释放请求时间的队列成分上执行存储区的分配进程,在此,该释放请求时间是在最老的登录时间之前设置的,并对全部线程中没有被设置为存取目标的存储区可靠地执行此存储区分配进程。以无存取差错的方式在每个线程中执行存储区分配进程。
能够用访问计数器(rf)的值来确定存储区是否是可以存取的。为每个堆(存储区)设置访问计数器。如果访问计数器的计数为1或更大,就能访问这个堆(存储区)。换句话说,存在访问这个堆的线程。
为了存取这个堆(存储区),从保留有堆(存储区)地址信息的指示符对象(pointer object)中获取存储地址。然后在寄存器中设置获得的存储地址。根据设置在寄存器中的地址来进行存取。在此进程之中,如果有另一个线程企图存取这个存储区,就根据原来计划的存储信息来改变在存取目标上的存储信息。通过比较设置在参照图8所讨论的释放队列中的请求释放时间和线程列表中的最老的登录时间,能够可靠地进行存储存取。
弱指示符是一种指示符对象。弱指示符是一种特定的指示符,它并不增加上述的设置来用以响应堆(存储区)的访问计数器(rf)的计数。虽然弱指示符像标准指示符那样访问堆(存储区),但是,弱指示符与标准指示符的不同之处在于,相应于堆(存储区)的访问计数器(rf)的计数并不计及弱指示符。不能根据访问计数器的值来确定是否访问了访问计数器(rf)。如果释放了弱指示符的堆访问,就将与由弱指示符保留的堆相应的地址信息更新为0[零]。更具体地说,弱指示符将自己的指示符信息更新为0[零],而不影响堆的访问计数器。
在存储访问期间,如果获得了由弱指示符保留的指示符信息并将其存储在一个寄存器中,就立即用0[零]来更换由弱指示符保留的信息。不能够再进行使用弱指示符的指示符信息的后继存储存取,弱指示符的指示符信息就消失了。这样就不能顺利地更改前面图8中所讨论的释放队列。按照如下所述来解决这个问题。
下面将参照图15来说明可靠的存储存取和使用弱指示符的释放队列更新。图15示出了一个弱指示符和具有由弱指示符访问的访问存储区的堆(存储区)600。在图8的释放队列中的队列成分460的存储区信息464具有图15的堆(存储区)600的结构。
弱指示符a-n访问相同的访问存储区。如所示,弱指示符a-n中的每一个都包含一个指示符头(point head),每个指示符头又包括一个指示符标识(point ID)和一个如下所述的元变量(member variable):
(a)后继
(b)前趋
(c)对象指示符
对象指示符是一个作为要访问的存储区信息的对象元变量。一系列的弱指示符a-n访问相同的访问存储区并具有相同的对象指示符。
后继和前趋是指示符变量,它们将具有相同的访问存储区的弱指示符链接到具有由弱指示符访问的访问存储区的堆(存储区)上。后继是弱指示符或作为后继对象的堆的标识信息。前趋是弱指示符或作为前趋对象的堆的标识信息。
在具有相同的访问存储区的弱指示符和具有由弱指示符访问的访问存储区的堆(存储区)中设置后继和前趋。建造一个双向链接,即一个用以将一系列的弱指示符和堆相互连接起来的链。这样的一个链被称之为是弱指示符链。
在堆中设置与退役标志和访问计数器相关的信息。如前所述,访问计数器具有一个对存储区的访问环境敏感的值。访问计数器并不计及与弱指示符相关的访问信息,但是要计及除弱指示符以外的指示符的访问信息。退役标志用于确定包括弱指示符在内的指示符是否没有访问访问计数器,换句话说,确定线程是否退役了。如果线程退役了,就将退役标志设置为[1],如果线程没有退役,就将退役标志设置为[0]。在分配新存储区的初始化进程中,将退役标志设置为[0]。
弱指示符链是这样建造的。从弱指示符中获取一个指示符值。更具体地说,获取一个作为对象元变量的对象指示符,在此,该对象元变量是与访问访问存储区所需要的地址相对应的。下面将参照图16的流程图来说明此获取进程。
在步骤S501中,在从弱指示符中获取指示符值的进程中,确定是否满足下列的条件(1)和(2)。条件(1)是指弱指示符的对象指示符(即对象元变量)是非零(non-zero)。条件(2)是指设置在由弱指示符链连接的堆中的访问计数器(rf)的值等于或大于1。
如果确定满足这两个条件,处理程序就着手进行步骤S502。然后退回作为对象元变量的对象指示符,在此,该对象元变量是与访问设置在弱指示符中的访问存储区所需要的地址相对应的。如果确定不满足这两个条件,处理程序就着手进行步骤S503以退回[0]。
如果确定弱指示符的对象指示符(即对象元变量)为零,或者,确定设置在由弱指示符链连接的堆中的访问计数器(rf)的计数为0,就在步骤S503中退回0。如果访问计数器(rf)的计数为0,就不让除了弱指示符以外的指示符来进行访问。然而,不能确定是否让弱指示符来进行访问。如果从弱指示符中获得了指示符值,就将该弱指示符的对象指示符设置为零。不再能够进行使用弱指示符的指示符信息的存储存取。由于弱指示符的指示符信息消失了,因而不能顺利地更新释放队列。为了防止这个问题,在此情况下不获取指示符的值。
下面将参照图17来说明释放队列的刷新进程。已参照图8讨论了释放队列,并由存储区管理器(堆管理模块)313来管理释放队列。如前所述,在面向对象的存储管理进程中,将资源作为对象来处理,并根据具有限定尺寸的、被称其为堆的存储区来进行存储管理。管理给堆分配对象的部件是存储区管理器(堆管理模块)313。在将存储区(堆)有效地分配给每个请求堆的线程的时候,存储区管理器(堆管理模块)313适当地释放有限的堆。
存储区管理器(堆管理模块)313保留根据每个处理器设置的堆管理信息。换句话说,堆管理信息单元的数量等于处理器的数量。堆管理信息包括图8的释放队列。释放队列是一个请求释放但还尚未释放的存储区(堆)的信息。
在刷新释放队列的时候,也就是在含有弱指示符的配置中执行更新进程的时候,执行一个特定的进程。下面将参照图17来说明释放队列的刷新进程。在含于释放队列中的全部对象(释放队列成分)上依次进行图17的进程。
在步骤S601中,清空释放队列。更具体地说,清空图8的标题信息(释放_队列_报头)451的前端队列,并断开此队列。
在步骤S602中,将设置在要处理的释放队列中的对象(释放队列成分)的释放时间,也就是请求释放时间(释放_时间),与设置在与处理器相对应的线程列表中的最老的登录时间相比较。如果确定请求释放时间(释放_时间)小于最老的登录时间,处理程序就着手进行步骤S603。
在步骤603中确定是否满足下列的条件(a)和(b)之一。
条件(a)是指将设置在堆(存储区)中的退役标志设置为退役状态,在此,这个堆(存储区)是根据要处理的对象(释放队列成分)的堆标识(heap ID)鉴别的。
条件(b)是指在相应于堆(存储区)而设置的弱指示符链中没有弱指示符存在,换句话说,弱指示符链是空的。
如果满足上述的条件(a)和(b)之一,处理程序就着手进行步骤S604。除去该对象。换句话说,释放与设置在释放队列中的对象相应的存储区,并从释放队列中删除此对象释放队列成分)。
在步骤603中,如果确定不满足条件(a)和(b)中的任何一个,处理程序就着手进行步骤S621。将作为弱指示符的对象元变量的对象指示符的值设置为[0],在此,该弱指示符是含于相应于堆而设置的弱指示符链中。在步骤622中,将退役标志设置为[1]。在步骤S623中,为设置在释放队列中的对象(释放队列成分)的释放时间,即请求释放时间(释放_时间)输入现行时间(present time)。在步骤624中,再次给释放队列设置对象(释放队列成分)。
在步骤602中,如果确定设置在要处理的释放队列中的对象(释放队列成分)的释放时间,即请求释放时间(释放_时间),不小于设置在与处理器相应的线程列表中的最老的登录时间,处理程序就着手进行步骤S611。在步骤611中确定设置在由对象的堆标识鉴别的堆(存储区)上的访问计数器(rf)是否为零。如果确定访问计数器是零,处理程序就着手进行步骤S624。并再次给释放队列设置对象(释放队列成分)。
由在图3的操作系统310中的存储区管理器(堆管理模块)313来执行图17的进程。在含有作为访问存储区的指示符的弱指示符的配置中,存储区管理器(堆管理模块)313检查访问存储区的弱指示符和弱指示符链,在此,该存储区与含于释放队列中的队列成分相对应,而弱指示符链是由包含弱指示符的访问区的存储区组成的。如果存储区管理器(堆管理模块)313确定在弱指示符链中不含弱指示符,或者确定将含于弱指示符链中的存储区的退役标志设置为退役状态了,就从释放队列中除去该队列成分,并释放与此队列成分相应的存储区。
也对设置在释放队列中的对象(释放队列成分)执行图17的进程。利用在含有弱指示符的配置中执行的刷新进程来可靠地更新释放队列,可靠地比较设置在释放队列中的请求释放时间和线程列表中的最老的登录时间,并以无差错的方式进行存储存取。
已参照具体的实施例讨论了本发明。显然,对于一般熟悉工艺技术的人而言,只要不脱离本发明的范围,就能变动和更改本发明的实施例。在此仅就一些典型的用途讨论了本发明的实施例,不应将本发明的实施例看作是对本发明的范围的限制。为了了解本发明的范围,应当查看本发明的权利要求。
能够利用软件、硬件以及它们的组合来执行上述的一系列的步骤。如果要用软件来执行上述的一系列的步骤,就要将构成软件的程序从记录介质上或通过网络安装到组合于硬件结构中的一个计算机上或者安装到通用计算机上。
可以预先将程序记录到作为记录介质的硬盘和ROM(只读存储器)之一上。也可以暂时地或永久地将程序记录在可拆除的记录介质上。这些记录介质包括软盘、磁光(Magneto-optic)盘、DVD(数字通用光盘)、磁盘、半导体存储器等。能够在所谓的组装软件(package software)中提供这样的可拆除的介质。
如上所述,能够从可拆除的记录介质上将程序安装到计算机中。此外,可以将程序按无线方式从下载位置上发送到计算机内。也可通过如像LAN(局域网)或互联网之类的网络、以有线方式来发送程序,然后由计算机接收该程序并安装到如像计算机硬盘之类的记录介质上。
按照所述的时间顺序依次进行在此说明中所讨论的处理步骤。另外的办法是,可以并行地或分别地进行这些步骤。在此说明中,系统是指由多个设备组成的逻辑系统,并且,在同样的机箱中并非必须含有每个设备的部件。
产业上的可利用性
如上所述,根据本发明的配置,包含登录时间信息在内的线程信息的线程列表是作为线程管理信息存储的,在此,由于线程是作为一个数据处理单元,因此,根据每个线程来记录登录时间信息;含有释放请求时间的释放队列是作为存储区管理信息存储的,在此,释放请求时间是根据一个区单元记录的,这个区单元与请求释放但尚未释放的存储区相关。在存储区分配进程中,将设置在含于释放队列内的每个队列成分中的释放请求时间和在线程列表中的每个队列成分的最老的登录时间相比较。利用在最老的录登录时间之前设置的释放请求时间,仅在与队列成分相对应的存储区上,执行存储分配进程。在全部线程中只有不是存取目标的那一个存储区才能被可靠地选择并对其进行分配处理。在每个线程中,以不产生存取差错的方式安全地进行存储区的分配处理。
Claims (17)
1.一种信息处理装置包括:
线程管理器,用于根据每个数据处理单元来管理线程信息,以及
用于管理存储区的存储区管理器;
其中,线程管理器存储含有登录时间信息的线程列表作为线程管理信息,该登录时间信息是作为操作系统的功能调用时间并根据每个线程由数据处理程序记录下来的,以及
其中,存储区管理器存储含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据一个区单元记录的,并与请求释放但尚未释放的存储区相关;在存储区分配进程中,存储区管理器比较设置在含于释放队列内的每个队列成分中的释放请求时间和线程列表中的每个队列成分的最老的登录时间,并分配与具有释放请求时间的队列成分相应的存储区,在此,该释放请求时间是设置在最老的登录时间之前的。
2.根据权利要求1的信息处理设备,在此,线程管理器产生相应于多个处理器中的每一个的线程列表,将含于登录时间信息中的最老的登录时间记录到每个线程列表的标题中,所述的登录时间信息是设置在含于线程列表内的线程信息中,并管理所记录的、被设置成可由另一个处理器参照的信息。
3.根据权利要求2的信息处理设备,在此,存储区管理器访问所有的最老的登录时间信息,这些信息是相应于由线程管理器管理的处理器而设置在线程列表的标题中的,并从最老的登录时间信息中选择最老的登录时间中的最老的一个,在此,所述的最老的登录时间信息是设置在与全部处理器相应的线程列表的标题中,并将所选择的最老的登录时间与设置在含于释放队列内的每个队列成分中的释放请求时间相比较,分配与具有释放请求时间的队列成分相应的存储区,在此,该释放请求时间是设置在所选择的最老的登录时间之前的。
4.根据权利要求1的信息处理设备,在此,线程管理器在线程列表和一个表成分上记录另一个表成分的标识信息,并将该线程列表编制成一个允许从标题中依次获取每个成分的表,在线程登录或线程退役时,更新设置在标题和表成分之一中的标识信息。
5.根据权利要求1的信息处理设备,在此,存储区管理器在释放队列的标题和一个队列成分上记录另一个队列成分的标识信息,并将释放队列编制成一个允许从标题中依次获取每个队列成分的表,并在设置新队列和删除一个队列时,更新设置在标题和队列成分之一中的标识信息。
6.根据权利要求1的信息处理设备,在此,存储区管理器根据每个堆单元来执行存储区管理进程,在此,作为具有限定尺寸的存储区的堆单元是相应于每个处理器而设置的;存储含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据堆单元记录的,并与已请求释放但尚未释放的一个堆相关;在存储区分配进程中分配存储区,该存储区是根据每个堆单元记录在含于释放队列内的队列成分中的。
7.根据权利要求1的信息处理设备,在此,存储区管理器检查弱指示符链,该弱指示符链是由一个弱指示符构成的,这个弱指示符访问与含于释放队列内的队列成分相应的存储区,如果在弱指示符链中不存在弱指示符,就从释放队列中除去该队列成分,并释放与此队列成分相应的存储区。
8.根据权利要求1的信息处理设备,在此,存储区管理器检查含于弱指示符链中的存储区的退役标志,该弱指示符链是由一个弱指示符构成的,这个弱指示符访问与含于释放队列中的队列成分相应的存储区和含有弱指示符的访问区的存储区,如果该退役标志表示一个退役状态,就从释放队列中除去该队列成分,并释放与此队列成分相应的存储区。
9.一种存储区管理方法包括:
线程管理步骤,该步骤产生和更新由含有登录时间信息的线程信息组成的线程列表,在此,该登录时间信息是根据每个线程并作为操作系统的功能调用时间由数据记录程序记录的;
存储区管理步骤,该步骤产生和更新含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据每个区记录的,并与请求释放但尚未释放的存储区相关;
存储区分配步骤,在存储区的分配进程中,该步骤通过比较设置在含于释放队列内的每个队列成分中的释放请求时间和线程列表中的每个队列成分的最老的登录时间来分配与具有登录请求时间的队列成分相应的存储区,在此,该登录请求时间是设置在最老的登录时间之前的。
10.根据权利要求9的存储区管理方法,在此,线程管理步骤包括:产生相应于多个处理器中的每一个的一个线程列表;将含于登录时间信息中的最老的登录时间记录到每个线程列表的标题中,在此,该登录时间信息是设置在含于线程列表内的线程信息中的;管理所记录的、设置来要由另一个处理器访问的信息
11.根据权利要求10的存储区管理方法,在此,存储区分配步骤包括访问所有的最老的登录时间信息,这些最老的登录时间信息设置在与一个处理器相应的线程列表的标题中;从最老的登录时间信息中选择最老的登录时间中的最老的一个,这些最老的登录时间信息设置在与全部处理器相应的线程列表的标题中;将所选择的最老的登录时间与设置在含于释放队列内的每个队列成分中的释放请求时间相比较;分配与具有释放请求时间的队列成分相应的存储区,在此,该释放请求时间是设置在所选择的最老的登录时间之前的。
12.根据权利要求9的存储区管理方法,在此,线程管理步骤包括:在线程列表的标题和一个表成分上记录另一个表成分的标识信息,将线程列表编制成为一个允许从标题中依次获得每个成分的表,并在线程登录或线程退役时,更新设置在标题和表成分之一中的标识信息。
13.根据权利要求9的存储区管理方法,在此,存储区管理步骤包括:在释放队列的标题和一个队列成分上记录另一个队列成分的标识信息,将该释放队列编制成为一个允许从标题中依次获得每个队列成分的表,在设置新的队列或删除一个队列时,更新设置在标题和队列成分之一中的标识信息。
14.根据权利要求9的存储区管理方法,在此,存储区管理步骤包括:根据每个堆单元来执行存储区管理进程,在此,作为具有限定尺寸的存储区的堆单元是相应于每个处理器而设置的;存储含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据堆单元记录的,并与请求释放但尚未释放的堆相关;
在此,存储区分配步骤包括在含于释放队列内的队列成分中分配根据每个堆单元记录的存储区。
15.根据权利要求9的存储区管理方法,在此,存储区管理步骤包括:检查弱指示符链,该弱指示符链是由一个弱指示符构成的,这个弱指示符访问与含于释放队列内的队列成分相应的存储区,如果在弱指示符链中没有弱指示符存在,就从释放队列中除去该队列成分,并释放与该队列成分相应的存储区。
16.根据权利要求9的存储区管理方法,在此,存储区管理步骤包括:检查含于弱指示符链中的存储区的退役标志,在此,该弱指示符链是由一个弱指示符构成的,该弱指示符访问与含于释放队列内的队列成分相应的存储区以及含有弱指示符访问区的存储区,如果退役标志表示一个退役状态,就从释放队列中除去该队列成分,并释放与该队列成分相应的存储区。
17.一种用于执行存储区管理进程的计算机程序,该计算机程序包括:
线程管理步骤,该步骤产生并更新由含有登录时间信息的线程信息组成的线程列表,在此,该登录时间信息是根据每个线程并作为操作系统的功能调用时间由数据处理程序记录的;
存储区管理步骤,该步骤产生并更新含有释放请求时间的释放队列作为存储区管理信息,该释放请求时间是根据每个存储区记录的,并与请求释放但尚未释放的存储区相关;
存储区分配步骤,在存储区的分配进程中,该步骤通过比较设置在含于释放队列内的每个队列成分中的释放请求时间和在线程列表中的每个队列成分的最老的登录时间来分配与具有登录请求时间的队列成分相应的存储区,在此,该登录请求时间是设置在最老的登录时间之前的。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP283528/2004 | 2004-09-29 | ||
JP2004283528 | 2004-09-29 | ||
JP170420/2005 | 2005-06-10 | ||
JP2005170420A JP4144609B2 (ja) | 2004-09-29 | 2005-06-10 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
PCT/JP2005/017645 WO2006035727A1 (ja) | 2004-09-29 | 2005-09-26 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1906598A true CN1906598A (zh) | 2007-01-31 |
CN1906598B CN1906598B (zh) | 2010-05-26 |
Family
ID=36100684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800014770A Expired - Fee Related CN1906598B (zh) | 2004-09-29 | 2005-09-26 | 信息处理设备及存储区管理方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7770177B2 (zh) |
EP (1) | EP1684179A4 (zh) |
JP (1) | JP4144609B2 (zh) |
KR (1) | KR101150661B1 (zh) |
CN (1) | CN1906598B (zh) |
BR (1) | BRPI0506379A (zh) |
MY (1) | MY141494A (zh) |
RU (1) | RU2397535C2 (zh) |
TW (1) | TWI268446B (zh) |
WO (1) | WO2006035727A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251811B (zh) * | 2007-02-20 | 2011-04-06 | 国际商业机器公司 | 基于存储器调页行为关联非相关进程内线程的方法和装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8321651B2 (en) * | 2008-04-02 | 2012-11-27 | Qualcomm Incorporated | System and method for memory allocation in embedded or wireless communication systems |
JP4569846B2 (ja) | 2008-04-02 | 2010-10-27 | 日本電気株式会社 | I/oノード制御方式及び方法 |
US8806179B2 (en) * | 2009-12-15 | 2014-08-12 | International Business Machines Corporation | Non-quiescing key setting facility |
JP6163844B2 (ja) * | 2013-04-12 | 2017-07-19 | 富士通株式会社 | 制御方法、制御装置、制御プログラム、および記録媒体 |
US9165337B2 (en) * | 2013-05-31 | 2015-10-20 | Qualcomm Incorporated | Command instruction management |
JP6369286B2 (ja) * | 2014-10-23 | 2018-08-08 | 富士通株式会社 | プロセス間通信プログラム、解放要求方法、および並列演算装置 |
US10521368B2 (en) * | 2015-12-24 | 2019-12-31 | Arm Limited | Arbitration of requests requiring a variable number of resources |
EP3625679A1 (en) * | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
WO2019212182A1 (en) * | 2018-05-04 | 2019-11-07 | Samsung Electronics Co., Ltd. | Apparatus and method for managing a shareable resource in a multi-core processor |
JP6932755B2 (ja) * | 2018-10-19 | 2021-09-08 | イーソル株式会社 | オペレーティングシステム及びメモリ割り当て方法 |
JP6682599B2 (ja) * | 2018-10-19 | 2020-04-15 | イーソル株式会社 | オペレーティングシステム及びメモリ割り当て方法 |
CN119003627B (zh) * | 2024-10-24 | 2025-03-07 | 华能信息技术有限公司 | 一种用于企业信息的智能动态资讯系统 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435780A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Separate stack areas for plural processes |
US5386536A (en) | 1991-03-28 | 1995-01-31 | Courts; Howard R. | Apparatus and method for managing memory allocation |
US5398334A (en) * | 1992-04-06 | 1995-03-14 | General Electric Company | System for automatic garbage collection using strong and weak encapsulated pointers |
FI91456C (fi) | 1992-07-29 | 1994-06-27 | Nokia Telecommunications Oy | Menetelmä tietokoneessa varattujen resurssien hallitsemiseksi |
CA2136154C (en) | 1994-11-18 | 1999-08-24 | Jay William Benayon | User control of multiple memory heaps |
US5928323A (en) * | 1996-05-30 | 1999-07-27 | Sun Microsystems, Inc. | Apparatus and method for dynamically generating information with server-side software objects |
US6058460A (en) | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
US6938257B1 (en) * | 1997-07-17 | 2005-08-30 | International Business Machines Corporation | Apparatus and method to provide persistence for application interfaces |
JPH1173364A (ja) | 1997-08-29 | 1999-03-16 | Nec Corp | メモリバッファの管理方式 |
US6145061A (en) * | 1998-01-07 | 2000-11-07 | Tandem Computers Incorporated | Method of management of a circular queue for asynchronous access |
JPH11203193A (ja) | 1998-01-14 | 1999-07-30 | Hitachi Ltd | 共有メモリ管理装置及び方法 |
GB9813592D0 (en) | 1998-06-25 | 1998-08-19 | Philips Electronics Nv | Dynamic memory space allocation |
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
US7159222B1 (en) * | 1998-09-09 | 2007-01-02 | Microsoft Corporation | Highly componentized system architecture with object mutation |
US6505229B1 (en) * | 1998-09-25 | 2003-01-07 | Intelect Communications, Inc. | Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems |
KR100594187B1 (ko) * | 1998-12-26 | 2006-10-25 | 삼성전자주식회사 | 쓰레드 호 처리 구조를 채용한 유닉스 시스템 환경하의 지능망교환시스템에서 타이머 구동 방법 |
DE19951716A1 (de) * | 1999-10-27 | 2001-05-03 | Heidenhain Gmbh Dr Johannes | Verfahren zur dynamischen Speicherverwaltung |
US6772107B1 (en) * | 1999-11-08 | 2004-08-03 | J.D. Edwards World Source Company | System and method for simulating activity on a computer network |
US7111294B2 (en) * | 2001-01-16 | 2006-09-19 | Microsoft Corporation | Thread-specific heaps |
US7210146B2 (en) * | 2001-06-18 | 2007-04-24 | Microsoft Corporation | Sleep queue management |
JP2003345612A (ja) | 2002-05-28 | 2003-12-05 | Sony Corp | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びにコンピュータ・プログラム |
US7069396B2 (en) | 2002-06-27 | 2006-06-27 | Hewlett-Packard Development Company, L.P. | Deferred memory allocation for application threads |
US7640549B2 (en) * | 2002-07-22 | 2009-12-29 | Agilent Technologies, Inc. | System and method for efficiently exchanging data among processes |
US7181742B2 (en) * | 2002-11-19 | 2007-02-20 | Intel Corporation | Allocation of packets and threads |
US7426720B1 (en) * | 2003-12-22 | 2008-09-16 | Sun Microsystems, Inc. | System and method for dynamic preloading of classes through memory space cloning of a master runtime system process |
US7426731B2 (en) * | 2004-03-22 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | Determining processor usage by a thread |
US20050235284A1 (en) * | 2004-04-14 | 2005-10-20 | International Business Machines Corporation | Systems and methods for tracking processing unit usage |
US7487503B2 (en) * | 2004-08-12 | 2009-02-03 | International Business Machines Corporation | Scheduling threads in a multiprocessor computer |
US7752620B2 (en) * | 2005-06-06 | 2010-07-06 | International Business Machines Corporation | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions |
-
2005
- 2005-06-10 JP JP2005170420A patent/JP4144609B2/ja not_active Expired - Fee Related
- 2005-08-25 TW TW094129106A patent/TWI268446B/zh not_active IP Right Cessation
- 2005-09-02 US US11/217,494 patent/US7770177B2/en not_active Expired - Fee Related
- 2005-09-06 MY MYPI20054190A patent/MY141494A/en unknown
- 2005-09-26 CN CN2005800014770A patent/CN1906598B/zh not_active Expired - Fee Related
- 2005-09-26 EP EP05785980A patent/EP1684179A4/en not_active Withdrawn
- 2005-09-26 RU RU2006118342/09A patent/RU2397535C2/ru not_active IP Right Cessation
- 2005-09-26 BR BRPI0506379-5A patent/BRPI0506379A/pt not_active IP Right Cessation
- 2005-09-26 KR KR1020067010326A patent/KR101150661B1/ko not_active IP Right Cessation
- 2005-09-26 WO PCT/JP2005/017645 patent/WO2006035727A1/ja active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251811B (zh) * | 2007-02-20 | 2011-04-06 | 国际商业机器公司 | 基于存储器调页行为关联非相关进程内线程的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20070050002A (ko) | 2007-05-14 |
MY141494A (en) | 2010-04-30 |
US7770177B2 (en) | 2010-08-03 |
CN1906598B (zh) | 2010-05-26 |
KR101150661B1 (ko) | 2012-05-25 |
JP4144609B2 (ja) | 2008-09-03 |
TW200620107A (en) | 2006-06-16 |
RU2397535C2 (ru) | 2010-08-20 |
EP1684179A4 (en) | 2009-01-21 |
US20060070072A1 (en) | 2006-03-30 |
BRPI0506379A (pt) | 2006-12-26 |
EP1684179A1 (en) | 2006-07-26 |
RU2006118342A (ru) | 2007-12-20 |
WO2006035727A1 (ja) | 2006-04-06 |
JP2006127463A (ja) | 2006-05-18 |
TWI268446B (en) | 2006-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1881183A (zh) | 信息处理装置、进程控制方法及其计算机程序 | |
CN1101026C (zh) | 一种多重处理系统的可定标的系统中断结构 | |
CN1174323C (zh) | 管理共享内存的方法 | |
CN1271517C (zh) | 任务切换装置、方法和程序 | |
CN1975679A (zh) | 用于优化分段资源分配的方法和设备 | |
CN1906598A (zh) | 信息处理设备、存储区管理方法和计算机程序 | |
CN1969261A (zh) | 信息终端、计算机资源管理方法和虚拟计算机的运行切换方法 | |
CN1906583A (zh) | 信息处理设备、中断处理控制方法、以及计算机程序 | |
CN1791862A (zh) | 操作系统 | |
CN1313938C (zh) | 存储系统、计算机系统、存储区域的属性设置方法 | |
CN1652084A (zh) | 计算机系统、管理装置、存储装置以及计算机装置 | |
CN1537274A (zh) | 处理系统或计算机系统的任务控制方法和计算机程序 | |
CN1591345A (zh) | 存储系统 | |
CN1549964A (zh) | 管理计算系统中协处理器的计算资源的方法和系统 | |
CN1653425A (zh) | 在逻辑分区数据处理系统中动态分配和解除分配处理器的方法和装置 | |
CN1908903A (zh) | 执行作业步的系统和方法以及计算机产品 | |
CN1906586A (zh) | 用于在多处理器系统中处置处理错误的方法和设备 | |
CN1292529A (zh) | 管理计算环境的分区组的方法,系统和程序产品 | |
CN1673975A (zh) | 存储系统 | |
CN1906584A (zh) | 信息处理装置、处理控制方法和计算机程序 | |
CN1119764C (zh) | 关于数据库的方法 | |
CN1924812A (zh) | 用于i/o适配器的方法和装置 | |
CN1591374A (zh) | 直接存储器存取传输控制器 | |
CN1369094A (zh) | 用于改进声频和视频数据转移的盘驱动器 | |
CN1702622A (zh) | 用于校正管理程序工作的分布的系统 |
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: 20100526 Termination date: 20150926 |
|
EXPY | Termination of patent right or utility model |