WO2006035727A1 - 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム - Google Patents
情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- WO2006035727A1 WO2006035727A1 PCT/JP2005/017645 JP2005017645W WO2006035727A1 WO 2006035727 A1 WO2006035727 A1 WO 2006035727A1 JP 2005017645 W JP2005017645 W JP 2005017645W WO 2006035727 A1 WO2006035727 A1 WO 2006035727A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory area
- queue
- thread
- information
- release
- Prior art date
Links
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
Definitions
- the present invention relates to an information processing apparatus, a memory area management method, and a computer program. More specifically, in a configuration in which a plurality of threads refer to and update a memory area in parallel, an information processing apparatus that implements appropriate memory area allocation and memory management processing, a memory area management method, and a computer ' Regarding the program.
- the scheduling of each execution process (task) of a plurality of OSs is executed by, for example, partition management software.
- partition management software When two operating systems of OS (a) and OS ( ⁇ ) coexist in one system, the processing of os (a) is defined as partition A.
- the partition management software determines the execution schedule of partition A and partition B, allocates hardware resources based on the determined schedule, and executes the processing for each OS. To do.
- Patent Document 1 discloses a conventional technique that discloses task management in a multi-OS type system.
- Patent Document 1 discloses a task scheduling method for preferentially processing highly urgent processes in task management executed in each of a plurality of OSs.
- Patent Document 1 Japanese Unexamined Patent Publication No. 2003-345612
- the present invention has been made in view of the above-described problems, and is suitable for a configuration in which a plurality of threads refer to and update a memory area in parallel and does not cause an access error or the like. It is an object of the present invention to provide an information processing apparatus, a memory area management method, and a computer program that realize memory area allocation and memory management processing.
- the first aspect of the present invention is
- An information processing device An information processing device,
- a thread management unit that manages thread information as a data processing unit
- a memory area management unit for managing the memory area
- the thread management unit holds, as thread management information, a thread list in which entry time information as function call time of the operating system from each data processing program is recorded for each thread.
- the memory area management unit holds a release queue as a queue that records a release request time for each area unit for an unreleased memory area that has a release request, as memory area management information, and at the time of memory area allocation processing,
- the release request time set for each queue element included in the release queue is compared with the oldest entry time in each element of the thread list, and the release request time is set before the oldest entry time.
- An information processing apparatus is characterized in that it is configured to execute allocation of a memory area corresponding to a queue element.
- the thread management unit generates a thread list corresponding to each of the plurality of processors, and is included in the thread list in a header part of each thread list.
- the earliest entry time in the entry time information set in the thread information is recorded, and the recorded information is managed as a setting that can be referred to by other processor powers.
- the memory area management unit stores the oldest entry time information set in a header part of a processor-compatible thread list managed by the thread management unit.
- the oldest entry time is selected from the oldest entry time information set in the header section of the thread list corresponding to all processors, and the selected oldest entry time and the release queue are selected.
- a comparison is made with the release request time set for each queue element included in, and the allocation of the memory area corresponding to the queue element with the release request time set before the selected oldest entry time is executed. It is characterized by that.
- the thread management unit records identification information of other list components in the header and list component of the thread list, and the header power is also sequentially increased.
- the thread list is constructed as a list having a configuration capable of acquiring each component, and the identification information set in the header or list component is updated when a thread enters or exits. To do.
- the memory area management unit includes
- the identification information of other queue elements is recorded in the header and queue element of the release queue, and the release queue is constructed as a list having a configuration in which each queue element can sequentially acquire each queue element, and a new queue is set or queued. In the deletion process, the identification information set in the header or queue element is updated.
- the memory area management unit executes a memory management process in units of heaps as a finite size memory area set corresponding to the processor.
- a release queue as a queue that records the release request time in units of heaps for a heap that has a release request and is not released is held as memory area management information, and is included in the release queue when allocating memory areas. It is characterized in that the memory area recorded in each queue element in units of heaps is allocated.
- the memory area management unit includes a weak pointer as a pointer to refer to the memory area, and a memory corresponding to a queue element included in the release skew.
- a weak pointer that references the area
- the queue element is discarded from the release queue and the memory area corresponding to the queue element is released. It is characterized by being.
- the memory area management unit includes a weak pointer as a pointer to refer to the memory area, and a memory corresponding to the queue element included in the release skew. Verify the retired flag of the memory area included in the weak pointer chain that includes the weak pointer that references the area and the memory area that includes the reference area of the weak pointer, and the retired flag is retired. Indicates that the queue element is discarded from the release queue and the memory area corresponding to the queue element is released.
- the second aspect of the present invention provides
- a thread management step for generating and updating a thread list having thread information that records entry time information for each thread as an operating system function call time from each data processing program;
- a memory area management step for generating and updating a release queue as a memory area management information in which a release request time is recorded for each area of a memory area that has a memory release request and is not released, as memory area management information;
- the release request time set for each queue element included in the release queue is compared with the earliest entry time in each element of the thread list, and the release request time is A memory area allocation step for executing a memory area allocation process corresponding to a queue element set before the old entry time;
- the thread management step generates a thread list corresponding to each of the plurality of processors, and stores the thread list in a header section of each thread list.
- the earliest entry time in the entry time information set in the included thread information is recorded, and the recorded information is managed as a setting that can be referred to by other processors.
- the memory area allocating step refers to all the oldest entry time information set in the header part of the processor-compatible thread list. The oldest entry time is selected from the oldest entry time information set in the header part of the thread list corresponding to all processors, and the selected oldest entry time and each queue element included in the release queue are selected. A comparison with a set release request time is performed, and an allocation of a memory area corresponding to a queue element whose release request time is set before the selected oldest entry time is executed.
- the thread management step records identification information of other list components in the header and list components of the thread list, It includes a step of constructing a thread list as a list having a configuration capable of sequentially acquiring each component, and executing processing for updating identification information set in the header or the list component when a thread enters or exits.
- identification information of other queue elements is recorded in a header and a queue element of the release queue, and a header force is also sequentially added to each queue.
- a step of constructing a leaky queue as a list having a configuration capable of acquiring elements, and executing a process of updating the identification information set in the header or queue element when setting a new queue or deleting a queue It is characterized by this.
- the memory area management step executes a memory management process in units of heaps as a finite size memory area set corresponding to the processor.
- the release queue as a queue in which the release request time of the heap unit is recorded is held as memory area management information for an unreleased heap that has a release request, and the memory area allocation step is included in the release queue. It is characterized by allocating the memory area recorded in each queue element for each heap.
- the memory area management step includes a weak pointer as a pointer to refer to the memory area, and the queue element included in the release queue Weak boy referencing the memory area corresponding to When the weak pointer chain does not exist in the weak pointer chain, the queue element is discarded from the release queue and the memory area corresponding to the queue element is released.
- the memory area management step includes a weak pointer as a pointer to refer to the memory area, and the queue element included in the release queue
- the queue element included in the release queue We check the retired flag of the memory area included in the weak pointer chain whose components are the weak pointer that references the memory area corresponding to and the weak pointer reference area, and the retired flag is retired In the case of indicating that the queue element is included, the queue element is discarded from the release queue and the memory area corresponding to the queue element is released.
- the third aspect of the present invention provides
- a computer program that performs memory space management processing
- a thread management step for generating and updating a thread list having thread information that records entry time information for each thread as an operating system function call time from each data processing program;
- a memory area management step for generating and updating a release queue as a memory area management information in which a release request time is recorded for each area of a memory area that has a memory release request and is not released, as memory area management information;
- the release request time set for each queue element included in the release queue is compared with the earliest entry time in each element of the thread list, and the release request time is A memory area allocation step for executing a memory area allocation process corresponding to a queue element set before the old entry time;
- the computer 'program of the present invention is a storage medium, communication medium such as a CD or the like provided in a computer-readable format to a general-purpose computer system capable of executing various program' codes, for example.
- a computer program that can be provided by a storage medium such as FD or MO or a communication medium such as a network. By providing such a program in a computer-readable format, it can be Processing according to the program is realized.
- system is a logical group configuration of a plurality of devices, and the devices of each configuration are not limited to being in the same casing.
- a thread list having thread information capability in which entry time information for each thread as a data processing unit is recorded is held as thread management information.
- the release queue as a queue that records the release request time for each area unit is held as memory area management information, and the release set for each queue element included in the release queue during memory area allocation processing Since the comparison is made between the request time and the oldest entry time in the thread list, and the memory area allocation processing corresponding to only the queue elements whose release request time is set before the oldest entry time is executed, Make sure to select only the memory area that will be the access target for all threads! / And execute the allocation process. It becomes possible, Do such occurrence of ⁇ click Sesuera in each thread, it is possible allocation process secure memory area.
- FIG. 1 is a diagram showing a configuration example of an information processing apparatus according to the present invention.
- FIG. 2 is a diagram illustrating a configuration example of a processor module.
- FIG. 3 is a diagram illustrating a software configuration in the information processing apparatus of the present invention.
- FIG. 4 is a diagram for explaining a general memory area access processing example.
- FIG. 5 is a diagram for explaining a general memory area access processing example.
- FIG. 6 is a diagram for explaining information managed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 7 is a diagram for explaining details of information managed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 8 is a diagram illustrating details of information managed by a memory area management unit in the information processing apparatus of the present invention.
- FIG. 9 is a flowchart illustrating a thread information entry processing sequence executed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 10 is a diagram illustrating details of thread information entry processing executed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 11 is a flow diagram illustrating a sequence of thread information exit processing executed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 12 is a diagram for explaining details of thread information exit processing executed by a thread management unit in the information processing apparatus of the present invention.
- FIG. 13 is a flowchart illustrating a sequence of a memory area release request registration process executed by a memory area management unit in the information processing apparatus of the present invention.
- FIG. 14 is a flowchart for explaining details of memory area allocation processing executed by a memory area management unit in the information processing apparatus of the present invention.
- FIG. 15 is a diagram illustrating the configuration of a weak pointer and the configuration of a weak pointer chain.
- FIG. 16 is a diagram illustrating a flowchart explaining a pointer value acquisition processing sequence from a weak pointer.
- FIG. 17 is a flowchart illustrating a release queue update (flush) processing sequence in a configuration having a weak pointer.
- the processor module 101 is a module composed of a plurality of processors (Processing Units), and is compatible with an operating system (OS) according to a program stored in a ROM (Read Only Memory) 104, HDD 123, or the like. Execute data processing according to various programs such as application 'programs. Details of the profiler module 101 will be described later with reference to FIG. [0030]
- the graphic engine 102 executes data generation, for example, 3D graphic drawing processing for screen output to a display device constituting the output unit 122 in accordance with an instruction input from the processor module 101.
- a main memory (DRAM) 103 stores a program to be executed by the processor module 101 and parameters that change as appropriate according to the execution. These are connected to each other by a host bus 111 that also has power such as a CPU bus.
- the host bus 111 is connected via a bridge 105 to an external bus 112 such as a PCI (Peripheral Component Interconnect / Interface) bus.
- the bridge 105 executes data input / output control between the host bus 111 and the external bus 112, and with the controller 106, the memory card 107, and other devices.
- the input unit 121 inputs input information of an input device operated by a user such as a keyboard and a pointing device.
- the output unit 122 includes an image output unit such as a liquid crystal display device or a CRT (Cathode Ray Tube) and an audio output unit such as a speaker.
- An HDD (Hard Disk Drive) 123 has a built-in hard disk, drives the hard disk, and records or reproduces a program executed by the processor module 101 and information.
- the drive 124 reads the data or program recorded on the removable recording medium 127 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory that is mounted and reads the data or program.
- the data is supplied to the main memory (DRAM) 103 connected via the interface 113, the external bus 112, the bridge 105, and the host bus 111.
- DRAM main memory
- connection port 125 is a port for connecting the external connection device 128 and has a connection unit such as USB, IEEE1394.
- the connection port 125 is connected to the processor module 101 and the like via the interface 113, the external bus 112, the bridge 105, and the host bus 111.
- the communication unit 126 is connected to the network and executes transmission of data provided from the processor module 101, the HDD 123, and the like, and reception of data from the outside.
- the processor module 200 includes a main processor group 201 composed of a plurality of main processors and a plurality of sub processor groups 202 to 20n composed of a plurality of sub processors. Each has a memory controller and secondary cache. Each of the processor groups 201 to 20n has, for example, eight processor units, and is connected by a crossbar architecture or a packet switching network. Under the instruction of the main processor of the main processor group 201, one or more sub processors of the plurality of sub processor groups 202 to 20n are selected, and a predetermined program is executed.
- the memory flow controller installed in each processor group executes data input / output control with the main memory 103 shown in FIG. 1, and the secondary cache is used as a storage area for processing data in each processor group. Is done.
- FIG. 3 is a diagram showing a software stack in the information processing apparatus of the present invention.
- An operating system (OS) 310 and an application 'program 320 executed on the operating system (OS) 310 are configured.
- the operating system (OS) 310 has a kernel 311 that executes multitask control, file system management, memory management, input / output control processing, and the like.
- the kernel 311 is a thread management unit (system call descriptor) that executes thread management processing. (Spatcher) 312, a memory area management unit (heap management module) 313 for executing a memory area management process, and other kernel modules 314.
- the memory area management unit (heap management module) 313 manages the allocation of objects to heaps.
- the memory area management unit (heap management module) 313 performs efficient heap allocation to each thread that requests a memory area (heap) while appropriately releasing a finite heap.
- Memory allocation processing for a general thread will be described with reference to Figs. As shown in Fig. 4, the memory area x351, memory area y352, and memory area z353 set as objects can be accessed by the thread power executed by the program through the ID table 350 set as pointer information to the objects. Become.
- the OS kernel locks the ID table to prevent access from other threads. To prevent. Therefore, other threads cannot execute the memory access until the lock is released, and the processing is awaited.
- FIG. 5 shows a configuration having a two-stage ID table.
- the ID table a371 is applied to access the memory area x361 and the memory area z362 as objects, and the memory area z362 has the second ID table b372 and applies the second ID table b372.
- the OS kernel locks the ID table to prevent access from other threads. Therefore, other threads cannot execute memory access until the lock is released, and the processing is awaited.
- the memory management process executed by the kernel is As a result, a process for locking the ID table a371 is executed, and as a result, even a usable memory area cannot be effectively used.
- the present invention eliminates such an inefficient configuration of use of memory and enables efficient memory allocation to each thread. This processing is executed by the thread management unit (system call dispatcher) 312 and the memory area management unit (heap management module) 313 of the kernel 311 shown in FIG. Specific processing will be described below with reference to the drawings.
- the thread management unit (system call dispatcher) 312 performs thread management for each processor that executes threads provided in the information processing apparatus.
- the thread management unit (system call dispatcher) 312 holds thread management information for each processor.
- the thread management information will be described with reference to FIG. 6 and FIG. Figure 6 shows the thread list that constitutes the thread management information for each processor.
- a thread list corresponding to only processor 1 and processor 2 is shown.
- the thread management unit (system call dispatcher) 312 generates and holds a thread list as management information corresponding to the execution processor of the thread.
- FIG. 6 (a) is a thread list as thread management information of the processor 1, and the concatenation data of the entry time information of individual threads running in the hypervisor on the processor 1, and the oldest entry time. It consists of a list consisting of information.
- Fig. 6 (b) is a thread list as thread management information for processor 2, which is based on the concatenation data of the entry time information of individual threads running in the hypervisor in processor 2 and the oldest entry time information. Consists of a list.
- the thread entry time information corresponds to the function call time of the operating system from the application program as various data processing programs. In any list, the oldest entry time information can be referred to from other processors.
- a thread is a data processing execution unit corresponding to a logical partition. In order to execute a thread, it is necessary to secure various resources such as a processor and a memory area.
- Thread Manager (System call dispatcher) 312 classifies each thread for each processor, generates a thread list as thread information waiting for allocation of a memory area, and manages the thread.
- the hypervisor is a privilege layer located between the logical partition and the hardware, and executes a management process for the logical partition.
- a thread is a process executed by a logical partition, and each thread executed in the processor module described with reference to FIGS. 1 and 2 is executed by a logical partition.
- Each logical partition is allocated hardware resources in the system (resource: main processor, sub-processor, memory, device, etc. as computer resources), and each logical partition executes processing that applies the allocated resources.
- the thread management unit (system call dispatcher) 312 records and holds the entry time information related to the thread identified by the hypervisor as a privilege layer located between the logical partition and the hardware.
- the thread list as thread management information for each processor is composed of concatenated data of the entry time information of each thread and the oldest entry time information.
- the management information is configured based on a combination of a variable 400 set for each processor and a variable 410 set for each thread shown in FIG.
- the thread entry time information corresponds to the function call time of the operating system from the application program as various data processing programs.
- a variable 400 set for each processor includes a header 401 and an oldest entry time 402.
- the header 401 is information including pointer information to the head element of the list.
- the oldest entry time (oldest-time) 402 the oldest entry time information in the elements set in the list is recorded.
- the list is updated as appropriate by thread entry / exit processing, and the oldest entry time (oldest-time) 402 is changed if the oldest entry time in the elements constituting the list is changed in the update process. Also updated.
- the header 401 and the oldest approach time (oldest -Time) 402 is placed in a separate cache line, and only the variables that do not need to be referenced by other processor power are collected in the cache line where the header 401 is placed.
- the cache line in which the oldest entry time (oldest-time) 402 is arranged is set as a cache line that can be referred to by other processor powers.
- the variable 410 set for each thread is composed of preceding thread identification information (prede cessor) 411 and an entry time (time) 412 as shown in the figure.
- the preceding thread identification information (predecessor) 411 is an identifier (for example, a pointer) of preceding thread correspondence information. As shown in the figure, thread information with the latest entry time is listed in the list in the order of threads with the oldest entry time, and each thread information is the preceding thread identification of the preceding thread information.
- the entry time (time) 412 indicates the entry time of each thread.
- the object-oriented memory management process treats resources as objects and is based on a finite size memory area called the heap! / Execute memory management.
- a memory area management unit (heap management module) 313 manages allocation of objects to the heap.
- the memory area management unit (heap management module) 313 performs efficient heap allocation to each thread that requests a memory area (heap) while appropriately releasing a finite heap.
- the memory area management unit (heap management module) 313 holds heap management information set corresponding to the processor. That is, it has heap management information corresponding to the number of processors.
- the heap management information includes the release queue shown in FIG.
- the release queue is queue information composed of memory area (heap) information that has been requested to be released but has not yet been released.
- the release queue shown in Fig. 8 is a release queue that is set as heap management information set for one processor. For multiple processors, the release queue shown in Figure 8 is set individually.
- the release queue is set as a linked list of header information (release-queue-head) 451 and a queue element 460.
- the queue element 460 includes a heap identifier (heap-id) 461, a release request time (release-time) 462, a subsequent queue information (successor) 463, and a memory area information 464.
- a heap identifier (heap-id) 461 is heap identification information as a memory area set corresponding to the processor.
- Release request time (release-time) 462 indicates the time when release of the heap is requested.
- Thread power This is the time when there is a request to use the heap.
- Subsequent queue information (successor) 463 is a pointer to the subsequent queue of the release queue.
- the memory area information 464 is access information to the memory area that can be used by the processor corresponding to the heap ID 461.
- the header information (release-queue-head) 451 includes a heap identifier (heap-id) and is set as information including pointer information of the head queue. As shown in the figure, it is possible to acquire all the queue elements by following the header information (release_queue_head) 451 and the subsequent queue information (successor) 463 of each queue element.
- An available processor is allocated to each thread by resource allocation, a heap area corresponding to the processor is specified, and a thread is waiting to be executed. At this time, a release queue corresponding to the allocated processor is specified.
- the queue element will be set in
- efficient memory allocation to threads is executed under the control of the thread management unit (system call dispatcher) 312 of the kernel 311 and the memory area management unit (heap management module) 313.
- the processing executed by the thread management unit (system call dispatcher) 312 and the memory area management unit (heap management module) 313 of the kernel 311 will be described below with reference to FIG. 9 and subsequent drawings.
- the thread manager (system call dispatcher) 312 performs thread information entry processing with respect to the thread list described with reference to FIGS. Execute the exit process of the host information.
- the thread information entry process is a process performed immediately after the application 'program calls an OS function.
- OS function a thread for data processing using a processor is generated.
- This thread is set in the memory area release waiting state, and is newly set as management information of the thread information output S thread management unit (system call dispatcher) 312 corresponding to this thread.
- the thread information exit process is a process performed immediately before the system call process by the OS is completed and control is returned to the application program.
- the thread can execute a thread using the processor, memory area, etc. allocated by the OS.
- the system call processing by the OS is completed and control is returned to the application 'program, the memory area (heap) has already been allocated to the thread, so thread management that manages thread information in the memory area waiting state
- the part (system call dispatcher) 312 deletes the thread information from the thread list. This process is an exit process.
- the thread entry process is executed as a process of adding new thread information 510 to the thread list as shown in FIG.
- the addition position of the new thread information 510 shown in FIG. 10A is a position pointed by the header information 501 included in the processor correspondence data 500.
- a thread list having the setting shown in FIG. 10B is constructed.
- new thread information 510 is added, it is necessary to update various information in the thread list that already exists.
- the flowchart of FIG. 9 shows the procedure of this update process.
- step S101 the variable [p] is set as the identifier of the processor that executes the entry process.
- the thread management unit (system call dispatcher) 312 sets and manages the thread list for each processor.
- the variable [P] is set as the identifier of the processor that executes the entry process in order to identify the thread list that executes the thread entry process.
- step S102 the variable [th read] is set as the identifier of the current thread that executes the entry process. That is, the variable [thread] is set as the identifier of the thread 510 shown in FIG.
- step S 103
- the value [head [p]] set in the header 501 shown in FIG. 10 (a) is set as the preceding thread information 511 of the new thread information 510, and this is further changed to the variable [old-head]. It means setting.
- step S 104
- This process corresponds to the process of setting the set value of the header 501 shown in FIG. 10 (a) as the identifier of the thread information 510 to be entered.
- step S 105
- Variable time [thread] Set the current time. This process corresponds to the process of setting the current time in the entry time information 512 of the entry thread information 510 shown in FIG.
- step S106 it is determined whether or not the variable [old-head] set in step S103 is NULL.
- the variable [old-head] set in step S103 is information set in the header 501 of FIG. 10 (a) before the approach processing. If [NULL] is set in the header 501 in FIG. 10 (a) before the entry processing, there is no thread information in the thread list, and the entry thread information 510 shown in FIG. This is the only thread information set in the list. In this case, the oldest entry time 502 included in the data set correspondence data 500 shown in FIG. 10 (a) is set to the time information set as the entry thread entry time information 512 in step S105, that is, time [thread]. Set.
- variable [old-head] is not NULL, it means that thread information having an entry time older than the entry thread information 510 exists in the thread list. The process ends without executing the process of updating the oldest entry time 502 included in the processor-compatible data 500 shown in a).
- a thread list in which entry thread information 510 is set at a position that can be acquired by the header 501 of the processor correspondence data 500 is generated as shown in FIG. 10B.
- Thread exit processing is performed immediately before the system call processing by the OS is completed and control is returned to the application program.
- the thread can execute the thread using the processor, memory area, etc. allocated by the OS.
- the system call processing by the OS is completed and control returns to the application 'program, the memory area (heap) has already been allocated to the thread, so the thread that manages thread information in the memory area waiting state
- the management unit (system call dispatcher) 312 deletes the thread information from the thread list. This process is an exit process.
- Step S201 and S202 in FIG. 11 are a processor and thread information specifying process for executing the leaving process.
- the variable [P] is set as an identifier of the processor for executing the leaving process.
- the variable [thread] is set as the identifier of the current thread that executes the exit process.
- Step S203 is a process of determining the position of the thread that is the target of the exit process. In other words, depending on where in the thread list the thread information subject to the exit process is located, the ability to execute the processes of steps S211 to S213 and whether to execute the processes of steps S221 to S224 are determined. Is done. More specifically, the processing differs depending on whether the thread information that is the target of the exit processing is in the shifted position in FIG. 12 (a) or FIG. 12 (b).
- FIG. 12 (a) shows a case where the thread information 550 targeted for the exit process is at the head position in the thread list, and exists at the position specified by the header 541 of the processor corresponding data 540. is there.
- the header information of the header 541 of the processor compatible data 540 The information [head [p]] is set as the identification information [thread] of the thread information 550 that is the target of the exit process, the determination in step S203 is Yes, and the processes in steps S211 to S213 are executed.
- FIG. 12 (b) shows a case where the thread information that is the target of the exit process is in a position other than the head position in the thread list.
- the header information [head [p]] of the header 541 of the processor-compatible data 540 is not set as the identification information [thre ad] of the thread information 550 that is the target of the exit process, and the determination in step S203 No, and the processing of steps S221 to S2 24 is executed.
- step S211 the header information [head [p]] of the header 541 of the data 540 corresponding to the processor is set, and the preceding thread identification information [predecessor [thread]] 551 set in the thread information 550 to be evacuated is set.
- This corresponds to setting information indicating the thread information 560 in the header 541 of the processor corresponding data 540 in FIG.
- [NULL] is set in the preceding thread identification information [pre decessor [thread]] 551!
- Information [head [p]] is also set to [NULL] force S.
- step S212 the header information [he ad [p]] of the header 541 of the processor-corresponding data 540 is set as NULL. In this case, even after the thread information 550 subject to the exit process is exited. In this case, thread information exists in the thread list. In this case, the processing is terminated without rewriting the oldest entry time [oldest-time] of the processor correspondence data 540.
- FIG. 12 (b) a description will be given of processing in a case where the thread information 550 that is the target of the leaving process is located at a position other than the head position in the thread list.
- the variable [succ] is set to the thread immediately before the exit processing thread in the list.
- the head of the list is the front. That is, the immediately preceding thread corresponds to the thread information 570 shown in FIG.
- step S222 processing for updating the preceding thread identification information [predecessor [succ]] of the thread immediately before the withdrawal processing thread to the preceding thread identification information [predecessor [thread]] of the withdrawal processing thread is executed.
- This process corresponds to setting information indicating the thread information 580 in the preceding thread identification information of the thread information 570 in FIG. Note that if there is no preceding thread of thread information 550 that is subject to exit processing, the preceding thread identification information [predecessor [thread]] 551 is set to [NULL], so V, so the preceding thread of thread information 570 [NULL] will also be set in the identification information.
- step S223 if the preceding thread identification information [predecessor [thread]] of the exit processing thread is set as NULL !, NA! /, An entry time older than the thread information 550 that is the target of the exit processing is set. This means that the thread information 580 shown in Fig. 12 (b) exists, and in this case, the oldest entry time [oldest-time] of the processor-compatible data 540 is not rewritten. End the process.
- Memory area management unit (heap management module) 313 is a professional
- the release queue shown in Fig. 8 is held as heap management information that is set corresponding to the Sessa.
- the release queue is queue information composed of memory area (heep) information that has been requested to be released but has not yet been released.
- the memory area management unit (heap management module) 313 executes a memory area (heap) release request registration process and an allocation process.
- the memory area (heap) release request registration process is a process of adding a new queue to the release queue described with reference to FIG. 8, and the memory area (heap) allocation process is the allocation of a memory area to a thread. It is a process, and the release queue power is also executed as a process to delete the queue as necessary.
- step S301 the heap ID [hid] of the queue element to be set as a new release queue is set as the heap identifier of the memory area that has been requested to be released.
- the release queue as the management information of the memory area (heap) is set as management information for each heap corresponding to the processor, and the memory area management unit (heap management module) 313 is set for each heap.
- the memory area is released and allocated, and the heap ID to be released is set as the heap ID of the queue to be added to the release queue.
- a release queue header (release-queue-head [hid]) is set in the subsequent queue information (successor) of the new queue element.
- step S303 if the value of the release queue header (release—queue—head [hid]) is set to a state such as the subsequent queue information (successor) of the release area, the release queue header (release) — Queue—head [hid]) is substituted with new queue element pointer information, and various information such as memory area information is set in the queue, and the process ends.
- step S303 if the value of the release queue header (release_queue_head [hid]) is set to a state such as the subsequent queue information (successor) of the release area! This time, the processing of steps S302 and S303 is repeated and the value of the release queue header (release- queue-head [hid]) is set to the state such as the subsequent queue information (successor) of the release area. Confirm that this is the case, set various information such as memory area information in the queue, and end the process. [0094] In step S303, if the value of the release queue header (release—queue—head [hid]) is set to a state such as the subsequent queue information (successor) of the release area,!, Na! /, This may occur when other queue setting processing by another processor is performed at the same time and the subsequent queue information (successor) in the open area is being rewritten.
- step S303 based on the confirmation that the value of the release queue header (release_queue_head [hid]) is set equal to the succeeding queue information (successor) of the release area, a new queue is added to the release queue.
- step S401 a memory area (heap) allocation processing sequence executed by the memory area management unit (heap management module) 313 will be described with reference to FIG.
- the variable [hid] is set equal to the processor identifier for executing the memory area allocation.
- the memory area allocation process is executed for each processor. First, the processor that is the target of the memory area allocation process is specified.
- step S402 it is determined whether or not an unused area memory having the same size as the memory area size requested for allocation exists.
- the memory area management unit (heap management module) 313 checks whether or not the unused area power S memory having the same size as the memory area size requested by the thread exists.
- step S405 the unused area is allocated as a memory area for data processing of the thread to which the processor having the identifier set in step S401 is applied.
- step S402 If it is determined in step S402 that there is no unused area memory having the same size as the memory area size requested for allocation, the process proceeds to step S403 and the memory area requested for allocation. It is determined whether the size is smaller than a predetermined threshold. If it is smaller, the process proceeds to step S404, and it is determined whether there is an unused area in the heap area that satisfies the memory area size for which the allocation request has been made. If there is, an unused heap area is determined in step S405. Allocate the memory area set as. This process is executed when the request memory size is smaller than a predetermined threshold value and the request is satisfied only by allocating unused heap areas.
- step S403 if the memory area size requested for allocation is not smaller than a predetermined threshold, and if the memory area size requested for allocation is smaller than the predetermined threshold, step S404 If there is no unused area in the heap area that satisfies the memory area size requested for allocation, the process from step S406 is executed to execute the memory area allocation process.
- the process of step S406 is executed as a process referring to the release queue and thread list.
- step S406 the variable [head] is set as the release queue header (release—queue—head [hid]), and the release queue header (release—queue—head [hid]) is set to 0. Execute.
- step S407 the variable [time] is set to the minimum value among the oldest entry times set in the thread list corresponding to all processors, that is, the oldest time.
- step S409 the subsequent queue information (successor) at the end of the remaining queue excluding the queue deleted from the release queue in step S408 is set in the release queue header (release-queue-head [hid]).
- step S410 if the value of the release queue header (release—queue—head [hid]) is set to be equal to the subsequent queue information (succe ssor) of the last queue, the release queue is released in step S408.
- the pointer to the head of the remaining queue excluding the queue whose queue power is deleted is set in the release queue header (release queue head [hid]), and the processing ends.
- step S410 the value of the release queue header (release- queue-head [hid]) is set to a state such as the successor queue information (successor) of the last queue! S409 [Return, repeat the processing of steps S409 and S410, set the status of the release queue header (release— queue— head [hid]) and the status of the subsequent queue information (successor) of the last queue. After confirming this, various information such as memory area information is set in the queue and the process is terminated.
- step S410 the value of the release queue header (release- queue-head [hid]) is set to the state such as the subsequent queue information (successor) of the last queue! This may occur when other queues are set and deleted by other processors at the same time, and subsequent queue information (successor) is being rewritten.
- the memory area management unit (heap management module) 313 has the release request time (release time) set for each element of the release queue.
- the oldest set in the thread list corresponding to all processors Select only those with time information smaller than the minimum value during the entry time, delete them from the release queue, release the memory area corresponding to these queues, and allocate to the memory request thread Therefore, it becomes possible to execute the allocation process by reliably selecting only the memory area, which is the access target for all threads V, and there is no occurrence of an access error in each thread. Memory area can be allocated.
- the release queue is set as a linked list of header information (release-queue-head) 451 and queue element 460 as described with reference to FIG.
- the queue element 460 includes a heap identifier (heap_id) 461, a release request time (r elease-time) 462, subsequent queue information (successor) 463, and memory area information 464.
- a heap identifier (heap-id) 461 is heap identification information as a memory area set corresponding to the processor.
- Release request time (release-time) 462 is the release of the heap Indicates the requested time.
- Thread power This is the time when there is a request to use the heap.
- Subsequent queue information (successor) 463 is a pointer to the subsequent queue of the release queue.
- the memory area information 464 is access information to the memory area that can be used by the processor corresponding to the heap ID 461.
- the header information (release-queue-head) 451 includes a heap identifier (heap-id) and is set as information including pointer information of the head queue. As shown in the figure, it is possible to acquire all the queue elements by following the header information (release_queue_head) 451 and the subsequent queue information (successor) 463 of each queue element.
- An available processor is allocated to each thread by resource allocation, the heap area corresponding to the processor is specified, and the thread is waiting to be executed. At this point, the release queue corresponding to the allocated processor is specified.
- the queue element will be set in
- the release queue described with reference to Fig. 8 is held as memory area management information, and the release request time set in each queue element included in the release queue and the thread list during memory area allocation processing By comparing with the oldest entry time, the configuration is made so that the memory area allocation processing corresponding to only the queue element whose release request time is set before the oldest entry time is executed. As a result, it is possible to reliably select only memory areas that are not to be accessed! /, And to execute the allocation process, and to safely allocate memory areas without any access error in each thread. Is realized.
- the value of the reference counter (rf: Reference Counter) that is set for each heap (memory area) is applied to determine whether or not the memory area becomes an access target. It is possible. If the reference counter count is 1 or more, the heap (memory area) is referenced. That is, it can be confirmed that the referring thread exists.
- the weak pointer is a special pointer that does not increase the value of the above-mentioned reference counter (rf) set for the heap (memory area). That is, even if the pointer refers to the heap (memory area), if it is a weak pointer that is different from the normal pointer, it is not reflected in the value of the reference counter (rf) corresponding to the heap (memory area), and the reference counter ( Based on the value of rf), it is not possible to determine whether there is a reference. However, when the heap reference of the weak pointer is released, the address information corresponding to the heap (memory area) held by the weak pointer is updated to 0 (NULL). In other words, the weak pointer updates its pointer information to 0 (NULL) without affecting the heap reference counter.
- rf reference counter
- FIG. 15 shows a heap (memory area) 600 having a weak pointer and a reference memory area referenced by the weak pointer.
- the memory area information 464 of each queue element 460 in the release queue of FIG. 8 has the configuration of the heap (memory area) 600 of FIG.
- Each weak pointer a to n is a weak pointer that refers to the same reference memory area. As shown in the figure, the weak pointers a to n have a configuration in which the following member variables are set in addition to the pointer header including the pointer ID as the pointer identifier.
- the object pointer is an object member variable as memory area information to be referred to.
- the group of weak pointers a to n are weak pointers that refer to the same reference memory area, and the same object pointer is set.
- the successor and predecessor form a chain of a weak pointer with the same reference memory area and a heap (memory area) with a reference memory area referenced by the weak pointer.
- Pointer variable The successor is a weak pointer or heap identification information as a succeeding object, and the weak pointer or heap identification information is set as a predecessor in the predecessor.
- the successor and predecessor are set to a weak pointer having the same reference memory area and a heap (memory area) having a reference memory area referenced by the weak pointer. And a bi-directional link, or chain, that connects the heaps to each other is built. This chain is called the weak pointer chain.
- each information of the retired flag and the reference counter is set in the heap (memory area).
- the reference counter has a value corresponding to the reference state of the memory area.
- reference information about weak pointers is not reflected, and reference information other than weak pointers is reflected.
- the retired flag is a flag for determining whether or not there is no reference by a pointer including a weak pointer, that is, whether or not it is retired. For example, when it is retired [1], when it is not retired [0] Set to Note that the retired flag is set to [0] in the initialization process in which new memory allocation is performed.
- the pointer value of the weak pointer that is, the object pointer as an object member variable corresponding to the address required to refer to the reference memory area
- the processing procedure for acquiring the data will be described with reference to the flowchart shown in FIG.
- step S501 When acquiring a pointer value from a weak pointer, first, in step S501, the object pointer of the weak pointer, that is, the object member variable force is not 0. (Condition 1) In addition, the value of the reference counter (rf) set in the heap associated by the weak pointer chain must be greater than or equal to ⁇ (Condition 2), and whether these two conditions are satisfied is determined. .
- step S502 If these two conditions are satisfied, the process proceeds to step S502, and the object member variable corresponding to the address necessary for referring to the value of the object, that is, the reference memory area set in the weak pointer. Returns an object pointer as. On the other hand, if these two conditions are not satisfied, the process proceeds to step S503 and [0] is returned.
- the step In S503, [0] is returned. If the value of the reference counter (rf) is ⁇ , it is not determined whether there is a reference with a weak pointer equivalent to the case where there is no reference with a pointer other than the weak pointer. In this situation, if the pointer value from the weak pointer is acquired, the object pointer of the weak pointer is set to 0, and then memory access using the pointer information of the weak pointer becomes impossible. Because of the loss of pointer information for weak pointers, the ability to change the configuration of the release skew S may not be executed smoothly. In order to prevent this problem from occurring, the pointer value is not acquired in such a situation.
- the release queue corresponds to the release queue described with reference to FIG. 8, and is information managed by the memory area management unit (heap management module) 313.
- the memory area management unit (heap management module) 313 manages the allocation of objects to the heap.
- a memory area management unit (heap management module) 313 performs efficient heap allocation to each thread that requests a memory area (heap) while appropriately releasing a finite heap.
- the memory area management unit (heap management module) 313 holds heap management information set corresponding to the processor. That is, heap management information corresponding to the number of processors Have.
- the heap management information includes the release queue shown in FIG.
- the release queue is queue information composed of memory area (heap) information that has been requested to be released but V has not yet been released.
- step S601 the release queue is emptied. That is, the pointer information of the first queue in the release queue header 451 in FIG.
- step S602 the release time of the object (release queue element) set in the release queue to be processed, that is, the release request time (release-time) is set in the thread list corresponding to the processor. Compare with the earliest entry time. If the release time is less than the oldest approach time, the process proceeds to step S603.
- step S603 In step S603,
- step S604 the object is discarded, that is, the memory area corresponding to the object (release queue element) set in the release queue. , And the release cue force also deletes that object (release skew element).
- step S621 If neither of these conditions a or b is satisfied, the process proceeds to step S621, and object members of all we ak pointers included in the weak pointer chain set corresponding to the heap (memory area). The value of the object pointer as a variable is set to [0].
- step S622 the retired flag is set to [1].
- step S624 the current time is assigned to the release time of the object (release queue element) set in the release queue, that is, the release request time (release-time), and the object (release queue element) is Set the release queue again.
- step S602 the release time of the object (release queue element) set in the release queue to be processed, that is, the release request time (release-time) force is set in the thread list corresponding to the processor. If it is determined that it is not less than the oldest entry time, the process proceeds to step S611, and the reference flag (rf) set in the heap (memory area) specified by the object (release queue element) heap ID is set. It is determined whether or not the force is 0. If it is 0, the process proceeds to step S624, and the object (release queue element) is set again in the release queue.
- the memory area management unit 313 includes a weak pointer that references a memory area corresponding to a queue element included in the release queue and a weak pointer reference area in a configuration that includes a weak pointer as a pointer that references the memory area. If weak pointer chain verification with a memory area component confirms that there is no weak pointer in the weak pointer chain, or the retired flag of the memory area included in the weak pointer chain has been retired If this is the case, the queue element is discarded from the release queue, and the memory area corresponding to this queue element is released.
- the program can be recorded in advance on a hard disk or ROM (Read Only Memory) as a recording medium.
- the program can be temporarily or permanently stored on a removable recording medium such as a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto optical) disk, DVD (Digital Versatile Disc), magnetic disk, or semiconductor memory. Can be stored (recorded).
- a removable recording medium such as a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto optical) disk, DVD (Digital Versatile Disc), magnetic disk, or semiconductor memory.
- Such removable recording media can be provided as V, so-called packaged software.
- the program is installed on the computer with the above-described removable recording medium power, or is wirelessly transferred from the download site to the computer, or via a network such as a LAN (Local Area Network) or the Internet.
- the computer can receive the program transferred in this way and install it on a built-in recording medium such as a hard disk.
- a thread list having thread information that records entry time information for each thread as a data processing unit is held as thread management information, and a memory release request is made.
- the release request time set for each queue element included in the release queue is compared with the oldest entry time in the thread list, and the release request time is set before the oldest entry time. Since it is configured to execute the memory area allocation process that corresponds only to the queue elements that have been assigned, it is possible to reliably select only the memory area that is not the access target in all threads and execute the allocation process. This makes it possible to perform secure memory area allocation processing, such as the occurrence of an access error in each thread.
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)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020067010326A KR101150661B1 (ko) | 2004-09-29 | 2005-09-26 | 정보 처리 장치 및 메모리 영역 관리 방법 |
EP05785980A EP1684179A4 (en) | 2004-09-29 | 2005-09-26 | INFORMATION PROCESSING DEVICE, MEMORY AREA MANAGEMENT METHOD, AND COMPUTER PROGRAM |
CN2005800014770A CN1906598B (zh) | 2004-09-29 | 2005-09-26 | 信息处理设备及存储区管理方法 |
BRPI0506379-5A BRPI0506379A (pt) | 2004-09-29 | 2005-09-26 | aparelho de processamento de informação, método de gerenciamento de área de memória, e, programa de computador para efetuar um processo de gerenciamento de área de memória |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004283528 | 2004-09-29 | ||
JP2004-283528 | 2004-09-29 | ||
JP2005-170420 | 2005-06-10 | ||
JP2005170420A JP4144609B2 (ja) | 2004-09-29 | 2005-06-10 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2006035727A1 true WO2006035727A1 (ja) | 2006-04-06 |
Family
ID=36100684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2005/017645 WO2006035727A1 (ja) | 2004-09-29 | 2005-09-26 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
Country Status (10)
Country | Link |
---|---|
US (1) | US7770177B2 (ja) |
EP (1) | EP1684179A4 (ja) |
JP (1) | JP4144609B2 (ja) |
KR (1) | KR101150661B1 (ja) |
CN (1) | CN1906598B (ja) |
BR (1) | BRPI0506379A (ja) |
MY (1) | MY141494A (ja) |
RU (1) | RU2397535C2 (ja) |
TW (1) | TWI268446B (ja) |
WO (1) | WO2006035727A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7596668B2 (en) * | 2007-02-20 | 2009-09-29 | International Business Machines Corporation | Method, system and program product for associating threads within non-related processes based on memory paging behaviors |
JP4569846B2 (ja) * | 2008-04-02 | 2010-10-27 | 日本電気株式会社 | I/oノード制御方式及び方法 |
US8321651B2 (en) * | 2008-04-02 | 2012-11-27 | Qualcomm Incorporated | System and method for memory allocation in embedded or wireless communication systems |
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 |
CN117348976A (zh) * | 2017-07-10 | 2024-01-05 | 微软技术许可有限责任公司 | 用于流处理的数据处理单元 |
EP3756092A4 (en) * | 2018-05-04 | 2021-04-14 | Samsung Electronics Co., Ltd. | APPARATUS AND METHOD FOR MANAGING A SHARED RESOURCE IN A MULTI-CORE PROCESSOR |
JP6682599B2 (ja) * | 2018-10-19 | 2020-04-15 | イーソル株式会社 | オペレーティングシステム及びメモリ割り当て方法 |
JP6932755B2 (ja) * | 2018-10-19 | 2021-09-08 | イーソル株式会社 | オペレーティングシステム及びメモリ割り当て方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386536A (en) | 1991-03-28 | 1995-01-31 | Courts; Howard R. | Apparatus and method for managing memory allocation |
JPH1173364A (ja) * | 1997-08-29 | 1999-03-16 | Nec Corp | メモリバッファの管理方式 |
JPH11203193A (ja) * | 1998-01-14 | 1999-07-30 | Hitachi Ltd | 共有メモリ管理装置及び方法 |
WO1999067699A2 (en) | 1998-06-25 | 1999-12-29 | Koninklijke Philips Electronics N.V. | Dynamic memory space allocation |
Family Cites Families (25)
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 |
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 |
US6145061A (en) * | 1998-01-07 | 2000-11-07 | Tandem Computers Incorporated | Method of management of a circular queue for asynchronous access |
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 WO PCT/JP2005/017645 patent/WO2006035727A1/ja active Application Filing
- 2005-09-26 EP EP05785980A patent/EP1684179A4/en not_active Withdrawn
- 2005-09-26 KR KR1020067010326A patent/KR101150661B1/ko not_active IP Right Cessation
- 2005-09-26 BR BRPI0506379-5A patent/BRPI0506379A/pt not_active IP Right Cessation
- 2005-09-26 RU RU2006118342/09A patent/RU2397535C2/ru not_active IP Right Cessation
- 2005-09-26 CN CN2005800014770A patent/CN1906598B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386536A (en) | 1991-03-28 | 1995-01-31 | Courts; Howard R. | Apparatus and method for managing memory allocation |
JPH1173364A (ja) * | 1997-08-29 | 1999-03-16 | Nec Corp | メモリバッファの管理方式 |
JPH11203193A (ja) * | 1998-01-14 | 1999-07-30 | Hitachi Ltd | 共有メモリ管理装置及び方法 |
WO1999067699A2 (en) | 1998-06-25 | 1999-12-29 | Koninklijke Philips Electronics N.V. | Dynamic memory space allocation |
Non-Patent Citations (2)
Title |
---|
See also references of EP1684179A4 * |
TAMADA J ET AL: "Bunsan operating system solelc ni okeru system call shori no bunsanka hoshiki", INFORMATION PROCESSING SOCIETY OF JAPAN KENKYU HOKOKU, vol. 2003, no. 19, 27 February 2003 (2003-02-27), pages 55 - 60, XP002993710 * |
Also Published As
Publication number | Publication date |
---|---|
JP2006127463A (ja) | 2006-05-18 |
JP4144609B2 (ja) | 2008-09-03 |
BRPI0506379A (pt) | 2006-12-26 |
EP1684179A1 (en) | 2006-07-26 |
KR20070050002A (ko) | 2007-05-14 |
TW200620107A (en) | 2006-06-16 |
EP1684179A4 (en) | 2009-01-21 |
CN1906598B (zh) | 2010-05-26 |
TWI268446B (en) | 2006-12-11 |
RU2006118342A (ru) | 2007-12-20 |
KR101150661B1 (ko) | 2012-05-25 |
MY141494A (en) | 2010-04-30 |
US20060070072A1 (en) | 2006-03-30 |
US7770177B2 (en) | 2010-08-03 |
CN1906598A (zh) | 2007-01-31 |
RU2397535C2 (ru) | 2010-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2006035727A1 (ja) | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム | |
JP3593241B2 (ja) | 計算機の再起動方法 | |
US9658905B2 (en) | Information processing apparatus and method for carrying out multi-thread processing | |
US6889269B2 (en) | Non-blocking concurrent queues with direct node access by threads | |
JP4345630B2 (ja) | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム | |
US20090100249A1 (en) | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core | |
US6848021B2 (en) | Efficient data backup using a single side file | |
US10394488B2 (en) | Managing a collection of data | |
US7263592B2 (en) | Method for completely lock-free user-level dynamic memory allocation | |
US7149865B2 (en) | Memory allocation using mask-bit pattern to encode metadata within memory address | |
US9235426B2 (en) | Multicore processor system, computer product, and notification method for updating operating system | |
US9021492B2 (en) | Dual mode reader writer lock | |
JP5553685B2 (ja) | 情報処理装置および情報処理方法 | |
JP2000276359A (ja) | 情報処理装置、プログラム初期化方法及びプログラム提供媒体 | |
WO2007049543A1 (ja) | 演算装置 | |
JP2006099333A (ja) | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム | |
US20230236906A1 (en) | Information processing device, information processing method, and program | |
JP2011248469A (ja) | 情報処理装置および情報処理方法 | |
JP3206580B2 (ja) | Dmaデータ転送制御方法及び入出力処理装置 | |
JP2023039164A (ja) | 情報処理実行制御装置、情報処理実行制御方法、及び、情報処理実行制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200580001477.0 Country of ref document: CN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1862/DELNP/2006 Country of ref document: IN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS KE KG KM KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
REEP | Request for entry into the european phase |
Ref document number: 2005785980 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2005785980 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020067010326 Country of ref document: KR Ref document number: 2006118342 Country of ref document: RU |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWP | Wipo information: published in national office |
Ref document number: 2005785980 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: PI0506379 Country of ref document: BR |
|
NENP | Non-entry into the national phase |
Ref country code: DE |