WO2006035727A1 - 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム - Google Patents

情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム Download PDF

Info

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
Application number
PCT/JP2005/017645
Other languages
English (en)
French (fr)
Inventor
Atsushi Togawa
Original Assignee
Sony Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corporation filed Critical Sony Corporation
Priority to KR1020067010326A priority Critical patent/KR101150661B1/ko
Priority to EP05785980A priority patent/EP1684179A4/en
Priority to CN2005800014770A priority patent/CN1906598B/zh
Priority to BRPI0506379-5A priority patent/BRPI0506379A/pt
Publication of WO2006035727A1 publication Critical patent/WO2006035727A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

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

明 細 書
情報処理装置、メモリ領域管理方法、並びにコンピュータ 'プログラム 技術分野
[0001] 本発明は、情報処理装置、メモリ領域管理方法、並びにコンピュータ 'プログラムに 関する。さらに詳細には、複数のスレッドが並行にメモリ領域を参照し更新する構成 にお 、て、適切なメモリ領域の割り当ておよびメモリ管理処理を実現する情報処理装 置、メモリ領域管理方法、並びにコンピュータ 'プログラムに関する。
背景技術
[0002] 単一のあるいは複数のオペレーティングシステム(OS)上で、複数のデータ処理プ ログラムを実行する場合、システムで共通のハードウェア、すなわち CPUやメモリ等を 時系列に順次切り替えて利用した処理が行なわれる。
[0003] 複数 OSの各々の実行プロセス(タスク)のスケジューリングは、例えばパーティショ ン管理ソフトウェアによって実行される。 1つのシステムに OS ( a )と OS ( β )の 2つの オペレーティングシステムが並存する場合、 os ( a )の処理をパーティション Aとし、
OS ( j8 )の処理をパーティション Bとすると、パーティション管理ソフトウェアは、パーテ イシヨン Aとパーティション Bの実行スケジュールを決定し、決定したスケジュールに基 づいて、ハードウェア資源を割り当てて各 OSにおける処理を実行する。
[0004] マルチ OS型のシステムにおけるタスク管理を開示した従来技術として、例えば、特 許文献 1がある。特許文献 1には、複数の OSの各々において実行されるタスク管理 において、緊急性の高い処理を優先的に処理させるためのタスクスケジューリング手 法を開示している。
[0005] 単一のあるいは複数のオペレーティングシステム(OS)上で、複数のプログラムを実 行する場合、プログラム実行単位として規定されるスレッドが並列に複数存在し、個 々のスレッドが共通リソースとしてのメモリを利用する。このような状態において、例え ばあるスレッドがある特定のメモリ領域をアクセスしている間に、他のスレッドに対して そのメモリ領域の開放を行なうとアクセスエラーなどの原因となる。従来は、割り込み 禁止時間の設定などにより、このようなエラーの発生を防止する構成を採用していた 力 割り込み禁止時間の設定による処理遅延などの副次的問題が発生する。
特許文献 1 :特開 2003— 345612号公報
発明の開示
発明が解決しょうとする課題
[0006] 本発明は、上述の問題点に鑑みてなされたものであり、複数のスレッドが並行にメ モリ領域を参照し更新する構成にぉ ヽて、アクセスエラー等を発生させな ヽ適切なメ モリ領域の割り当ておよびメモリ管理処理を実現する情報処理装置、メモリ領域管理 方法、並びにコンピュータ 'プログラムを提供することを目的とする。
課題を解決するための手段
[0007] 本発明の第 1の側面は、
情報処理装置であり、
データ処理単位としてのスレッド情報を管理するスレッド管理部と、
メモリ領域の管理を実行するメモリ領域管理部とを有し、
前記スレッド管理部は、各データ処理プログラムからのオペレーティングシステムの 機能呼出時刻としての進入時刻情報をスレッド毎に記録したスレッドリストをスレッド 管理情報として保持し、
前記メモリ領域管理部は、開放要求があり未開放のメモリ領域についての領域単位 毎の開放要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情報 として保持し、メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各 キュー要素に設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入 時刻との比較を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュ 一要素に対応するメモリ領域の割り当てを実行する構成であることを特徴とする情報 処理装置にある。
[0008] さらに、本発明の情報処理装置の一実施態様において、前記スレッド管理部は、複 数プロセッサ各々に対応するスレッドリストを生成し、各スレッドリストのヘッダ部に、ス レッドリストに含まれるスレッド情報に設定さたれ進入時刻情報中の最古の進入時刻 を記録し、該記録情報を他プロセッサ力 参照可能な設定として管理する構成を有 することを特徴とする。 [0009] さらに、本発明の情報処理装置の一実施態様において、前記メモリ領域管理部は 、前記スレッド管理部の管理するプロセッサ対応のスレッドリストのヘッダ部に設定さ れた最古進入時刻情報をすベて参照し、全てのプロセッサ対応のスレッドリストのへ ッダ部に設定された最古進入時刻情報中、最も古い最古進入時刻を選択し、該選択 最古進入時刻と、前記リリースキューに含まれる各キュー要素に設定された開放要求 時刻との比較を実行し、開放要求時刻が前記選択最古進入時刻以前に設定された キュー要素に対応するメモリ領域の割り当てを実行する構成であることを特徴とする。
[0010] さらに、本発明の情報処理装置の一実施態様において、前記スレッド管理部は、前 記スレッドリストのヘッダおよびリスト構成要素に他のリスト構成要素の識別情報を記 録し、ヘッダ力も順次各構成要素を取得可能な構成を持つリストとしてスレッドリストを 構築し、スレッドの進入、退出に際して、ヘッダまたはリスト構成要素に設定された識 別情報の更新処理を実行する構成であることを特徴とする。
[0011] さらに、本発明の情報処理装置の一実施態様において、前記メモリ領域管理部は
、前記リリースキューのヘッダおよびキュー要素に他のキュー要素の識別情報を記録 し、ヘッダ力も順次各キュー要素を取得可能な構成を持つリストとしてリリースキュー を構築し、新たなキューの設定、またはキューの削除処理に際して、ヘッダまたはキ ユー要素に設定された識別情報の更新処理を実行する構成であることを特徴とする
[0012] さらに、本発明の情報処理装置の一実施態様において、前記メモリ領域管理部は 、プロセッサに対応して設定される有限サイズのメモリ領域としてのヒープ単位でのメ モリ管理処理を実行する構成であり、開放要求があり未開放のヒープについてヒープ 単位の開放要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情 報として保持し、メモリ領域の割り当て処理に際して、前記リリースキューに含まれるヒ ープ単位の各キュー要素に記録されたメモリ領域の割り当てを実行する構成であるこ とを特徴とする。
[0013] さらに、本発明の情報処理装置の一実施態様において、前記メモリ領域管理部は 、メモリ領域を参照するポインタとして weakポインタを含む構成において、前記リリー スキューに含まれるキュー要素に対応するメモリ領域を参照する weakポインタを構 成要素とする weakポインタチェーンの検証を実行し、該 weakポインタチェーンに we akポインタが存在しない場合、当該キュー要素をリリースキューから破棄し、該キュー 要素対応のメモリ領域の開放を実行する構成であることを特徴とする。
[0014] さらに、本発明の情報処理装置の一実施態様において、前記メモリ領域管理部は 、メモリ領域を参照するポインタとして weakポインタを含む構成において、前記リリー スキューに含まれるキュー要素に対応するメモリ領域を参照する weakポインタと該 w eakポインタの参照領域を含むメモリ領域を構成要素とする weakポインタチェーンに 含まれるメモリ領域のリタイア済みフラグを検証し、該リタイア済みフラグがリタイア済 みであることを示す場合、当該キュー要素をリリースキューから破棄し、該キュー要素 対応のメモリ領域の開放を実行する構成であることを特徴とする。
[0015] さらに、本発明の第 2の側面は、
メモリ領域管理方法であり、
各データ処理プログラムからのオペレーティングシステムの機能呼出時刻としての 進入時刻情報をスレッド毎に記録したスレッド情報力 なるスレッドリストを生成、更新 するスレッド管理ステップと、
メモリ開放要求があり未開放のメモリ領域についての領域単位毎の開放要求時刻 を記録した待ち行列としてのリリースキューをメモリ領域管理情報として生成、更新す るメモリ領域管理ステップと、
メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各キュー要素に 設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入時刻との比較 を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュー要素に対応 するメモリ領域の割り当て処理を実行するメモリ領域割り当てステップと、
を有することを特徴とするメモリ領域管理方法にある。
[0016] さらに、本発明のメモリ領域管理方法の一実施態様において、前記スレッド管理ス テツプは、複数プロセッサ各々に対応するスレッドリストを生成し、各スレッドリストのへ ッダ部に、スレッドリストに含まれるスレッド情報に設定さたれ進入時刻情報中の最古 の進入時刻を記録し、該記録情報を他プロセッサから参照可能な設定として管理す ることを特徴とする。 [0017] さらに、本発明のメモリ領域管理方法の一実施態様において、前記メモリ領域割り 当てステップは、プロセッサ対応のスレッドリストのヘッダ部に設定された最古進入時 刻情報をすベて参照し、全てのプロセッサ対応のスレッドリストのヘッダ部に設定され た最古進入時刻情報中、最も古い最古進入時刻を選択し、該選択最古進入時刻と、 前記リリースキューに含まれる各キュー要素に設定された開放要求時刻との比較を 実行し、開放要求時刻が前記選択最古進入時刻以前に設定されたキュー要素に対 応するメモリ領域の割り当てを実行することを特徴とする。
[0018] さらに、本発明のメモリ領域管理方法の一実施態様において、前記スレッド管理ス テツプは、前記スレッドリストのヘッダおよびリスト構成要素に他のリスト構成要素の識 別情報を記録し、ヘッダ力 順次各構成要素を取得可能な構成を持つリストとしてス レッドリストを構築し、スレッドの進入、退出に際して、ヘッダまたはリスト構成要素に設 定された識別情報の更新処理を実行するステップを含むことを特徴とする。
[0019] さらに、本発明のメモリ領域管理方法の一実施態様において、前記メモリ領域管理 ステップは、前記リリースキューのヘッダおよびキュー要素に他のキュー要素の識別 情報を記録し、ヘッダ力も順次各キュー要素を取得可能な構成を持つリストとしてリリ ースキューを構築し、新たなキューの設定、またはキューの削除処理に際して、へッ ダまたはキュー要素に設定された識別情報の更新処理を実行するステップを含むこ とを特徴とする。
[0020] さらに、本発明のメモリ領域管理方法の一実施態様において、前記メモリ領域管理 ステップは、プロセッサに対応して設定される有限サイズのメモリ領域としてのヒープ 単位でのメモリ管理処理を実行し、開放要求があり未開放のヒープにっ 、てヒープ単 位の開放要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情報 として保持し、前記メモリ領域割り当てステップは、前記リリースキューに含まれるヒー プ単位の各キュー要素に記録されたメモリ領域の割り当てを実行することを特徴とす る。
[0021] さらに、本発明のメモリ領域管理方法の一実施態様において、前記メモリ領域管理 ステップは、メモリ領域を参照するポインタとして weakポインタを含む構成にぉ 、て、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakボイ ンタを構成要素とする weakポインタチェーンの検証を実行し、該 weakポインタチェ ーンに weakポインタが存在しない場合、当該キュー要素をリリースキューから破棄し 、該キュー要素対応のメモリ領域の開放を実行するステップを含むことを特徴とする。
[0022] さらに、本発明のメモリ領域管理方法の一実施態様において、前記メモリ領域管理 ステップは、メモリ領域を参照するポインタとして weakポインタを含む構成にぉ 、て、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakボイ ンタと該 weakポインタの参照領域を含むメモリ領域を構成要素とする weakポインタ チェーンに含まれるメモリ領域のリタイア済みフラグを検証し、該リタイア済みフラグが リタイア済みであることを示す場合、当該キュー要素をリリースキューから破棄し、該キ ユー要素対応のメモリ領域の開放を実行するステップを含むことを特徴とする。
[0023] さらに、本発明の第 3の側面は、
メモリ領域管理処理を実行するコンピュータ ·プログラムであり、
各データ処理プログラムからのオペレーティングシステムの機能呼出時刻としての 進入時刻情報をスレッド毎に記録したスレッド情報力 なるスレッドリストを生成、更新 するスレッド管理ステップと、
メモリ開放要求があり未開放のメモリ領域についての領域単位毎の開放要求時刻 を記録した待ち行列としてのリリースキューをメモリ領域管理情報として生成、更新す るメモリ領域管理ステップと、
メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各キュー要素に 設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入時刻との比較 を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュー要素に対応 するメモリ領域の割り当て処理を実行するメモリ領域割り当てステップと、
を有することを特徴とするコンピュータ ·プログラムにある。
[0024] なお、本発明のコンピュータ 'プログラムは、例えば、様々なプログラム 'コードを実 行可能な汎用コンピュータ ·システムに対して、コンピュータ可読な形式で提供する 記憶媒体、通信媒体、例えば、 CDや FD、 MOなどの記憶媒体、あるいは、ネットヮ ークなどの通信媒体によって提供可能なコンピュータ 'プログラムである。このようなプ ログラムをコンピュータ可読な形式で提供することにより、コンピュータ 'システム上で プログラムに応じた処理が実現される。
[0025] 本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図 面に基づぐより詳細な説明によって明らかになるであろう。なお、本明細書において システムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内に あるものには限らない。
発明の効果
[0026] 本発明の構成によれば、データ処理単位としてのスレッド毎の進入時刻情報を記 録したスレッド情報力もなるスレッドリストをスレッド管理情報として保持し、メモリ開放 要求があり未開放のメモリ領域についての領域単位毎の開放要求時刻を記録した待 ち行列としてのリリースキューをメモリ領域管理情報として保持し、メモリ領域の割り当 て処理に際して、リリースキューに含まれる各キュー要素に設定された開放要求時刻 と、スレッドリストの最古進入時刻との比較を実行し、開放要求時刻が最古進入時刻 以前に設定されたキュー要素のみに対応するメモリ領域の割り当て処理を実行する 構成としたので、全てのスレッドにお!/、てアクセス対象となって!/ヽな 、メモリ領域のみ を確実に選択して割り当て処理を実行することが可能となり、各スレッドにおけるァク セスエラーの発生などのな 、安全なメモリ領域の割り当て処理が可能となる。
図面の簡単な説明
[0027] [図 1]本発明の情報処理装置の構成例を示す図である。
[図 2]プロセッサモジュールの構成例を示す図である。
[図 3]本発明の情報処理装置におけるソフトウェア構成を説明する図である。
[図 4]一般的なメモリ領域のアクセス処理例について説明する図である。
[図 5]—般的なメモリ領域のアクセス処理例について説明する図である。
[図 6]本発明の情報処理装置におけるスレッド管理部の管理する情報について説明 する図である。
[図 7]本発明の情報処理装置におけるスレッド管理部の管理する情報の詳細につい て説明する図である
[図 8]本発明の情報処理装置におけるメモリ領域管理部の管理する情報の詳細につ いて説明する図である [図 9]本発明の情報処理装置におけるスレッド管理部の実行するスレッド情報進入処 理のシーケンスを説明するフロー図である。
[図 10]本発明の情報処理装置におけるスレッド管理部の実行するスレッド情報進入 処理の詳細を説明する図である。
[図 11]本発明の情報処理装置におけるスレッド管理部の実行するスレッド情報退出 処理のシーケンスを説明するフロー図である。
[図 12]本発明の情報処理装置におけるスレッド管理部の実行するスレッド情報退出 処理の詳細を説明する図である。
[図 13]本発明の情報処理装置におけるメモリ領域管理部の実行するメモリ領域開放 要求登録処理のシーケンスを説明するフロー図である。
[図 14]本発明の情報処理装置におけるメモリ領域管理部の実行するメモリ領域割り 当て処理の詳細を説明するフロー図である。
[図 15]weakポインタの構成および weakポインタチェーンの構成について説明する 図である。
[図 16]weakポインタからのポインタ値取得処理シーケンスについて説明するフロー チャートを示す図である。
[図 17]weakポインタを有する構成におけるリリースキューの更新 (フラッシュ)処理シ 一ケンスについて説明するフローチャートを示す図である。
発明を実施するための最良の形態
[0028] 以下、図面を参照しながら、本発明の情報処理装置、メモリ領域管理方法、並びに コンピュータ 'プログラムの詳細について説明する。
[0029] まず、図 1を参照して、本発明の情報処理装置のハードウェア構成例について説明 する。プロセッサモジュール 101は、複数のプロセッサ(Processing Unit)から構成され たモジュールであり、 ROM(Read Only Memory) 104、 HDD 123等に記憶されている プログラムに従って、オペレーティングシステム(OS: Operating System), OS対応の アプリケーション 'プログラムなど、各種プログラムに従ったデータ処理を実行する。プ 口セッサモジュール 101の詳細については、さらに、後段で、図 2を参照して説明する [0030] グラフィックエンジン 102は、プロセッサモジュール 101から入力される指示に従つ て、出力部 122を構成する表示デバイスに画面出力するためのデータ生成、例えば 3Dグラフィック描画処理を実行する。メインメモリ(DRAM) 103には、プロセッサモジ ユール 101にお 、て実行するプログラムやその実行にぉ 、て適宜変化するパラメ一 タ等を格納する。これらは CPUバスなど力も構成されるホストバス 111により相互に接 続されている。
[0031] ホストバス 111は、ブリッジ 105を介して、 PCI(Peripheral Component Interconnect/ Interface)バスなどの外部バス 112に接続されている。ブリッジ 105は、ホストバス 111 、外部バス 112間、およびコントローラ 106、メモリカード 107、その他のデバイスとの データ入出力制御を実行する。
[0032] 入力部 121は、キーボード、ポインティングデバイスなどのユーザにより操作される 入力デバイス力もの入力情報を入力する。出力部 122は、液晶表示装置や CRT(Ca thode Ray Tube)などの画像出力部とスピーカ等カゝらなる音声出力部カゝら構成される
[0033] HDD (Hard Disk Drive) 123は、ハードディスクを内蔵し、ハードディスクを駆動し、 プロセッサモジュール 101によって実行するプログラムや情報を記録または再生させ る。
[0034] ドライブ 124は、装着されて!ヽる磁気ディスク、光ディスク、光磁気ディスク、または 半導体メモリ等のリムーバブル記録媒体 127に記録されているデータまたはプロダラ ムを読み出して、そのデータまたはプログラムを、インタフェース 113、外部バス 112、 ブリッジ 105、およびホストバス 111を介して接続されているメインメモリ(DRAM) 10 3に供給する。
[0035] 接続ポート 125は、外部接続機器 128を接続するポートであり、 USB, IEEE1394 等の接続部を持つ。接続ポート 125は、インタフェース 113、外部バス 112、ブリッジ 105、およびホストバス 111を介してプロセッサモジュール 101等に接続されている。 通信部 126は、ネットワークに接続され、プロセッサモジュール 101や、 HDD123等 から提供されるデータの送信、外部からのデータ受信を実行する。
[0036] 次に、プロセッサモジュールの構成例について、図 2を参照して説明する。図 2に示 すように、プロセッサモジュール 200は、複数のメインプロセッサからなるメインプロセ ッサグループ 201、複数のサブプロセッサからなる複数のサブプロセッサグループ 20 2〜20nによって構成されている。それぞれにメモリコントローラ、 2次キャッシュが設 けられている。各プロセッサグループ 201〜20nの各々は例えば 8つのプロセッサュ ニットを有し、クロスバーアキテクチヤ、あるいはパケット交換式ネットワークなどによつ て接続されている。メインプロセッサグループ 201のメインプロセッサの指示のもとに、 複数のサブプロセッサグループ 202〜20nの 1以上のサブプロセッサが選択され、所 定のプログラムが実行される。
[0037] 各プロセッサグループに設置されたメモリフローコントローラは、図 1に示すメインメ モリ 103とのデータ入出力制御を実行し、 2次キャッシュは、各プロセッサグループに おける処理用データの記憶領域として利用される。
[0038] 前述したように、単一のあるいは複数のオペレーティングシステム(OS)上で、複数 のプログラムを実行する場合、プログラム実行単位として規定されるスレッドが並列に 複数存在し、個々のスレッドが共通リソースとしてのメモリ、例えば図 1に示すメインメ モリ(DRAM)を利用する。このような状態においては、例えばあるスレッドがある特定 のメモリ領域をアクセスしている間に、他のスレッドがそのメモリ領域の開放処理を行 なうとアクセスエラーなどが発生する。従来は、割り込み禁止時間の設定などにより、 このようなエラーの発生を防止していた力 割り込み禁止時間の設定による処理遅延 などの副次的問題が発生する。
[0039] 本発明においては、スレッドに対応した適切なメモリ管理を実行することにより、効 率的なデータ処理を実現する。図 3以下を参照して、スレッド対応の適切なメモリ割り 当て、開放処理を含むメモリ管理処理の詳細について説明する。
[0040] 図 3は、本発明の情報処理装置におけるソフトウェアスタックを示す図である。オペ レーティングシステム(OS) 310と、オペレーティングシステム(OS) 310上において 実行されるアプリケーション 'プログラム 320によって構成される。オペレーティングシ ステム(OS) 310は、マルチタスク制御、ファイルシステム管理、メモリ管理、入出力制 御処理などを実行するカーネル 311を有する。
[0041] カーネル 311は、スレッドの管理処理を実行するスレッド管理部(システムコールデ イスパッチャ) 312と、メモリ領域の管理処理を実行するメモリ領域管理部(ヒープ管理 モジュール) 313と、その他のカーネルモジュール 314を有する。
[0042] オブジェクト指向型のメモリ管理処理では、リソースをオブジェクトとして扱い、ヒープ と呼ばれる有限サイズのメモリ領域に基づ 、てメモリ管理を行なう。オブジェクトのヒー プへの割り当て管理を行なうのがメモリ領域管理部(ヒープ管理モジュール) 313であ る。メモリ領域管理部(ヒープ管理モジュール) 313は有限であるヒープを適宜開放し ながら、メモリ領域 (ヒープ)を要求する各スレッドに対して効率的なヒープ割り当てを 行なう。
[0043] 一般的なスレッドに対するメモリ割り当て処理について、図 4、図 5を参照して説明 する。図 4に示すようにオブジェクトとして設定されるメモリ領域 x351、メモリ領域 y35 2、メモリ領域 z353は、オブジェクトへのポインタ情報として設定される ID表 350を介 してプログラムの実行するスレッド力もアクセス可能となる。
[0044] あるスレッドにおいてアクセス中のメモリ領域に対して、他のスレッドがアクセスしょう とした場合のアクセスを回避するため、 OSのカーネルは、 ID表にロックをかけて他の スレッドからのアクセスを防止する。従って、他のスレッドは、ロックが解除するまで、メ モリアクセスが実行できず、処理が待たされることになる。
[0045] 図 5は、 2段階の ID表を有する構成を示している。 ID表 a371は、オブジェクトとして のメモリ領域 x361とメモリ領域 z362等をアクセスするために適用され、さらに、メモリ 領域 z362は、第 2の ID表 b372を有し、第 2の ID表 b372を適用することで、メモリ領 域 a363とメモリ領域 b364がアクセスされる。このような構成においても、 OSのカーネ ルは、 ID表にロックをかけて他のスレッドからのアクセスを防止する。従って、他のス レッドは、ロックが解除するまで、メモリアクセスが実行できず、処理が待たされること になる。
[0046] 例えば、個々のメモリ領域、例えば図 5におけるメモリ領域 a363やメモリ領域 b364 が利用されていない場合であっても、メモリ領域 x361が利用中の場合は、カーネル の実行するメモリ管理処理は、 ID表 a371にロックをかける処理を実行することになり 、結果として利用可能なメモリ領域までも有効に利用できないという状態に設定され てしまう。 [0047] 本発明では、このようなメモリの非効率的な利用構成を排除し、各スレッドに対する 効率的なメモリ割り当てを可能とする。この処理は、図 3に示すカーネル 311のスレツ ド管理部(システムコールディスパッチャ) 312と、メモリ領域管理部(ヒープ管理モジ ユール) 313とによって実行される。以下、具体的な処理について図を参照して説明 する。
[0048] まず、図 6、図 7を参照して、スレッド管理部(システムコールディスパッチャ) 312に おける処理につ!、て説明する。
[0049] スレッド管理部(システムコールディスパッチャ) 312は、情報処理装置に備えられ たスレッドを実行するプロセッサ毎にスレッドの管理を実行する。スレッド管理部(シス テムコールディスパッチャ) 312は、プロセッサ毎のスレッド管理情報を保持する。
[0050] スレッド管理情報について、図 6および図 7を参照して説明する。図 6は、各プロセッ サ毎のスレッド管理情報を構成するスレッドリストを示している。図ではプロセッサ 1、 プロセッサ 2のみに対応するスレッドリストを示している力 スレッド管理部(システムコ ールディスパッチャ) 312は、スレッドの実行プロセッサに対応する管理情報としての スレッドリストを生成し保持する。
[0051] 図 6 (a)は、プロセッサ 1のスレッド管理情報としてのスレッドリストであり、プロセッサ 1でハイパーバイザ内を走行中の個々のスレッドの進入時刻情報の連結データ、お よび最も古い進入時刻情報とからなるリストによって構成される。図 6 (b)は、プロセッ サ 2のスレッド管理情報としてのスレッドリストであり、プロセッサ 2でハイパーバイザ内 を走行中の個々のスレッドの進入時刻情報の連結データ、および最も古い進入時刻 情報とからなるリストによって構成される。スレッドの進入時刻情報とは、様々なデータ 処理プログラムとしてのアプリケーション ·プログラムからのオペレーティングシステム の機能呼出時刻に相当する。いずれのリストにおいても、最も古い進入時刻情報に ついては、他のプロセッサからも参照可能な情報とされる。スレッドは前述したように 論理パーティション対応のデータ処理実行単位であり、スレッドを実行するためには プロセッサ、メモリ領域など様々なリソースの確保が必要となる。
[0052] スレッドを実行予定のプロセッサが決定されると、そのプロセッサを適用したスレッド において利用可能なメモリ領域の割り当てを行なうことが必要となる。スレッド管理部( システムコールディスパッチャ) 312は、各スレッドをプロセッサ毎に区分し、メモリ領 域の割り当てを待つスレッド情報としてのスレッドリストを生成してスレッドの管理を実 行する。
[0053] ノ、ィパーバイザは、論理パーティションとハードウェアとの間に位置する特権レイヤ であり、論理パーティションの管理処理を実行する。スレッドは、論理パーティションの 実行する処理であり、図 1、図 2を参照して説明したプロセッサモジュールにおいて実 行される各スレッドは、論理パーティションによって実行される。各論理パーティション には、システム内のハードウェア資源(リソース:計算機資源としてのメインプロセッサ 、サブプロセッサ、メモリ、デバイスなどが割り振られ、各論理パーティションは割り振 られたリソースを適用した処理を実行する。
[0054] スレッド管理部(システムコールディスパッチャ) 312は、論理パーティションとハード ウェアとの間に位置する特権レイヤとしてのハイパーバイザによって識別されたスレツ ドに関する進入時刻情報を記録し、保持する。
[0055] 図 7を参照して、スレッド管理部(システムコールディスパッチャ) 312の保持するス レッドリスト情報の詳細について説明する。図 6を参照して説明したように、各プロセッ サ毎のスレッド管理情報としてのスレッドリストは、個々のスレッドの進入時刻情報の 連結データ、および最も古い進入時刻情報とからなる。これらの管理情報は、図 7に 示すプロセッサ毎に設定される変数 400と、スレッド毎に設定される変数 410の組み 合わせに基づいて構成される。なお、前述したようにスレッドの進入時刻情報とは、様 々なデータ処理プログラムとしてのアプリケーション ·プログラムからのオペレーティン グシステムの機能呼出時刻に相当する。
[0056] プロセッサ毎に設定される変数 400は、ヘッダ (head) 401と、最古進入時刻 (olde st— time) 402によって構成される。ヘッダ(head) 401は、リストの先頭要素へのポ インタ情報を含む情報である。最古進入時刻(oldest— time) 402は、リストに設定さ れた要素中の最古の進入時刻情報が記録される。リストは、スレッドの進入、退出処 理により、適宜更新され、更新処理においてリストを構成する要素中の最古の進入時 刻が変更された場合は、最古進入時刻(oldest— time) 402が併せて更新される。 なお、アクセス処理の効率を考慮して、ヘッダ(head) 401と、最古進入時刻(oldest —time) 402は、別々のキャッシュラインに配置し、さらに、ヘッダ(head) 401が配置 されるキャッシュラインには、他のプロセッサ力も参照する必要がない変数だけを集め る。最古進入時刻(oldest— time) 402の配置されるキャッシュラインは他のプロセッ サ力 参照可能なキャッシュラインとして設定される。
[0057] スレッド毎に設定される変数 410は、図に示すように、先行スレッド識別情報 (prede cessor) 411と、進入時刻(time) 412によって構成される。先行スレッド識別情報 (p redecessor) 411は先行するスレッド対応情報の識別子(たとえばポインタ)である。 図に示すように、リストには、最新の進入時刻を持つスレッド力 古い進入時刻を持 つスレッドの順にスレッド情報が並べられており、それぞれのスレッド情報は、先行す るスレッド情報の先行スレッド識別情報 (predecessor) 411によって特定し、取得す ることが可能となる。リストの先頭のスレッド情報については、最も古い進入時刻情報 中のヘッダ (head) 401に基づいて、特定し取得することが可能である。なお、末尾の スレッド情報には先行するスレッドが存在しないので [先行スレッド識別情報 (predec essor) =NULL]が設定される。進入時刻(time) 412は、各スレッドの進入時刻を 示している。
[0058] 次に図 8を参照して、メモリ領域管理部(ヒープ管理モジュール) 313の管理する情 報について説明する。前述したように、オブジェクト指向型のメモリ管理処理では、リ ソースをオブジェクトとして扱 、、ヒープと呼ばれる有限サイズのメモリ領域に基づ!/ヽ てメモリ管理を行なう。オブジェクトのヒープへの割り当て管理を行なうのがメモリ領域 管理部(ヒープ管理モジュール) 313である。メモリ領域管理部(ヒープ管理モジユー ル) 313は有限であるヒープを適宜開放しながら、メモリ領域 (ヒープ)を要求する各ス レッドに対して効率的なヒープ割り当てを行なう。
[0059] メモリ領域管理部(ヒープ管理モジュール) 313は、プロセッサに対応して設定され るヒープ管理情報を保持する。すなわち、プロセッサ数に対応するヒープ管理情報を 持つ。ヒープ管理情報には、図 8に示すリリースキューが含まれる。リリースキューは、 解放が要求されたが,いまだ解放されていないメモリ領域 (ヒープ)の情報によって構 成されるキュー情報である。
[0060] 図 8を参照してメモリ領域管理部(ヒープ管理モジュール) 313の保持するリリースキ ユーの構成について説明する。図 8に示すリリースキューは、 1つのプロセッサに対応 して設定されるヒープ管理情報として設定されるリリースキューである。複数のプロセ ッサについて、図 8に示すリリースキューが個別に設定される。
[0061] リリースキューは、ヘッダ情報(release— queue— head) 451と、キュー要素 460の 連結リストとして設定される。キュー要素 460には、ヒープ識別子 (heap— id) 461、 開放要求時刻(release— time) 462、後続キュー情報(successor) 463、メモリ領 域情報 464が含まれる。
[0062] ヒープ識別子 (heap— id) 461は、プロセッサに対応して設定されるメモリ領域とし てのヒープ識別情報である。開放要求時刻(release— time) 462は、ヒープの開放 が要求された時間を示す。スレッド力 ヒープの利用要求があった時間である。後続 キュー情報(successor) 463は、リリースキューの後続キューへのポインタである。メ モリ領域情報 464は、ヒープ ID (heap— id) 461に対応するプロセッサの利用可能な メモリ領域に対するアクセス情報である。
[0063] ヘッダ情報(release— queue— head) 451は、ヒープ識別子(heap— id)を含み、 先頭キューのポインタ情報を含む情報として設定される。図に示すように、ヘッダ情 報(release_queue_head) 451力ら、各キュー要素の後続キュー情報(successo r) 463をたどることで、すべてのキュー要素を取得することができる。
[0064] 各スレッドは、リソース配分により、利用可能なプロセッサが割り当てられ、プロセッ サに対応するヒープ領域が特定され、スレッドの実行待ちの状態になり、この時点で 、割り当てプロセッサに対応するリリースキューにキュー要素が設定されることになる。
[0065] 本発明では、カーネル 311のスレッド管理部(システムコールディスパッチャ) 312と 、メモリ領域管理部(ヒープ管理モジュール) 313との制御によって、スレッドに対する 効率的なメモリ割り当てを実行する。以下、図 9以下の図面を参照して、カーネル 31 1のスレッド管理部(システムコールディスパッチャ) 312と、メモリ領域管理部(ヒープ 管理モジュール) 313の実行する処理について説明する。
[0066] まず、図 9〜図 12を参照して、スレッド管理部(システムコールディスパッチャ) 312 の処理について説明する。スレッド管理部(システムコールディスパッチャ) 312は、 図 6、図 7を参照して説明したスレッドリストに対するスレッド情報の進入処理と、スレツ ド情報の退出処理を実行する。
[0067] スレッド情報の進入処理は、アプリケーション 'プログラムが OSの機能を呼び出した 直後に行われる処理である。すなわちアプリケーション ·プログラムが OSの機能を呼 び出すことによりプロセッサを適用したデータ処理としてのスレッドが発生する。このス レッドはメモリ領域の開放待ち状態に設定され、このスレッドに対応するスレッド情報 力 Sスレッド管理部(システムコールディスパッチャ) 312の管理情報として新たに設定 される。
[0068] スレッド情報の退出処理は、 OSによるシステムコール処理が完了し,アプリケーショ ン 'プログラムに制御が戻る直前に行われる処理である。すなわち、 OSによるメモリ割 り当て処理が終了して、アプリケーション ·プログラムに制御が戻ることによってスレツ ドは、 OSによって割り当てられたプロセッサ、メモリ領域などを利用したスレッドの実 行が可能となる。 OSによるシステムコール処理が完了し,アプリケーション 'プロダラ ムに制御が戻る際には、スレッドにはメモリ領域 (ヒープ)が割り当て済みとなるので、 メモリ領域の待機状態にあるスレッド情報を管理するスレッド管理部 (システムコール ディスパッチャ) 312はそのスレッド情報をスレッドリストから削除する。この処理が退 出処理である。
[0069] まず、図 9のフローチャートおよび図 10を参照して、スレッドの進入処理シーケンス について説明する。スレッドの進入処理は、図 10に示すように新たなスレッド情報 51 0をスレッドリストに追加する処理として実行される。図 10 (a)に示す新たなスレッド情 報 510の追加位置は、プロセッサ対応データ 500に含まれるヘッダ情報 501によつ てポイントされる位置である。この追加処理によって、図 10 (b)に示す設定のスレッド リストが構築される。新たなスレッド情報 510を追加する際には、既に存在するスレツ ドリスト中の各種情報を更新する必要が生じる。この更新処理の手順を示すのが図 9 のフローチャートである。
[0070] 図 9に示すフローチャートの各ステップの処理について説明する。なお、図 9に示す 一連の処理は、割り込み禁止状態で実行する。ステップ S101において、変数 [p]を 進入処理を実行するプロセッサの識別子として設定する。前述したように、スレッド管 理部(システムコールディスパッチャ) 312はスレッドリストをプロセッサ毎に設定し管 理しており、スレッド進入処理を実行するスレッドリストの特定のために変数 [P]を進 入処理を実行するプロセッサの識別子として設定する。ステップ S 102では、変数 [th read]を進入処理を実行する現行スレッドの識別子として設定する。すなわち、変数 [ thread]は、図 10に示すスレッド 510の識別子として設定される。
[0071] ステップ S 103では、
変数 [old— head] =先行スレッド識別情報(predecessor— thread— id [thread] ) = head [p]として設定する。
この処理は、図 10 (a)に示すヘッダ 501に設定されている値 [head [p] ]を新たなス レッド情報 510の先行スレッド情報 511とし、さらに、これを変数 [old— head]と設定 することを意味する。
[0072] ステップ S 104では、
変数 [head [p] ] = thread
とする。この処理は、図 10 (a)に示すヘッダ 501の設定値を進入するスレッド情報 5 10の識別子として設定する処理に相当する。
[0073] ステップ S 105では、
変数 time [thread] =現在時刻の設定を行なう。この処理は、図 10 (a)に示す進入 スレッド情報 510の進入時刻情報 512に現在時刻を設定する処理に相当する。
[0074] ステップ S106では、ステップ S 103で設定した変数 [old— head]が NULLである か否かを判定する。ステップ S 103で設定した変数 [old— head]は、進入処理以前 に図 10 (a)のヘッダ 501に設定されて 、た情報である。進入処理以前に図 10 (a)の ヘッダ 501に [NULL]が設定されている場合は、スレッドリストに全くスレッド情報が 存在していなかった状態であり、図 10に示す進入スレッド情報 510がスレッドリストに 設定される唯一のスレッド情報となることを意味する。この場合は、図 10 (a)に示すプ 口セッサ対応データ 500に含まれる最古進入時刻 502をステップ S105において、進 入スレッドの進入時刻情報 512として設定した時刻情報、すなわち time [thread]に 設定する。
[0075] 一方、変数 [old— head]が NULLでない場合は、進入スレッド情報 510より古い進 入時刻を持つスレッド情報がスレッドリストに存在していることを意味するので、図 10 ( a)に示すプロセッサ対応データ 500に含まれる最古進入時刻 502を更新する処理を 実行することなく処理を終了する。
[0076] この進入処理の結果として、図 10 (b)に示すように進入スレッド情報 510が、プロセ ッサ対応データ 500のヘッダ 501によって取得可能な位置に設定されたスレッドリスト が生成される。
[0077] 次に、図 11、図 12を参照して、スレッド管理部(システムコールディスパッチャ) 312 の実行するスレッドの退出処理の詳細について説明する。スレッドの退出処理は、前 述したように OSによるシステムコール処理が完了し,アプリケーション 'プログラムに 制御が戻る直前に行われる。すなわち、 OSによるメモリ割り当て処理が終了して、ァ プリケーシヨン 'プログラムに制御が戻ることによってスレッドは、 OSによって割り当て られたプロセッサ、メモリ領域などを利用したスレッドの実行が可能となる。 OSによる システムコール処理が完了し,アプリケーション 'プログラムに制御が戻る際には、ス レッドにはメモリ領域 (ヒープ)が割り当て済みとなるので、メモリ領域の待機状態にあ るスレッド情報を管理するスレッド管理部(システムコールディスパッチャ) 312はその スレッド情報をスレッドリストから削除する。この処理が退出処理である。
[0078] 図 11を参照して退出処理の処理シーケンスを説明する。なお、図 11に示す一連の 処理は、割り込み禁止状態で実行する。図 11のステップ S201、 S202は、退出処理 を実行するプロセッサとスレッド情報の特定処理であり、ステップ S201において、変 数 [P]を退出処理を実行するプロセッサの識別子として設定する。ステップ S202で、 変数 [thread]を退出処理を実行する現行スレッドの識別子として設定する。
[0079] ステップ S203は、退出処理の対象となるスレッドの位置を判別する処理である。す なわち、退出処理の対象となるスレッド情報がスレッドリストのどの位置にあるかによつ て、ステップ S211〜S213の処理を実行する力、ステップ S221〜S224の処理を実 行するかが決定される。具体的には、退出処理の対象となるスレッド情報が図 12 (a) または図 12 (b)の 、ずれかの位置にあるかによって処理が異なる。
[0080] 図 12 (a)は、退出処理の対象となるスレッド情報 550が、スレッドリスト中の先頭位 置にある場合であり、プロセッサ対応データ 540のヘッダ 541の指定する位置に存在 する場合である。この場合には、プロセッサ対応データ 540のヘッダ 541のヘッダ情 報 [head [p] ]は、退出処理の対象となるスレッド情報 550の識別情報 [thread]とし て設定されており、ステップ S203の判定は Yesとなり、ステップ S211〜S213の処理 を実行する。
[0081] 図 12 (b)は、退出処理の対象となるスレッド情報 550力 スレッドリスト中の先頭位 置以外にある場合である。この場合には、プロセッサ対応データ 540のヘッダ 541の ヘッダ情報 [head [p] ]は、退出処理の対象となるスレッド情報 550の識別情報 [thre ad]として設定されておらず、ステップ S203の判定は Noとなり、ステップ S221〜S2 24の処理を実行する。
[0082] まず、図 12 (a)に示すように、退出処理の対象となるスレッド情報 550が、スレッドリ スト中の先頭位置にある場合の処理について説明する。ステップ S211において、プ 口セッサ対応データ 540のヘッダ 541のヘッダ情報 [head[p] ]を、退出処理の対象 となるスレッド情報 550に設定された先行スレッド識別情報 [predecessor[thread] ] 551を設定する。これは、図 12 (a)において、プロセッサ対応データ 540のヘッダ 54 1にスレッド情報 560を指示する情報を設定することに相当する。なお、退出処理の 対象となるスレッド情報 550の先行スレッドがな 、場合は、先行スレッド識別情報 [pre decessor [thread] ] 551には [NULL]が設定されて!、るので、ヘッダ 541のヘッダ 情報 [head [p] ]にも [NULL]力 S設定されることになる。
[0083] 次に、ステップ S212において、プロセッサ対応データ 540のヘッダ 541のヘッダ情 報 [head [p] ]が NULLとして設定されて!、るか否かを判定する。 NULLとして設定 されている場合は、退出処理の対象となるスレッド情報 550の退出によって、スレッド リストには、全くスレッド情報が存在しない状態に設定されたことを意味し、この場合は 、プロセッサ対応データ 540の最古進入時刻 [oldest— time] =0と設定して処理を 終了する。
[0084] ステップ S212において、プロセッサ対応データ 540のヘッダ 541のヘッダ情報 [he ad [p] ]が NULLとして設定されて 、な 、場合は、退出処理の対象となるスレッド情 報 550の退出後も、スレッドリストにスレッド情報が存在しており、この場合は、プロセ ッサ対応データ 540の最古進入時刻 [oldest— time]の書き換えは実行することなく 処理を終了する。 [0085] 次に、図 12 (b)に示すように、退出処理の対象となるスレッド情報 550が、スレッドリ スト中の先頭位置以外にある場合の処理について説明する。ステップ S221において 、変数 [succ]をリスト内で、退出処理スレッドの直前にあるスレッドとする。なお、ここ ではリストの先頭方向を前とする。つまり、直前にあるスレッドとは図 12 (b)に示すスレ ッド情報 570に相当する。
[0086] ステップ S222では、退出処理スレッドの直前にあるスレッドの先行スレッド識別情 報 [predecessor [succ] ]を退出処理スレッドの先行スレッド識別情報 [predecessor [thread] ]に更新する処理を実行する。この処理は、図 12 (b)において、スレッド情 報 570の先行スレッド識別情報にスレッド情報 580を指示する情報を設定することに 相当する。なお、退出処理の対象となるスレッド情報 550の先行スレッドがない場合 は、先行スレッド識別情報 [predecessor [thread] ] 551には [NULL]が設定されて V、るので、スレッド情報 570の先行スレッド識別情報にも [NULL]が設定されることに なる。
[0087] 次に、ステップ S223において、退出処理スレッドの先行スレッド識別情報 [predec essor [thread] ]が NULLとして設定されて!、るか否かを判定する。 NULLとして設 定されている場合は、退出処理の対象となるスレッド情報 550の退出が最古の進入 時刻を持つスレッドの退出になることを意味し、この場合は、プロセッサ対応データ 5 40の最古進入時刻 [oldest— time] = time [succ]とする設定を実行して処理を終 了する。すなわち、この処理は、図 12 (b)のスレッド情報 580が存在しない場合であ り、スレッド情報 570の進入時刻 572がプロセッサ対応データ 540の最古進入時刻 [ oldest— time]として設定される。
[0088] ステップ S223において、退出処理スレッドの先行スレッド識別情報 [predecessor [ thread] ]が NULLとして設定されて!、な!/、場合は、退出処理の対象となるスレッド 情報 550より古い進入時刻を持つスレッド、すなわち、図 12 (b)に示すスレッド情報 5 80が存在することを意味し、この場合は、プロセッサ対応データ 540の最古進入時 刻 [oldest— time]の書き換えは実行することなく処理を終了する。
[0089] 次に図 13以下を参照して、メモリ領域管理部(ヒープ管理モジュール) 313の実行 する処理について説明する。メモリ領域管理部(ヒープ管理モジュール) 313は、プロ セッサに対応して設定されるヒープ管理情報として、図 8に示すリリースキューを保持 する。リリースキューは、解放が要求されたが,いまだ解放されていないメモリ領域 (ヒ ープ)の情報によって構成されるキュー情報である。
[0090] メモリ領域管理部(ヒープ管理モジュール) 313は、メモリ領域 (ヒープ)の解放要求 登録処理、および割り当て処理を実行する。メモリ領域 (ヒープ)の解放要求登録処 理は、図 8を参照して説明したリリースキューに新たなキューを追加する処理であり、 メモリ領域 (ヒープ)の割り当て処理は、スレッドに対するメモリ領域の割り当て処理で あり、必要に応じてリリースキュー力もキューを削除する処理として実行される。
[0091] まず、図 13のフローチャートを参照してメモリ領域 (ヒープ)の解放要求登録処理シ 一ケンスについて説明する。ステップ S301において、あらたなリリースキューとして設 定するキュー要素のヒープ ID [hid]を開放要求のあったメモリ領域のヒープ識別子と して設定する。前述したように、メモリ領域 (ヒープ)の管理情報としてのリリースキュー はプロセッサ対応のヒープ毎の管理情報として設定されており、メモリ領域管理部 (ヒ ープ管理モジュール) 313は、各ヒープ毎にメモリ領域の開放、割り当て処理を実行 するものであり、リリースキューに追加するキューのヒープ IDとして、開放要求対象と なるヒープ IDを設定する。
[0092] ステップ S302では、新たなキュー要素の後続キュー情報(successor)にリリースキ ユーヘッダ(release— queue— head [hid] )を設定する。ステップ S303において、リ リースキューヘッダ (release— queue— head [hid] )の値力 開放領域の後続キュー 情報(successor)と等 、状態に設定されて!、る場合は、リリースキューヘッダ (rele ase— queue— head [hid] )に新たなキュー要素のポインタ情報を代入し、メモリ領域 情報などの各種情報をキューに設定して処理を終了する。
[0093] ステップ S303において、リリースキューヘッダ(release_queue_head[hid] )の 値が、開放領域の後続キュー情報 (successor)と等 、状態に設定されて!、な!/、場 合は、ステップ S302〖こ戻り、再度ステップ S302, S303の処理を繰り返し実行して、 リリースキューヘッダ(release— queue— head [hid] )の値力 開放領域の後続キュ 一情報(successor)と等 、状態に設定されて!、ることを確認して、メモリ領域情報 などの各種情報をキューに設定して処理を終了する。 [0094] ステップ S303において、リリースキューヘッダ(release— queue— head[hid] )の 値が、開放領域の後続キュー情報 (successor)と等 、状態に設定されて!、な!/、場 合とは、他のプロセッサによる他のキュー設定処理などが同時期に行なわれ、開放領 域の後続キュー情報 (successor)の書き換えが実行されている場合などに発生し得 る。
[0095] ステップ S303において、リリースキューヘッダ(release_queue_head[hid] )の 値が、開放領域の後続キュー情報 (successor)と等しい状態に設定されていること の確認に基づいて、リリースキューにあらたなキュー設定を行うことで、プロセッサ対 応のメモリ領域を確実に確保 (予約)することができる。
[0096] 次に、図 14を参照して、メモリ領域管理部(ヒープ管理モジュール) 313の実行する メモリ領域 (ヒープ)の割り当て処理シーケンスについて説明する。ステップ S401にお いて、変数 [hid]をメモリ領域割り当てを実行するプロセッサ識別子と等しく設定する 。メモリ領域の割り当て処理はプロセッサ毎に実行されるものであり、まず、メモリ領域 の割り当て処理の対象となるプロセッサを特定する。
[0097] ステップ S402では、割り当て要求のなされたメモリ領域サイズと同一サイズの未使 用領域カ モリに存在するか否かを判定する。すなわちメモリ領域管理部 (ヒープ管 理モジュール) 313は、スレッドの要求するメモリ領域サイズと同一サイズの未使用領 域力 Sメモリに存在するか否かの確認を実行し、存在する場合は、ステップ S405〖こ進 み、未使用領域をステップ S401で設定した識別子を持つプロセッサを適用するスレ ッドのデータ処理用のメモリ領域として割り当てる。
[0098] ステップ S402にお!/、て、割り当て要求のなされたメモリ領域サイズと同一サイズの 未使用領域カ モリに存在しないと判定した場合は、ステップ S403に進み、割り当て 要求のなされたメモリ領域サイズが、予め定められた閾値より小さいか否かを判定す る。小さい場合は、ステップ S404に進み、割り当て要求のなされたメモリ領域サイズ を満足する未使用領域がヒープ領域に存在するか否かを判定し、存在する場合には 、ステップ S405において、未使用ヒープ領域として設定されているメモリ領域の割り 当て処理を行なう。この処理は、要求メモリサイズが予め定めた閾値より小さく未使用 ヒープ領域の割り当てのみで要求が満足される場合に実行される。 [0099] ステップ S403において、割り当て要求のなされたメモリ領域サイズ力 予め定めら れた閾値より小さくない場合、および、割り当て要求のなされたメモリ領域サイズが、 予め定められた閾値より小さいが、ステップ S404において、割り当て要求のなされた メモリ領域サイズを満足する未使用領域がヒープ領域に存在しな 、場合には、ステツ プ S406以下の処理を実行してメモリ領域の割り当て処理が実行される。ステップ S4 06の処理は、リリースキューおよびスレッドリストを参照した処理として実行される。
[0100] ステップ S406において、変数 [head]をリリースキューヘッダ(release— queue— h ead [hid] )として設定し、さらに、リリースキューヘッダ(release— queue— head[hid ])を 0とする設定を実行する。
[0101] ステップ S407において、変数 [time]を全プロセッサに対応するスレッドリストに設 定された最古進入時刻中の最小値、すなわち最も古 、時刻に設定する。
[0102] ステップ S408において、リリースキューについて、それぞれヘッダからたどれる各 要素に設定された開放要求時刻(release— time)について、ステップ S407〖こおい て設定した [time] =全プロセッサに対応するスレッドリストに設定された最古進入時 刻中の最小値と比較し、開放要求時刻(release— time)が [time]より小さいものの みを選択して、リリースキューから削除してこれらのキューに対応するメモリ領域を開 放してメモリ要求スレッドに対して割り当てる。
[0103] 全てのプロセッサの最古進入時刻中の最小値より前に開放要求があったメモリ領域 につ 、ては、全てのスレッドにお!/、てアクセス対象となって!/ヽな 、ことが保証されるの で、これらを選択して開放、割り当て処理を実行することで、安全なメモリ領域の割り 当てが可能となる。
[0104] ステップ S409では、ステップ S408において、リリースキューから削除したキューを 除く残存キューの末尾の後続キュー情報(successor)をリリースキューヘッダ (relea se— queue— head [hid] )に設定する。ステップ S410において、リリースキューへッ ダ(release— queue— head [hid] )の値が、末尾のキューの後続キュー情報(succe ssor)と等しい状態に設定されている場合は、ステップ S408において、リリースキュー 力も削除したキューを除く残存キューの先頭のキューに対するポインタをリリースキュ 一ヘッダ(release queue head [hid] )に設定して処理を終了する。 [0105] ステップ S410において、リリースキューヘッダ(release— queue— head[hid] )の 値力 末尾のキューの後続キュー情報(successor)と等 、状態に設定されて!、な ヽ場合 ίま、ステップ S409【こ戻り、ステップ S409, S410の処理を繰り返し実行して、 リリースキューヘッダ(release— queue— head [hid] )の値力 末尾のキューの後続 キュー情報(successor)と等し 、状態に設定されて 、ることを確認して、メモリ領域情 報などの各種情報をキューに設定して処理を終了する。
[0106] ステップ S410において、リリースキューヘッダ(release— queue— head[hid] )の 値力 末尾のキューの後続キュー情報(successor)と等 、状態に設定されて!、な い場合とは、他のプロセッサによる他のキュー設定、削除処理などが同時期に行なわ れ、後続キュー情報 (successor)の書き換えが実行されている場合などに発生し得 る。
[0107] このように、メモリ領域管理部(ヒープ管理モジュール) 313は、リリースキューの各 要素に設定された開放要求時刻(release— time)力 全プロセッサに対応するスレ ッドリストに設定された最古進入時刻中の最小値より小さ 、時刻情報を持つもののみ を選択して、これらをリリースキューから削除してこれらのキューに対応するメモリ領域 を開放してメモリ要求スレッドに対して割り当てる構成としたので、全てのスレッドにお V、てアクセス対象となって 、な 、メモリ領域のみを確実に選択して割り当て処理を実 行することが可能となり、各スレッドにおけるアクセスエラーの発生などのない安全な メモリ領域の割り当てが可能となる。
[0108] 次に、 Weakポインタの適用をサポートするメモリ管理処理構成について説明する。
先に、図 8を参照してメモリ領域管理部(ヒープ管理モジュール) 313の保持するリリ ースキューの構成について説明した。リリースキューは、図 8を参照して説明したよう に、ヘッダ情報(release— queue— head) 451と、キュー要素 460の連結リストとして 設定される。キュー要素 460には、ヒープ識別子 (heap_id) 461、開放要求時刻 (r elease— time) 462、後続キュー情報(successor) 463、メモリ領域情報 464が含ま れる。
[0109] ヒープ識別子 (heap— id) 461は、プロセッサに対応して設定されるメモリ領域とし てのヒープ識別情報である。開放要求時刻(release— time) 462は、ヒープの開放 が要求された時間を示す。スレッド力 ヒープの利用要求があった時間である。後続 キュー情報(successor) 463は、リリースキューの後続キューへのポインタである。メ モリ領域情報 464は、ヒープ ID (heap— id) 461に対応するプロセッサの利用可能な メモリ領域に対するアクセス情報である。
[0110] ヘッダ情報(release— queue— head) 451は、ヒープ識別子(heap— id)を含み、 先頭キューのポインタ情報を含む情報として設定される。図に示すように、ヘッダ情 報(release_queue_head) 451力ら、各キュー要素の後続キュー情報(successo r) 463をたどることで、すべてのキュー要素を取得することができる。
[0111] 各スレッドは、リソース配分により、利用可能なプロセッサが割り当てられ、プロセッ サに対応するヒープ領域が特定され、スレッドの実行待ちの状態になり、この時点で 、割り当てプロセッサに対応するリリースキューにキュー要素が設定されることになる。
[0112] 図 8を参照して説明したリリースキューをメモリ領域管理情報として保持し、メモリ領 域の割り当て処理に際して、リリースキューに含まれる各キューの要素に設定された 解放要求時刻と、スレッドリストの最古進入時刻との比較を実行して、開放要求時刻 が最古進入時刻以前に設定されたキュー要素のみに対応するメモリ領域の割り当て 処理を実行する構成とすることで、全てのスレッドにお ヽてアクセス対象となって!/、な いメモリ領域のみを確実に選択して割り当て処理を実行することが可能となり、各スレ ッドにおけるアクセスエラーの発生のない安全なメモリ領域の割り当て処理が実現さ れる。
[0113] メモリ領域がアクセス対象となって 、る力否かの判定処理のために、各ヒープ (メモリ 領域)に対応して設定される参照カウンタ (rf :Reference Counter)の値を適用す ることが可能である。参照カウンタのカウントが 1以上であれば、そのヒープ (メモリ領 域)が参照されている。すなわち参照しているスレッドが存在することが確認できる。
[0114] ヒープ (メモリ領域)に対するアクセスを行なう場合、ヒープ (メモリ領域)に対するアド レス情報を保持したポインタオブジェクトから、メモリアドレスを取得して取得アドレスを レジスタに設定し、レジスタ設定アドレスに従ってアクセスを実行する。この処理期間 に、他のスレッドからのメモリアクセスが発生すると、アクセス先のメモリ情報が予定さ れていたものと変更されてしまう場合がある力 先の図 8を参照して説明したリリースキ ユーに設定された解放要求時刻と、スレッドリストの最古進入時刻との比較を実行す ることで、確実なメモリアクセスが可能となる。
[0115] ポインタオブジェクトの 1つとして、 weakポインタがある。 weakポインタは、ヒープ (メ モリ領域)に対応して設定される上述の参照カウンタ (rf)の値を増加させな 、特殊な ポインタである。すなわち、ヒープ (メモリ領域)を参照するポインタであっても、通常ポ インタと異なる weakポインタの場合は、ヒープ (メモリ領域)に対応する参照カウンタ( rf)の値に反映されず、参照カウンタ (rf)の値に基づいて、参照の有無を判別するこ とができない。ただし、 weakポインタのヒープ参照が解除されたときに、 weakポイン タの保有していたヒープ (メモリ領域)に対応するアドレス情報は 0 (NULL)に更新さ れる。すなわち、 weakポインタは、ヒープの参照カウンタに対する影響を及ぼさずに 自己の保持するポインタ情報を 0 (NULL)に更新する。
[0116] このような性質を持つ weakポインタを適用した場合、メモリを参照する際に weakポ インタの保持して!/、るポインタ情報を取得してレジスタに格納すると、 weakポインタの 保持情報は即座に 0 (NULL)に置き換わってしまい、その後は、その weakポインタ のポインタ情報を適用したメモリアクセスができなくなり、また、 weakポインタのポイン タ情報が消失するので、先に説明した図 8のリリースキューの構成変更がスムーズに 実行されないという問題が発生する。この問題を解決する構成例について以下、説 明する。
[0117] weakポインタを適用した場合においても確実なメモリアクセス、リリースキュー更新 を可能とする構成について、図 15以下を参照して説明する。図 15は、 weakポインタ および weakポインタによって参照される参照メモリ領域を持つヒープ (メモリ領域) 60 0を示している。図 8のリリースキューにおける各キュー要素 460のメモリ領域情報 46 4が、図 15のヒープ (メモリ領域) 600の構成をとる。
[0118] 各 weakポインタ a〜nは、すべて同じ参照メモリ領域を参照する weakポインタであ る。 weakポインタ a〜nは、図に示すように、ポインタ識別子としてのポインタ IDを含 むポインタヘッダの他、以下のメンバ変数を設定した構成を持つ。
(a)サクセッサー (Successor)
(b)プレテツセッサ一 (Predecessor) (c)オブジェクトポインタ(Object Pointer)
[0119] オブジェクトポインタは、参照するメモリ領域情報としてのオブジェクトメンバ変数で ある。この一群の weakポインタ a〜nは、すべて同じ参照メモリ領域を参照する weak ポインタであり、同一のオブジェクトポインタが設定される。
[0120] サクセッサー(Successor)、プレデッセッサー(Predecessor)は、同一の参照メモ リ領域を持つ weakポインタと、 weakポインタによって参照される参照メモリ領域を持 つヒープ (メモリ領域)とのチェーンを構成するためのポインタ変数である。サクセッサ 一(Successor)は、後続オブジェクトとして weakポインタまたはヒープの識別情報で あり、プレデッセッサー(Predecessor)は、先行オブジェクトとして weakポインタまた はヒープの識別情報が設定される。
[0121] サクセッサー(Successor)、プレデッセッサー(Predecessor)は、同一参照メモリ 領域を持つ weakポインタと、 weakポインタによって参照される参照メモリ領域を持つ ヒープ (メモリ領域)に設定され、これらの一群の weakポインタおよびヒープを相互に 連結する双方向のリンク、すなわちチェーンが構築される。このチェーンを weakボイ ンタチェーンと呼ぶ。
[0122] また、ヒープ (メモリ領域)には、リタイア済みフラグ、参照カウンタの各情報が設定さ れる。参照カウンタは前述したように、メモリ領域の参照状況に応じた値を持つ。ただ し、 weakポインタについての参照情報は反映されず、 weakポインタ以外の参照情 報が反映される。リタイア済みフラグは、 weakポインタを含むポインタによる参照が全 くない場合、すなわちリタイア済みである力否かを判別するフラグであり、例えばリタイ ァ済みの場合 [1]、リタイア済みでない場合 [0]に設定される。なお、新しくメモリ割り 当てが行われる初期化工程において、リタイア済みフラグが [0]に設定される。
[0123] 次に、このような weakポインタチェーンを構成可能とした設定において、 weakポィ ンタカ のポインタ値、すなわち参照メモリ領域を参照するために必要なアドレスに相 当するオブジェクトメンバ変数としてのオブジェクトポインタを取得する処理手順につ いて図 16に示すフローチャートを参照して説明する。
[0124] weakポインタからのポインタ値の取得に際しては、まずステップ S501において、 w eakポインタのオブジェクトポインタ、すなわち、オブジェクトメンバ変数力 0でないこと (条件 1)、さらに、 weakポインタチェーンによって関連付けられたヒープに設定され た参照カウンタ (rf)の値力 ^以上であること (条件 2)、これらの 2条件を満足するか否 かを判定する。
[0125] これらの 2条件を満足する場合は、ステップ S502に進み、オブジェクトの値、すな わち、 weakポインタに設定された参照メモリ領域を参照するために必要なアドレスに 相当するオブジェクトメンバ変数としてのオブジェクトポインタを返す。一方、この 2条 件を満足しな 、場合には、ステップ S503に進み [0]を返す。
[0126] weakポインタのオブジェクトポインタ、すなわち、オブジェクトメンバ変数力 0である 場合、あるいは、 weakポインタチェーンによって関連付けられたヒープに設定された 参照カウンタ (rf)の値が 0である場合には、ステップ S503において [0]が返されるこ とになる。参照カウンタ (rf)の値力^である場合は、 weakポインタ以外のポインタによ る参照がない場合に相当する力 weakポインタによる参照の有無は判別されない。 この状況で、 weakポインタからのポインタ値を取得してしまうと、 weakポインタのォブ ジェタトポインタが 0に設定され、その後、その weakポインタのポインタ情報を適用し たメモリアクセスができなくなり、また、 weakポインタのポインタ情報の消失によりリリー スキューの構成変更力 Sスムーズに実行されないという問題が発生する。この問題の発 生を防止するため、このような状況では、ポインタ値の取得を行なわない構成としてい る。
[0127] 次に、図 17を参照して、リリースキューのフラッシュ処理について説明する。リリース キューは、図 8を参照して説明したリリースキューに相当し、メモリ領域管理部(ヒープ 管理モジュール) 313の管理する情報である。前述したように、オブジェクト指向型の メモリ管理処理では、リソースをオブジェクトとして扱い、ヒープと呼ばれる有限サイズ のメモリ領域に基づ!、てメモリ管理を行なう。オブジェクトのヒープへの割り当て管理 を行なうのがメモリ領域管理部(ヒープ管理モジュール) 313である。メモリ領域管理 部(ヒープ管理モジュール) 313は有限であるヒープを適宜開放しながら、メモリ領域( ヒープ)を要求する各スレッドに対して効率的なヒープ割り当てを行なう。
[0128] メモリ領域管理部(ヒープ管理モジュール) 313は、プロセッサに対応して設定され るヒープ管理情報を保持する。すなわち、プロセッサ数に対応するヒープ管理情報を 持つ。ヒープ管理情報には、図 8に示すリリースキューが含まれる。リリースキューは、 解放を要求されたが, V、まだ解放されて 、な 、メモリ領域 (ヒープ)の情報によって構 成されるキュー情報である。
[0129] weakポインタを含む構成では、リリースキューのフラッシュ、すなわち更新処理に際 して、特別な処理を実行する。このリリースキュー'フラッシュ処理手順について図 17 に示すフローチャートを参照して説明する。図 17に示す処理は、リリースキューに含 まれる全てのオブジェクト(リリースキュー要素)について順次実行される処理である。
[0130] まず、ステップ S601において、リリースキューを空にする。つまり、図 8のリリースキ ユーヘッダ 451の先頭キューのポインタ情報を空にして、キューを切り離す。
[0131] 次に、ステップ S602において、処理対象のリリースキューに設定されていたォブジ ェクト(リリースキュー要素)のリリース時刻、すなわち開放要求時刻 (release— time) について、プロセッサに対応するスレッドリストに設定された最古進入時刻と比較する 。リリース時刻が最古進入時刻より小さい場合、ステップ S603に進む。
[0132] ステップ S603では、
(条件 a)処理対象のオブジェクト(リリースキュー要素)のヒープ IDによって特定され るヒープ (メモリ領域)に設定されたリタイア済みフラグがリタイア済みを示している。ま たは、
(条件 b)ヒープ (メモリ領域)に対応して設定される weakポインタチェーンに 1つも w eakポインタが存在しない。すなわち、 weakポインタチェーンが空。
これら条件 aまたは bのいずれかが満足されるかを判定する。
[0133] これら条件 aまたは bのいずれかが満足される場合は、ステップ S604に進み、ォブ ジォタトを破棄、すなわち、リリースキューに設定されたそのオブジェクト(リリースキュ 一要素)に対応するメモリ領域を開放して、リリースキュー力もそのオブジェクト(リリー スキュー要素)を削除する。
[0134] これら条件 aまたは bのいずれもが満足されない場合は、ステップ S621に進み、ヒ ープ (メモリ領域)に対応して設定される weakポインタチェーンに含まれる全ての we akポインタのオブジェクトメンバ変数としてのオブジェクトポインタの値を [0]に設定し 、ステップ S622において、リタイア済みフラグを [1]に設定し、さらに、ステップ S623 において、リリースキューに設定されたそのオブジェクト(リリースキュー要素)のリリー ス時刻、すなわち開放要求時刻(release— time)に現在時刻を代入して、ステップ S 624において、そのオブジェクト(リリースキュー要素)を再度、リリースキューに設定 する。
[0135] また、ステップ S602の判定処理において、処理対象のリリースキューに設定された オブジェクト(リリースキュー要素)のリリース時刻、すなわち開放要求時刻 (release— time)力 プロセッサに対応するスレッドリストに設定された最古進入時刻より小さくな いと判定された場合は、ステップ S611に進み、オブジェクト(リリースキュー要素)のヒ ープ IDによって特定されるヒープ (メモリ領域)に設定された参照フラグ (rf)が 0であ る力否かを判定し、 0である場合は、ステップ S624に進み、そのオブジェクト(リリース キュー要素)を再度、リリースキューに設定する。
[0136] このフローに示す処理は、図 3に示すオペレーティングシステム 310のメモリ領域管 理部 313において実行される。すなわち、メモリ領域管理部 313は、メモリ領域を参 照するポインタとして weakポインタを含む構成において、リリースキューに含まれるキ ユー要素に対応するメモリ領域を参照する weakポインタと weakポインタの参照領域 を含むメモリ領域を構成要素とする weakポインタチェーンの検証によって weakポィ ンタチェーンに weakポインタが存在しないことが確認された場合、あるいは、 weakポ インタチェーンに含まれるメモリ領域のリタイア済みフラグがリタイア済みであることを 示す場合、当該キュー要素をリリースキューから破棄し、このキュー要素対応のメモリ 領域の開放を実行する。
[0137] なお、図 17のフローに示す処理は、リリースキューに設定された各オブジェクト(リリ ースキュー要素)について実行される。このフラッシュ処理によって、 weakポインタを 適用した構成においても、リリースキューの更新が確実に実行され、リリースキューに 設定された解放要求時刻と、スレッドリストの最古進入時刻との比較が確実に実行さ れ、エラーのないメモリアクセスが実現される。
[0138] 以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、 本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ること は自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的 に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の 欄を参酌すべきである。
[0139] なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、 あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理 を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに 組み込まれたコンピュータ内のメモリにインストールして実行させる力、あるいは、各 種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させること が可能である。
[0140] 例えば、プログラムは記録媒体としてのハードディスクや ROM (Read Only Memory )に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、 CD -ROM(Compact Disc Read Only Memory), MO(Magneto optical)ディスク, DVD( Digital Versatile Disc),磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、 一時的あるいは永続的に格納 (記録)しておくことができる。このようなリムーバブル記 録媒体は、 V、わゆるパッケージソフトウェアとして提供することができる。
[0141] なお、プログラムは、上述したようなリムーバブル記録媒体力 コンピュータにインス トールする他、ダウンロードサイトから、コンピュータに無線転送したり、 LAN(Local A rea Network),インターネットといったネットワークを介して、コンピュータに有線で転 送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵する ハードディスク等の記録媒体にインストールすることができる。
[0142] なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみ ならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個 別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的 集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
産業上の利用可能性
[0143] 以上、説明したように、本発明の構成によれば、データ処理単位としてのスレッド毎 の進入時刻情報を記録したスレッド情報力 なるスレッドリストをスレッド管理情報とし て保持し、メモリ開放要求があり未開放のメモリ領域についての領域単位毎の開放要 求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情報として保持し 、メモリ領域の割り当て処理に際して、リリースキューに含まれる各キュー要素に設定 された開放要求時刻と、スレッドリストの最古進入時刻との比較を実行し、開放要求 時刻が最古進入時刻以前に設定されたキュー要素のみに対応するメモリ領域の割り 当て処理を実行する構成としたので、全てのスレッドにおいてアクセス対象となってい ないメモリ領域のみを確実に選択して割り当て処理を実行することが可能となり、各ス レッドにおけるアクセスエラーの発生などのな 、安全なメモリ領域の割り当て処理が 可能となる。

Claims

請求の範囲
[1] 情報処理装置であり、
データ処理単位としてのスレッド情報を管理するスレッド管理部と、
メモリ領域の管理を実行するメモリ領域管理部とを有し、
前記スレッド管理部は、各データ処理プログラムからのオペレーティングシステムの 機能呼出時刻としての進入時刻情報をスレッド毎に記録したスレッドリストをスレッド 管理情報として保持し、
前記メモリ領域管理部は、開放要求があり未開放のメモリ領域についての領域単位 毎の開放要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情報 として保持し、メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各 キュー要素に設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入 時刻との比較を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュ 一要素に対応するメモリ領域の割り当てを実行する構成であることを特徴とする情報 処理装置。
[2] 前記スレッド管理部は、
複数プロセッサ各々に対応するスレッドリストを生成し、各スレッドリストのヘッダ部に 、スレッドリストに含まれるスレッド情報に設定さたれ進入時刻情報中の最古の進入時 刻を記録し、該記録情報を他プロセッサ力 参照可能な設定として管理する構成を 有することを特徴とする請求項 1に記載の情報処理装置。
[3] 前記メモリ領域管理部は、
前記スレッド管理部の管理するプロセッサ対応のスレッドリストのヘッダ部に設定さ れた最古進入時刻情報をすベて参照し、全てのプロセッサ対応のスレッドリストのへ ッダ部に設定された最古進入時刻情報中、最も古い最古進入時刻を選択し、該選択 最古進入時刻と、前記リリースキューに含まれる各キュー要素に設定された開放要求 時刻との比較を実行し、開放要求時刻が前記選択最古進入時刻以前に設定された キュー要素に対応するメモリ領域の割り当てを実行する構成であることを特徴とする 請求項 2に記載の情報処理装置。
[4] 前記スレッド管理部は、 前記スレッドリストのヘッダおよびリスト構成要素に他のリスト構成要素の識別情報を 記録し、ヘッダ力も順次各構成要素を取得可能な構成を持つリストとしてスレッドリスト を構築し、スレッドの進入、退出に際して、ヘッダまたはリスト構成要素に設定された 識別情報の更新処理を実行する構成であることを特徴とする請求項 1に記載の情報 処理装置。
[5] 前記メモリ領域管理部は、
前記リリースキューのヘッダおよびキュー要素に他のキュー要素の識別情報を記録 し、ヘッダ力も順次各キュー要素を取得可能な構成を持つリストとしてリリースキュー を構築し、新たなキューの設定、またはキューの削除処理に際して、ヘッダまたはキ ユー要素に設定された識別情報の更新処理を実行する構成であることを特徴とする 請求項 1に記載の情報処理装置。
[6] 前記メモリ領域管理部は、
プロセッサに対応して設定される有限サイズのメモリ領域としてのヒープ単位でのメ モリ管理処理を実行する構成であり、開放要求があり未開放のヒープについてヒープ 単位の開放要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情 報として保持し、メモリ領域の割り当て処理に際して、前記リリースキューに含まれるヒ ープ単位の各キュー要素に記録されたメモリ領域の割り当てを実行する構成であるこ とを特徴とする請求項 1に記載の情報処理装置。
[7] 前記メモリ領域管理部は、
メモリ領域を参照するポインタとして weakポインタを含む構成において、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakポ インタを構成要素とする weakポインタチェーンの検証を実行し、該 weakポインタチェ ーンに weakポインタが存在しない場合、当該キュー要素をリリースキューから破棄し 、該キュー要素対応のメモリ領域の開放を実行する構成であることを特徴とする請求 項 1に記載の情報処理装置。
[8] 前記メモリ領域管理部は、
メモリ領域を参照するポインタとして weakポインタを含む構成において、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakポ インタと該 weakポインタの参照領域を含むメモリ領域を構成要素とする weakボイン タチェーンに含まれるメモリ領域のリタイア済みフラグを検証し、該リタイア済みフラグ 力 Sリタイア済みであることを示す場合、当該キュー要素をリリースキューから破棄し、 該キュー要素対応のメモリ領域の開放を実行する構成であることを特徴とする請求項 1に記載の情報処理装置。
[9] メモリ領域管理方法であり、
各データ処理プログラムからのオペレーティングシステムの機能呼出時刻としての 進入時刻情報をスレッド毎に記録したスレッド情報力 なるスレッドリストを生成、更新 するスレッド管理ステップと、
メモリ開放要求があり未開放のメモリ領域についての領域単位毎の開放要求時刻 を記録した待ち行列としてのリリースキューをメモリ領域管理情報として生成、更新す るメモリ領域管理ステップと、
メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各キュー要素に 設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入時刻との比較 を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュー要素に対応 するメモリ領域の割り当て処理を実行するメモリ領域割り当てステップと、
を有することを特徴とするメモリ領域管理方法。
[10] 前記スレッド管理ステップは、
複数プロセッサ各々に対応するスレッドリストを生成し、各スレッドリストのヘッダ部に 、スレッドリストに含まれるスレッド情報に設定さたれ進入時刻情報中の最古の進入時 刻を記録し、該記録情報を他プロセッサ力 参照可能な設定として管理することを特 徴とする請求項 9に記載のメモリ領域管理方法。
[11] 前記メモリ領域割り当てステップは、
プロセッサ対応のスレッドリストのヘッダ部に設定された最古進入時刻情報をすベ て参照し、全てのプロセッサ対応のスレッドリストのヘッダ部に設定された最古進入時 刻情報中、最も古い最古進入時刻を選択し、該選択最古進入時刻と、前記リリース キューに含まれる各キュー要素に設定された開放要求時刻との比較を実行し、開放 要求時刻が前記選択最古進入時刻以前に設定されたキュー要素に対応するメモリ 領域の割り当てを実行することを特徴とする請求項 10に記載のメモリ領域管理方法
[12] 前記スレッド管理ステップは、
前記スレッドリストのヘッダおよびリスト構成要素に他のリスト構成要素の識別情報を 記録し、ヘッダ力も順次各構成要素を取得可能な構成を持つリストとしてスレッドリスト を構築し、スレッドの進入、退出に際して、ヘッダまたはリスト構成要素に設定された 識別情報の更新処理を実行するステップを含むことを特徴とする請求項 9に記載のメ モリ領域管理方法。
[13] 前記メモリ領域管理ステップは、
前記リリースキューのヘッダおよびキュー要素に他のキュー要素の識別情報を記録 し、ヘッダ力も順次各キュー要素を取得可能な構成を持つリストとしてリリースキュー を構築し、新たなキューの設定、またはキューの削除処理に際して、ヘッダまたはキ ユー要素に設定された識別情報の更新処理を実行するステップを含むことを特徴と する請求項 9に記載のメモリ領域管理方法。
[14] 前記メモリ領域管理ステップは、
プロセッサに対応して設定される有限サイズのメモリ領域としてのヒープ単位でのメ モリ管理処理を実行し、開放要求があり未開放のヒープについてヒープ単位の開放 要求時刻を記録した待ち行列としてのリリースキューをメモリ領域管理情報として保持 し、
前記メモリ領域割り当てステップは、
前記リリースキューに含まれるヒープ単位の各キュー要素に記録されたメモリ領域の 割り当てを実行することを特徴とする請求項 9に記載のメモリ領域管理方法。
[15] 前記メモリ領域管理ステップは、
メモリ領域を参照するポインタとして weakポインタを含む構成において、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakポ インタを構成要素とする weakポインタチェーンの検証を実行し、該 weakポインタチェ ーンに weakポインタが存在しない場合、当該キュー要素をリリースキューから破棄し 、該キュー要素対応のメモリ領域の開放を実行するステップを含むことを特徴とする 請求項 9に記載のメモリ領域管理方法。
[16] 前記メモリ領域管理ステップは、
メモリ領域を参照するポインタとして weakポインタを含む構成において、 前記リリースキューに含まれるキュー要素に対応するメモリ領域を参照する weakポ インタと該 weakポインタの参照領域を含むメモリ領域を構成要素とする weakボイン タチェーンに含まれるメモリ領域のリタイア済みフラグを検証し、該リタイア済みフラグ 力 Sリタイア済みであることを示す場合、当該キュー要素をリリースキューから破棄し、 該キュー要素対応のメモリ領域の開放を実行するステップを含むことを特徴とする請 求項 9に記載のメモリ領域管理方法。
[17] メモリ領域管理処理を実行するコンピュータ ·プログラムであり、
各データ処理プログラムからのオペレーティングシステムの機能呼出時刻としての 進入時刻情報をスレッド毎に記録したスレッド情報力 なるスレッドリストを生成、更新 するスレッド管理ステップと、
メモリ開放要求があり未開放のメモリ領域についての領域単位毎の開放要求時刻 を記録した待ち行列としてのリリースキューをメモリ領域管理情報として生成、更新す るメモリ領域管理ステップと、
メモリ領域の割り当て処理に際して、前記リリースキューに含まれる各キュー要素に 設定された開放要求時刻と、前記スレッドリストの各要素中の最古進入時刻との比較 を実行し、開放要求時刻が前記最古進入時刻以前に設定されたキュー要素に対応 するメモリ領域の割り当て処理を実行するメモリ領域割り当てステップと、
を有することを特徴とするコンピュータ ·プログラム。
PCT/JP2005/017645 2004-09-29 2005-09-26 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム WO2006035727A1 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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