WO2009157127A1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents
情報処理装置、情報処理方法及び情報処理プログラム Download PDFInfo
- Publication number
- WO2009157127A1 WO2009157127A1 PCT/JP2009/002080 JP2009002080W WO2009157127A1 WO 2009157127 A1 WO2009157127 A1 WO 2009157127A1 JP 2009002080 W JP2009002080 W JP 2009002080W WO 2009157127 A1 WO2009157127 A1 WO 2009157127A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- thread
- context
- information processing
- execution state
- state
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Definitions
- the present invention relates to a multi-thread execution control technology.
- multithreading An execution control method called multithreading is known, in which a plurality of processes are switched by one processor and apparently executed in parallel.
- the multi-thread here is sometimes referred to variously as multi-task, multi-process, and the like.
- Patent Document 1 Japanese Patent Laid-Open No. 2004-151867 performs a saving / setting process for data (context) of a size corresponding to a register size handled by a thread when a plurality of programs (threads) having different register sizes are executed in parallel while switching. This shortens the time required to switch threads.
- the present invention has been made in view of the problem, and provides an information processing apparatus, an information processing method, and an information processing program capable of switching threads at a higher speed by a method different from the conventional one. With the goal.
- an information processing apparatus is an information processing apparatus that executes a plurality of threads, each of which performs processing corresponding to acquisition of an event, by a processor while switching, in an execution state.
- a scheduling means for transitioning a state of a first thread to a non-execution state, selecting a second thread to be executed next from the plurality of threads, and transitioning to an execution state, and transitioning to a non-execution state
- the first detection means for detecting that the processing start position when the next execution state is reached is a predetermined processing portion corresponding to the event acquisition, and the execution state is changed.
- a setting unit that operates by switching whether or not to set a context for execution of the second thread in the processor according to a detection result of the first detection unit and the second detection unit. It is characterized by providing.
- an information processing method used in the information processing apparatus according to the present invention to solve the above-described problem is an information processing apparatus in which a plurality of threads each performing processing corresponding to acquisition of an event are executed by a processor while switching
- the scheduling means changes the state of the first thread that is in the execution state to the non-execution state, and selects the second thread to be executed next from the plurality of threads.
- the transition to the execution state and the start position of the process when the first detection unit is changed to the non-execution state when the first detection state is changed to the next execution state correspond to the acquisition of the event.
- a step of detecting that it is a predetermined processing part, and a second detecting means in the second thread to be shifted to the execution state A step of detecting that the start position of the processing is the predetermined processing portion; and a setting means when the second thread is shifted to the execution state, the first detection means and the second detection means And a step of switching whether to set a context for execution of the second thread in the processor according to the detection result.
- an information processing program for causing the information processing apparatus according to the present invention to execute the above-described problem is information executed by the processor while switching a plurality of threads each performing processing corresponding to the acquisition of the event.
- An information processing program for causing a processing device to execute a thread execution control process, wherein the thread execution control process changes a state of a first thread which is an execution state to a non-execution state, and the plurality of threads A scheduling step for selecting a second thread to be executed next from among the processes and making a transition to the execution state, and starting a process when the execution state is entered next in the first thread to be changed to the non-execution state
- a first detection step for detecting that the position is a predetermined processing part corresponding to acquisition of an event, and a transition to an execution state.
- a setting step that operates by switching whether or not to set a context for execution of the second thread in the processor according to a detection result of the second detection step.
- the information processing apparatus having the above-described configuration, when changing the second thread to the execution state instead of the first thread, according to the detection results of the first detection means and the second detection means.
- the context for executing the second thread is set in the processor, it is possible to switch the thread at a higher speed than in the conventional case where the context is always set in the processor.
- the information processing apparatus further includes a context storage unit for storing a context in association with a thread, and a context set in the processor when the first detection unit does not detect the context,
- a context associating means for storing in the context storage means as a context associated with the first thread, wherein the setting means is detected by the first detecting means and detected by the second detecting means; If the context associated with the second thread is not set in the processor and the second detection means does not detect the context associated with the second thread, the context associated with the second thread is given to the processor. It may be set.
- correlate refers to information that associates a thread with a context stored in the context storage means.
- the setting unit changes the context associated with the second thread when the second thread transitions to the execution state. Since the processor is not set, the information processing apparatus according to the present invention can perform thread switching at higher speed.
- the processing start position in the second thread to be changed to the execution state and the next in the first thread that has been in the execution state until then Since both the start position of the process when it enters the execution state is a predetermined processing part, it is normal even if the second thread is executed without setting the context associated with the second thread in the processor Can be operated.
- the context association unit when the first detection unit further detects, the context associated with the first thread stored in the context storage unit and the first thread The association may be deleted.
- the context association unit deletes the association between the first thread and the context, so the number of contexts to be managed is reduced and the context is stored as a whole.
- the required memory capacity can be reduced.
- the information processing apparatus includes an initial context storage unit that stores an initial context for setting the predetermined processing part for a thread that is not associated with a context in the context storage unit as a processing start position,
- the second detecting means detects that the processing start position in the second thread is the predetermined processing portion when the second thread and the context are not associated with each other in the context storage means.
- the context association unit further detects the context association destination associated with the first thread when the second detection unit detects the context detection unit when the first detection unit detects the context association unit.
- the initial context When changing to the second thread and the first detection means does not detect, the initial context
- the context storage unit stores the context associated with the second thread, and the setting unit detects the context when the first detection unit does not detect and the second detection unit detects the context.
- the initial context stored in the context storage unit in association with the second thread may be set in the processor by the association unit.
- the second detecting means detects, that is, when the context is not associated with the second thread
- the first detecting means detects, the context associated with the first thread. Is associated with the second thread, so that when the second thread is executed and when it becomes a non-executed state, the area for that must be saved when the context must be saved. Can be like that.
- an initial context for setting the predetermined processing portion as the processing start position is the second thread.
- Corresponding and the setting means sets the initial context in the processor, so that the second thread can be executed normally.
- the information processing apparatus is further associated with the second thread stored in the context storage unit when the first detection unit detects and the second detection unit detects. It is also possible to provide a context association unit that changes the association destination of the existing context to the first thread and the association destination of the context associated with the first thread to the second thread. .
- the context association unit associates the context associated with the second thread with the first thread.
- the context association unit associates the context associated with the first thread with the second thread, the context is saved when the second thread is executed and then enters the non-execution state. When it is unavoidable, an area for this can be secured.
- the context associated therewith can be set in the processor as it is.
- the event is a message
- the non-execution state includes a message wait state waiting for reception of a message
- the plurality of threads include a processing start position when the next execution state is set
- a thread that is configured to set a flag indicating a transition to the message waiting state, the first detection unit and the second detection unit include a thread that is to be detected; By detecting that the flag is set, it may be detected that the processing start position in the processing target thread is the predetermined processing portion.
- each thread is simply configured to set a flag indicating that the message transitions to the message waiting state.
- the information processing apparatus can obtain the effect of switching threads at a higher speed.
- FIG. 10 is a diagram illustrating a group of structures stored in a storage unit 1010. It is a figure which shows the data structure of the scheduler structure D00. It is a figure which shows the data structure of thread
- 10 is a flowchart illustrating an operation of a schedule unit 1020 of the information processing apparatus 1000.
- 12 is a flowchart illustrating the operation of the transition detection unit 1030 of the information processing apparatus 1000.
- 10 is a flowchart showing the operation of the wakeup detection unit 1040 of the information processing apparatus 1000.
- 10 is a flowchart illustrating an operation of a context-compatible exchange unit 1071 of the information processing apparatus 1000.
- 12 is a flowchart illustrating an operation of a dispatch unit 1060 of the information processing apparatus 1000.
- It is a functional block diagram of the information processing apparatus 2000 which concerns on Embodiment 2 of this invention. It is a figure which shows the data structure of the scheduler structure D40. It is a figure which shows the data structure of context structure D50A.
- 12 is a flowchart illustrating an operation of the execution control unit 2020 of the information processing apparatus 2000.
- 10 is a flowchart illustrating an operation of the context non-correspondence detection unit 2010 of the information processing device 2000.
- 10 is a flowchart illustrating an operation of a context-compatible moving unit 2031 of the information processing device 2000.
- 18 is a flowchart showing the operation of the context-compatible release / restoration unit 2032 of the information processing apparatus 2000.
- 22 is a flowchart showing the operation of the context storage / correspondence assignment unit 2033 of the information processing apparatus 2000.
- 22 is a flowchart showing the operation of the context storage / correspondence assignment unit 2033 of the information processing apparatus 2000.
- Embodiment 1 >> ⁇ Overview>
- the information processing apparatus according to Embodiment 1 is an improvement of a conventional information processing apparatus that realizes a function as a multi-thread OS (Operating System) by causing a processor such as a CPU (Central Processing Unit) to execute a program. It is.
- a processor such as a CPU (Central Processing Unit)
- each thread targeted for multi-thread control has a plurality of threads that operate as so-called event-driven processing programs, and the occurrence of various events is conveyed by messages.
- Examples of this message include a notification indicating that the user has clicked the mouse button, a notification used for establishing cooperation between threads, and the switching factor of each thread is a time slice.
- this certain thread is expressed as “previous thread”, and the other thread is expressed as “current thread”.
- Each event-driven thread repeatedly executes a loop process called a message loop during the execution state.
- the message loop is formed by including, in the main routine of the program, a process for determining whether or not a message is received in the message queue. When a message is received, a predetermined subroutine is called to respond to the message. After performing the process, this determination process is performed again, and if a message has not been received, a process for setting a flag to transition to a message waiting state (hereinafter referred to as “message waiting state”) is performed, This causes the OS to perform thread switching processing.
- messages waiting state a process for setting a flag to transition to a message waiting state
- the thread (previous thread) in which the flag is set waits for a message and interrupts the execution of the message loop, and another thread (current thread) This thread also executes the message loop.
- the previous thread that has entered the message waiting state enters the execution state next time, the execution is resumed from the determination process.
- each event-driven thread is executing its own message loop, so if the previous thread enters the message waiting state, a message is sent immediately before the current thread changes from the previous execution state to the non-execution state.
- both the resumption position of execution when the previous thread next enters the execution state and the position where the current thread will resume execution will be referred to as the above determination process. It will be.
- the content of the data indicated by the value set in the CPU register matches the content of the data indicated by the context of the current thread, and the context save / set processing is performed.
- the processing of the current thread can be resumed.
- this information processing device detects that the previous thread has transitioned to the message waiting state when switching threads, and has detected that the current thread has transitioned to the message waiting state when the current thread was in the previous execution state.
- this information processing device detects that the previous thread has transitioned to the message waiting state when switching threads, and has detected that the current thread has transitioned to the message waiting state when the current thread was in the previous execution state.
- FIG. 1 is a functional block diagram of an information processing apparatus 1000 according to Embodiment 1 of the present invention.
- the information processing apparatus 1000 includes a CPU and a memory. As shown in the figure, the information processing apparatus 1000 includes a storage unit 1010, a schedule unit 1020, a transition detection unit 1030, a wakeup detection unit 1040, an execution control unit 1050, a dispatch unit 1060, An attaching portion 1070 is provided.
- the storage unit 1010 is realized by a storage medium such as a memory, and a subroutine group (hereinafter referred to as “step group”) and a data group (scheduler structure, each thread structure, each context structure) constituting the operating system. Etc.).
- step group a subroutine group
- data group scheduling structure, each thread structure, each context structure
- the scheduler structure includes information for specifying the previous thread and the current thread, and each thread structure is information for execution control of each thread. Yes, it includes the thread status, the priority of execution, a pointer to the associated context, and the like.
- Each context structure is information indicating the contents of the context associated with each thread.
- the structure here refers to data itself having a certain data structure, and the scheduler structure, the thread structure, and the context structure have different data structures.
- Each thread structure has the same data structure, but the data itself is different, and the same applies to each context structure.
- the scheduling unit 1020 determines a thread to be executed next based on the state of each thread included in each thread structure stored in the storage unit 1010 and the execution priority in accordance with an instruction from the execution control unit 1050. , Has a function of transitioning the determined thread to the execution state.
- the schedule unit 1020 reflects the information on the determined thread in the scheduler structure of the storage unit 1010.
- the transition detection unit 1030 refers to a thread structure in the storage unit 1010 (hereinafter referred to as “previous thread structure”), which is information for execution control of the previous thread, in accordance with an instruction from the execution control unit 1050. It has a function of detecting that a thread transitions to a message waiting state.
- the wake-up detection unit 1040 refers to the thread structure of the storage unit 1010 (hereinafter referred to as “current thread structure”), which is information for execution control of the current thread, in accordance with the instruction of the execution control unit 1050.
- current thread structure the thread structure of the storage unit 1010
- the thread When the thread was in the previous execution state, it has a function of detecting that it has transitioned to the message waiting state.
- the execution control unit 1050 has a function of controlling the entire apparatus and instructing each block in the apparatus. In particular, when the determination by the schedule unit 1020 is made, the transition detection unit 1030 and the wake-up detection unit 1040 are instructed to detect, and the thread is switched to either the dispatch unit 1060 or the association unit 1070 according to the detection result.
- the dispatch unit 1060 In response to an instruction from the execution control unit 1050, the dispatch unit 1060 stores the value set in the CPU register in the storage unit 1010 as a context structure of the previous thread, and stores the current value stored in the storage unit 1010. It has a function of setting the contents of the thread context structure in the CPU register.
- the associating unit 1070 includes a context corresponding exchanging unit 1071, and this context corresponding exchanging unit 1071 responds to the instruction from the execution control unit 1050 and associates the previous thread with the context and the current thread with the context. It has the function of exchanging attachments. More specifically, a pointer indicating a context associated with the thread included in the previous thread structure is exchanged with a pointer indicating a context associated with the thread included in the current thread structure.
- ⁇ Data> Data used by the information processing apparatus 1000 for multithread control will be described. In the following, a case where parallel execution of three event-driven threads is assumed will be described as an example. Further, in the following example, description will be made assuming that a waiting process is performed using one semaphore.
- FIG. 2 is a diagram showing a group of structures stored in the storage unit 1010.
- the storage unit 1010 stores a scheduler structure D00, thread structures D10A to D10C, a semaphore structure D20, and context structures D30A to D30C.
- the thread structures D10A to D10C are information for execution control of one thread, and are generated when a thread is generated. Since the thread structures D10A to D10C have the same data configuration, the thread structure D10A will be described below as an example.
- FIG. 4 is a diagram showing a data configuration of the thread structure D10A.
- the thread structure D10A includes a thread state D11, a thread priority D12, a message waiting state transition detection flag D13, a pointer D14 to the context structure, a message queue D15, and a message handler D16.
- the thread state D11 is information indicating the state of the thread, and indicates any one of the end state T0, the execution state T1, the executable state T2, the general waiting state T3, and the message waiting state T4. How the thread state changes will be described later.
- the thread priority D12 is information indicating the priority of execution of the thread, and the priority is determined by receiving a designation from the generation source program at the time of thread generation, for example.
- the message waiting state transition detection flag D13 is information indicating whether the previous thread has transitioned to the message waiting state T4 and whether the current thread has transitioned to the message waiting state T4. Set to “true” by the thread to indicate that the thread transitions from the execution state T1 to the message waiting state T4. When thread switching occurs, it is determined whether or not context saving / setting processing is necessary using this flag.
- the context structure pointer D14 is a pointer for specifying the context structure associated with the thread, and is set when the context corresponding to the thread is generated. As described later, the context save / It is updated when a thread is switched without performing setting processing.
- the description of “context structure D30” in the drawing indicates that any one of the context structures D30A to D30C is indicated.
- the message queue D15 is a set of messages received by the thread. This message is added by the OS or another thread, and the message queue D15 may be emptied by processing this message, that is, by executing a subroutine (message handler) corresponding to the event (message). is there.
- a subroutine messages handler
- the message handler D16 is a pointer for storing an address on the storage unit 1010 of a subroutine (message handler) executed when a message is received.
- FIG. 5 is a diagram for explaining thread state transitions.
- the end state T0 shown in the figure means a state in which the operation of the thread is ended, and this state is also immediately after the thread is generated.
- the thread transitions to the executable state T2 by performing processing for starting the thread.
- the executable state T2 is a state waiting for the CPU to be assigned, and when the CPU is assigned to the thread, the thread transitions to the execution state T1.
- the execution state T1 is a state in which a CPU is assigned to a thread and executed.
- the priority of the thread in the execution state T1 becomes lower than the other thread in the executable state T2
- the thread in the execution state T1 transitions to the executable state T2, and waits for the release of resources of other threads.
- the state transits to the general waiting state T3, and when waiting for a message occurs, the state transits to the message waiting state T4.
- the general wait state T3 refers to a wait state caused by a factor other than the factor in the message wait state T4, such as a semaphore wait state.
- the message waiting state T4 refers to a state in which there is no message in the above-described message queue D15 and is waiting for reception of a message. When a message is transmitted (that is, received), the message waiting state T4 transits to an executable state T2. .
- FIG. 3 is a diagram showing a data structure of the scheduler structure D00.
- the scheduler structure D00 includes a thread structure array D01, a pointer D02 to the current thread structure, and a pointer D03 to the previous thread structure.
- the thread structure array D01 is an array having the thread structures D10A to D10C as elements.
- the pointer D02 to the current thread structure is a current thread structure (hereinafter referred to as a thread and its control information) that is control information of the thread (current thread) that is determined to be executed next by the scheduling unit 1020.
- a thread and its control information that is control information of the thread (current thread) that is determined to be executed next by the scheduling unit 1020.
- the pointer D03 to the previous thread structure is a pointer for specifying the previous thread structure corresponding to the thread (previous thread) that was the current thread before the determination by the schedule unit 1020.
- FIG. 6 is a diagram showing a data configuration of the semaphore structure D20.
- the semaphore structure D20 includes a resource number D21 and a thread queue D22 in a general waiting state.
- the number of resources D21 is information indicating the number of resources managed by the semaphore
- the thread queue D22 in the general wait state is a thread that has transitioned to the general wait state T3 in order to wait for the release of resources of other threads. Is a set of
- the context structures D30A to D30C are information indicating the contents of the context associated with each thread, and are generated when a thread is started. Since the context structures D30A to D30C have the same data configuration, the context structure D30A will be described below as an example.
- FIG. 7 is a diagram showing a data structure of the context structure D30A.
- the context structure D30A includes a general waiting state context D33 and a stack D34.
- the general wait state context D33 is information indicating a context saved from the CPU when the thread transitions from the execution state T1 to the general wait state T3, and the stack D34 is stack information for each context.
- FIG. 8 is a flowchart (left side) showing the processing of each thread and a flowchart (right side) showing the operation of the execution control unit 1050 of the information processing apparatus 1000.
- the message loop step S100 described below shows the processing contents of the message loop executed by each event-driven thread. That is, threads that are subject to multi-thread control by the information processing apparatus 1000 have a common processing structure.
- the message loop step S100 is stored in the storage unit 1010 and is executed by the CPU provided in the information processing apparatus 1000.
- the thread determines whether there is a message in the message queue D15 of the thread structure (current thread structure) corresponding to its own thread (partial step S101). If there is a message (partial step S101: YES), this message queue D15
- the subroutine (message handler) set in the message handler D16 is called by using the message taken out as an argument (partial step S106), and after that process, the process returns to the partial step S101.
- the processing contents of this subroutine (message handler) may be different for each thread or the same.
- the thread calls the schedule step S000, which is a subroutine, and the dispatch request step S110 in order (partial steps S104 and S105), and after these processes, returns to the process of the partial step S101.
- the OS determines a thread to be executed next and switches the thread.
- the thread executes the subroutine (message handler) while there are messages in the message queue D15 (partial step S101: YES), and when there are no more messages in the message queue D15 (partial step S101: NO), the message If the flag for transition to the waiting state T4 (message waiting state transition detection flag D13) is set, the OS causes the transition to the message waiting state T4, and then the thread enters the execution state T1. The process is resumed from S101.
- FIG. 9 is a flowchart showing the operation of the schedule unit 1020 of the information processing apparatus 1000.
- the schedule unit 1020 substitutes the pointer D02 to the current thread structure for the pointer D03 to the previous thread structure in the scheduler structure D00 (partial step S001).
- the thread structure having the highest thread priority D12 is searched from the thread structures whose thread state D11 is the execution state T1 and the executable state T2 (partial step S002). .
- the thread state D11 of the retrieved thread structure is the execution state T1 (partial step S003). If it is not the execution state T1 (partial step S003: NO), the retrieved thread (becomes the current thread). The following processing is performed to change the state of the thread. That is, the thread state D11 of the thread structure corresponding to the retrieved thread is updated to the execution state T1, and the thread structure corresponding to the retrieved thread is set in the pointer D02 to the current thread structure (partial step S004). ).
- step S005 it is determined whether the thread state D11 of the previous thread structure is the execution state T1 (partial step S005). If the thread state D11 is the execution state T1 (partial step S005: YES), in order to change the state of the previous thread, The thread state D11 of the previous thread structure is updated to the executable state T2 (partial step S006), and the process of the schedule step is ended (partial step S007). Further, in the partial step S005, when the state is not the execution state T1 (partial step S005: NO), the schedule step process is terminated without performing any particular process (partial step S007).
- step S003 if the execution state is T1 (partial step S003: YES), the retrieved thread is originally in the execution state T1 and does not need to be changed. The step process is terminated (partial step S007).
- the execution control unit 1050 determines whether the current thread structure is the same as the previous thread structure (partial step S111). That is, it is determined whether the pointer D02 to the current thread structure is the same as the pointer D03 to the previous thread structure.
- Step S111: NO processing for switching threads is performed as follows.
- the execution control unit 1050 determines whether the return value of the message waiting state transition detection step S010 is “true” (partial step S112).
- the contents of the message waiting state transition detection step S010 will be described later.
- the partial step S112 includes a thread corresponding to the previous thread structure. This corresponds to determining whether or not to transit to the message waiting state T4.
- the execution control unit 1050 determines whether the return value in the wakeup detection step S020 from the message waiting state is “true”. (Partial step S113). The contents of the wake-up detection step S020 from the message waiting state will be described later. However, since the value of the message waiting state transition detection flag D13 of the current thread structure is a return value, the partial step S113 corresponds to the current thread structure. This corresponds to determining whether the thread has transitioned to the message waiting state T4 when it was in the previous execution state T1.
- partial step S113 When the return value in the partial step S113 is “true” (partial step S113: YES), the content of the data indicated by the context of the thread corresponding to the previous thread structure and the context of the thread corresponding to the current thread structure indicate Since the contents of the data match, the execution control unit 1050 calls the context association exchange step S030 (partial step S114), and after that processing, the processing of the dispatch request step ends (partial step S117). .
- the contents of the context association exchange step S030 will be described later, but a process of exchanging associations (pointers) between the context associated with the previous thread and the context associated with the current thread is performed.
- the execution control unit 1050 calls the dispatch step S040 (partial step S116), and after that processing, ends the processing of the dispatch request step (partial step S117).
- the contents of the dispatch step S040 will be described later, but context save / set processing is performed.
- the execution control unit 1050 updates the message waiting state transition detection flag D13 of the current thread structure to “false” ( The process proceeds to partial step S115) and partial step S116.
- the determination process in the partial steps S112 and S113 is performed, and the process is distributed to either the dispatch step S040, which is a subroutine, or the context association exchange step S030.
- context saving / setting processing is performed, and in the context association exchange step S030, the association between the context associated with the previous thread and the context associated with the current thread ( Processing for exchanging pointers) is performed.
- the context association exchange process can generally be processed at a higher speed than the context saving / setting process, the more the number of times the context association exchange step S030 is called when switching threads, Compared to the case where the dispatch step S040 is called every time, the processing efficiency of the program as a whole can be improved.
- FIG. 10 is a flowchart showing the operation of the transition detection unit 1030 of the information processing apparatus 1000.
- the transition detection unit 1030 returns the value of the message waiting state transition detection flag D13 of the previous thread structure (partial step S011), and ends the processing of the message waiting state transition detection step (partial step S012).
- FIG. 11 is a flowchart showing the operation of the wake-up detection unit 1040 of the information processing apparatus 1000.
- the wakeup detection unit 1040 returns the value of the message waiting state transition detection flag D13 of the current thread structure (partial step S021), and sets the value of the message waiting state transition detection flag D13 to “false” (partial step S022). ), The process of the wake-up detection step from the message waiting state is terminated (partial step S023).
- FIG. 12 is a flowchart showing the operation of the context corresponding exchange unit 1071 of the information processing apparatus 1000.
- the context correspondence exchanging unit 1071 exchanges the value of the pointer D14 to the context structure of the current thread structure and the value of the pointer D14 to the context structure of the previous thread structure (partial step S031), and context association The exchange step process is terminated (partial step S032).
- the context of the previous thread can be correctly held without performing the context saving process.
- the state in which the context is associated with the current thread can be maintained, and even if the context of the current thread needs to be saved, it can be saved as before.
- FIG. 13 is a flowchart showing the operation of the dispatch unit 1060 of the information processing apparatus 1000.
- the dispatch unit 1060 stores the value set in the CPU register as the general wait state context D33 of the context structure D30 pointed to by the pointer D14 to the context structure of the previous thread structure.
- the value of the program counter (hereinafter also referred to as “PC”) is corrected and stored in S043 (partial step S041).
- the correction of the value of the program counter indicates that the process corresponding to the previous thread structure is resumed from the partial step S043 when the thread enters the execution state T1 next time.
- the dispatch unit 1060 sets the value of the general wait state context D33 of the context structure D30 pointed to by the pointer D14 to the context structure of the current thread structure in the CPU register (partial step S042), and the dispatch step The process ends (partial step S043).
- the pointer D02 to the current thread structure is “D10A”
- the thread state D11 of the thread structure D10A is “T1”
- the message queue D15 is empty
- the pointer D14 to the context structure is “D30A”.
- the thread state D11 of the thread structure D10B is “T2”
- the message waiting state transition detection flag D13 is “true”
- the pointer D14 to the context structure is “D30B”, which corresponds to the thread structure D10A.
- the thread corresponding to the thread structure D10A calls the schedule step S000 which is a subroutine (partial step S104).
- the execution control unit 1050 of the information processing apparatus 1000 Upon receipt of the schedule step S000, the execution control unit 1050 of the information processing apparatus 1000 instructs the schedule unit 1020 to perform processing.
- the schedule unit 1020 Upon receiving this instruction, the schedule unit 1020 substitutes the pointer D02 (D10A) to the current thread structure into the pointer D03 to the previous thread structure in the scheduler structure D00 (partial step S001 in FIG. 9).
- the scheduling unit 1020 has a thread structure having the highest thread priority D12 among the thread structures in which the thread state D11 is the execution state T1 and the executable state T2 among the thread structures (this example)
- the thread structure D10B is searched (partial step S002), and the thread state D11 (T2) of the thread structure D10B is not the execution state T1 (partial step S003: NO). Is updated to “T1”, and “D10B” is set to the pointer D02 to the current thread structure (partial step S004).
- the thread corresponding to the thread structure D10A calls the dispatch request step S110 (partial step S105).
- the execution control unit 1050 Upon reception of the dispatch request step S110, the execution control unit 1050 does not have the same pointer D02 (D10B) to the current thread structure and the pointer D03 (D10A) to the previous thread structure (the partial step on the right side of FIG. 8).
- S111: NO the return value of the message waiting state transition detection step S010 is “true” (partial step S112: YES), and the return value of the wakeup detection step S020 from the message waiting state is also “true” (partial).
- Step S113: YES) the context association exchange step S030 is called (partial step S114).
- the context corresponding exchange unit 1071 receives the value of the pointer D14 to the context structure of the current thread structure (D30B) and the pointer D14 to the context structure of the previous thread structure ( D30A) is exchanged (partial step S031 in FIG. 12), and the process of the context association exchange step is terminated (partial step S032).
- the execution control unit 1050 ends the dispatch request step processing (partial step S117 on the right side of FIG. 8).
- Embodiment 2 >> ⁇ Overview>
- one context is always associated with each thread.
- the previous thread is in the message waiting state T4.
- the association (pointer) between the previous thread and the context is deleted.
- the information processing apparatus detects that the current thread and the context are not associated with each other, so that when the current thread is in the previous execution state T1, the information processing device transits to the message waiting state T4.
- the current thread from which the association with this context has been deleted is newly associated with the context set to be executed from the message loop determination process. In this way, it is not necessary to associate a context with a thread that has suspended processing in the message waiting state T4. Therefore, as the number of such threads increases, the memory usage as a whole decreases. Can do.
- FIG. 14 is a functional block diagram of the information processing apparatus 2000 according to Embodiment 2 of the present invention.
- the information processing apparatus 2000 includes a storage unit 1010, a schedule unit 1020, a transition detection unit 1030, a context non-correspondence detection unit 2010, an execution control unit 2020, and an association unit 2030 in terms of functions.
- the context non-correspondence detection unit 2010 has a function of detecting that no context is associated with the thread by referring to the current thread structure in the storage unit 1010 in accordance with an instruction from the execution control unit 2020. .
- the execution control unit 2020 has a function of instructing processing for thread switching to either the dispatch unit 1060 or the association unit 2030 according to the detection result of each detection unit.
- the execution control unit 1050 is different in the following points.
- the execution control unit 1050 instructs the dispatch unit 1060 to perform thread switching when any of the detection units does not detect, but the execution control unit 2020 The difference is that the dispatch unit 1060 is instructed to perform processing only when neither the detection unit 1030 nor the context non-correspondence detection unit 2010 detects.
- the execution control unit 2020 instructs the association unit 2030 to perform thread switching processing when either the transition detection unit 1030 or the context non-correspondence detection unit 2010 detects.
- the associating unit 2030 is different from the associating unit 1070 in that it includes a context corresponding moving unit 2031, a context corresponding releasing / restoring unit 2032, and a context storing / corresponding assigning unit 2033 instead of the context corresponding exchanging unit 1071.
- the context corresponding movement unit 2031 is associated with the previous thread according to an instruction from the execution control unit 2020. It has a function of associating a context with the current thread and deleting the association between the context and the previous thread.
- the context correspondence release / restoration unit 2032 determines whether the previous thread and its context are in accordance with an instruction from the execution control unit 2020. It has a function of deleting the association and setting the context associated with the current thread in the CPU register.
- the context storage / correspondence allocation unit 2033 is set in the CPU register in response to an instruction from the execution control unit 2020 when the transition detection unit 1030 does not detect and the context non-correspondence detection unit 2010 detects.
- the value is stored in the storage unit 1010 as the context structure of the previous thread, the context structure that is not associated with the thread is associated with the current thread, and the contents of the associated context structure are set in the CPU register. It has the function to do. The contents of the context indicated by the context structure associated with the current thread will be described later.
- the storage unit 1010 of the information processing apparatus 2000 stores a scheduler structure D40 and context structures D50A to D50C instead of the scheduler structure D00 and the context structures D30A to D30C of the first embodiment.
- the scheduler structure D40 and the context structures D50A to D50C will be described focusing on differences from the scheduler structure D00 and the context structures D30A to D30C.
- the pointer D14 to the context structure of the thread structures D10A to D10C points to the context structure D50 (any one of the D50A to D50C context structures).
- FIG. 15 is a diagram showing a data structure of the scheduler structure D40.
- the scheduler structure D40 is different from the scheduler structure D00 in that it includes a context pool D04.
- the context pool D04 is information for specifying a context structure that is not associated with a thread.
- the context correspondence release / restoration unit 2032 associates the previous thread with its context. When deleted, this information is stored. When the context structure specified by this information is associated with the current thread by the context storage / correspondence assigning unit 2033, this information is deleted.
- context structure D50A Since the context structures D50A to D50C have the same data configuration, the context structure D50A will be described below as an example.
- FIG. 16 is a diagram showing a data structure of the context structure D50A.
- the context structure D50A is different from the context structure D30A in that it includes a message waiting state context D31 and a message waiting state context storage flag D32.
- the message waiting state context D31 is information indicating a context associated with the current thread by the above-described context storage / correspondence assigning unit 2033, and this context is a message waiting state when it was in the previous execution state T1. It is also set so that the thread that has transitioned to the state T4 can be resumed, and the newly generated thread becomes the current thread.
- the message waiting state context storage flag D32 is information indicating that the message waiting state context D31 is a valid context.
- step S130 The processing contents of the message loop executed by each event-driven thread are the same as in the first embodiment (message loop step S100 shown on the left side of FIG. 8), but the subroutine to be called in partial step S105 is a dispatch request improvement. The following description will be made assuming that step S130.
- FIG. 17 is a flowchart showing the operation of the execution control unit 2020 of the information processing apparatus 2000.
- the partial steps S131 and S132 are processed in the same manner as the partial steps S111 and S112 of the dispatch request step S110 shown in FIG.
- the execution control unit 2020 returns the return value of the context unsupported detection step S050 as “true”. Is determined (partial step S133).
- the partial step S133 includes the current thread structure. This corresponds to determining whether the pointer D14 to the context structure is NULL.
- the execution control unit 2020 calls the context corresponding movement step S060 (partial step S134), and after that processing, ends the processing of the dispatch request improvement step (partial step S139). ).
- the contents of the context corresponding movement step S060 will be described later, a process of associating the context associated with the previous thread with the current thread (setting a pointer) and deleting the association (pointer) between the previous thread and the context.
- the execution control unit 2020 calls the context correspondence release / restore step S070 (partial step S135), and after the processing Then, the processing of the dispatch request improving step is ended (partial step S139).
- the contents of the context correspondence release / restoration step S070 will be described later, but a context setting process and a process of deleting the association (pointer) between the previous thread and the context are performed.
- the execution control unit 2020 performs the same process as the partial step S133 ( Partial step S136).
- partial step S136 when the return value is “true” (partial step S136: YES), the execution control unit 2020 calls the context storage / corresponding assignment step S080 (partial step S137), and after that processing, dispatch is performed.
- the process of the request improvement step is ended (partial step S139).
- the contents of the context storage / correspondence assignment step S080 will be described later.
- the context save process and the context that is not associated with the thread (message waiting state context D31) are associated with the current thread, Perform the setting process.
- Step S136 If the return value is “false” in the partial step S136 (partial step S136: NO), the dispatch step S040 is called (partial step S138), and after the processing, the processing of the dispatch request improving step is ended (partial). Step S139).
- context saving / setting processing is performed, but in the context corresponding movement step S060, context saving / setting processing is not performed, pointer setting, Only the deletion process is performed, and in the context corresponding release / restoration step S070, the context setting process is performed, but the context saving process is not performed, and the process of deleting the pointer is performed.
- FIG. 18 is a flowchart showing the operation of the non-context detection unit 2010 of the information processing apparatus 2000.
- the context non-correspondence detection unit 2010 sets “false” to the message waiting state transition detection flag D13 of the current thread structure (partial step S051), and “true” if the pointer D14 to the context structure of the current thread structure is NULL. "" Is not NULL, "false” is returned (partial step S052), and the processing of the context non-correspondence detection step is terminated (partial step S053).
- FIG. 19 is a flowchart showing the operation of the context corresponding moving unit 2031 of the information processing apparatus 2000.
- the context corresponding moving unit 2031 determines whether the message waiting state context storage flag D32 of the context structure D50 pointed to by the pointer D14 to the context structure of the previous thread structure is “true” (partial step S061). "(Partial step S061: NO), this message waiting state context storage flag D32 is set to" true "(partial step S062).
- the context corresponding moving unit 2031 stores the value of the CPU register in the message waiting state context D31 of the context structure D50 pointed to by the pointer D14 to the context structure of the previous thread structure.
- the value of PC is stored as “S066” (partial step S063).
- the context corresponding moving unit 2031 has the context structure of the current thread structure.
- a pointer D14 to the context structure of the previous thread structure is set in the pointer D14 to the previous thread structure (partial step S064), and “NULL” is set to the pointer D14 to the context structure of the previous thread structure (partial step S064).
- S065 the process of the context corresponding movement step is ended (partial step S066).
- FIG. 20 is a flowchart showing the operation of the context-aware release / restoration unit 2032 of the information processing apparatus 2000.
- the partial steps S071 to S073 are processed in the same manner as the partial steps S061 to S063 of the context corresponding movement step S060 shown in FIG. However, in the partial step S073, the value of PC is stored as “S076”.
- the context corresponding release / restore unit 2032 stocks the context structure D50 pointed to by the pointer D14 to the context structure of the previous thread structure in the context pool D04, and the pointer to the context structure of the previous thread structure.
- D14 is initialized to “NULL” (partial step S074).
- the context corresponding release / restoration unit 2032 sets the value of the general wait state context D33 of the context structure D50 pointed to by the pointer D14 to the context structure of the current thread structure in the CPU register (partial step S075). Then, the processing of the context corresponding release / restoration step is ended (partial step S076).
- 21 and 22 are flowcharts showing the operation of the context storage / correspondence assignment unit 2033 of the information processing apparatus 2000.
- the context storage / correspondence allocation unit 2033 stores the CPU register value in the general wait state context D33 of the context structure D50 pointed to by the pointer D14 to the context structure of the previous thread structure. At this time, the PC value is stored as “S084” (partial step S081).
- the context storage / correspondence assignment unit 2033 calls the context correspondence assignment step S120 (partial step S082).
- the contents of the context corresponding assignment step S120 will be described later.
- the context storage / correspondence allocation unit 2033 sets the value of the message waiting state context D31 of the context structure D50 pointed to by the pointer D14 to the context structure of the current thread structure in the CPU register (partial step S083). Then, the context storage / correspondence assignment step processing is terminated (partial step S084).
- the context storage / correspondence allocation unit 2033 determines whether or not the context structure D50 is stocked in the context pool D04 (partial step S121). If the context structure D50 is not stocked (partial step S121: NO), the context structure D50 is stored.
- the message waiting state context D31 is generated and the stack pointer (hereinafter also referred to as “SP”) is initialized to the stack D34 of the generated context structure D50 (partial step S122).
- the context storage / correspondence allocation unit 2033 initializes the message waiting state context storage flag D32 of the generated context structure D50 to “false” (partial step S123), and a pointer to the context structure of the current thread structure
- the address of the generated context structure is set in D14 (partial step S124), and the process of the context corresponding assignment step is ended (partial step S126).
- partial step S121 If the context structure D50 is stocked in the context pool D04 in the partial step S121 (partial step S121: YES), the address of the context structure D50 extracted from the context pool D04 is set to the current thread structure. The pointer D14 to the context structure is set (partial step S125), and the processing of the context corresponding assignment step is ended (partial step S126).
- the pointer D02 to the current thread structure is “D10C”
- the thread state D11 of the thread structure D10A is “T2”
- the thread priority D12 is “lowest”
- the message queue D15 is “MES” (one It is assumed that the pointer D14 to the context structure is “D50A”.
- the thread state D11 of the thread structure D10B is “T2”
- the thread priority D12 is “medium”
- the message queue D15 is “MES”
- the pointer D14 to the context structure is “NULL”.
- the thread state D11 of the thread structure D10C is “T1”
- the thread priority D12 is “high”
- the message queue D15 is empty
- the pointer D14 to the context structure is “D50B”
- the context structure D50B It is assumed that the message waiting state context storage flag D32 is “true”.
- Partial steps S102 to S105 are executed.
- the pointer D02 to the current thread structure is updated to “D10B” by the process of the partial step S104.
- the execution control unit 2020 In response to the call of the dispatch request improvement step S130, the execution control unit 2020 does not have the same pointer D02 (D10B) to the current thread structure and the pointer D03 (D10A) to the previous thread structure (partial step in FIG. 17). S131: NO), the return value of the message waiting state transition detection step S010 is “true” (partial step S132: YES), and the return value of the context non-correspondence detection step S050 is “true” (partial step S133: YES), the execution control unit 2020 calls the context corresponding movement step S060 (partial step S134).
- the context corresponding movement unit 2031 receives the message waiting state context storage flag D32 of the context structure (D50B) pointed to by the pointer D14 to the context structure of the previous thread structure (D10C). Since it is “true” (partial step S061: YES), the pointer D14 to the context structure of the current thread structure (D10B) is set to “D50B” and the pointer D14 to the context structure of the previous thread structure (D10C). Is set to “NULL” (partial steps S064, S065), and the process of the context corresponding movement step is ended (partial step S066).
- the execution control unit 2020 ends the dispatch request improvement step (partial step S139 in FIG. 17).
- Step S101 on the left side of FIG. 8: YES the message handler is processed using the retrieved message as an argument (partial). Step S106). In this example, it is assumed that the thread is not switched in the message handler.
- partial step S101 NO
- partial steps S102 to S105 are executed.
- the pointer D02 to the current thread structure is updated to “D10A” by the process of the partial step S104.
- the execution control unit 2020 waits for a message because the current thread structure (D10A) and the previous thread structure (D10B) are not identical (partial step S131 in FIG. 17: NO). Since the return value of the transition detection step S010 is “true” (partial step S132: YES) and the return value of the context non-correspondence detection step S050 is “false” (partial step S133: NO), the execution control unit 2020 Then, the context corresponding release / restoration step S070 is called (partial step S135).
- the context correspondence release / restoration unit 2032 stores the message waiting state context storage flag of the context structure (D50B) pointed to by the pointer D14 to the context structure of the previous thread structure (D10B). Since D32 is “true” (partial step S071: YES), the context structure (D50B) pointed to by the pointer D14 to the context structure of the previous thread structure (D10B) is stocked in the context pool D04, and this previous thread The pointer D14 to the context structure of the structure is initialized to “NULL” (partial step S074).
- the context corresponding release / restoration unit 2032 sets the value of the general wait state context D33 of the context structure (D50A) pointed to by the pointer D14 to the context structure of the current thread structure (D10A) in the CPU register. (Partial step S075), the processing of the context corresponding release / restoration step is terminated (partial step S076).
- the execution control unit 2020 ends the dispatch request improvement step (partial step S139 in FIG. 17).
- the context corresponding movement step S060 and the context corresponding release / restoration step S070 are called and the threads are switched. It can be said that threads are switched at high speed.
- each thread shares the programming code corresponding to the main loop step, and each thread executes the code.
- the code having the same processing structure for each thread May be prepared and each may execute code for its own thread.
- the current thread to be executed needs to give the information processing apparatus according to the present invention the position on the memory where the code for the own thread is stored.
- the thread structure corresponding to the thread This can be realized by including the base address value on the memory in which the code for the own thread is stored in the body.
- the scheduling means in the present invention corresponds to the schedule unit 1020 in each embodiment
- the first detection means in the present invention corresponds to the transition detection unit 1030 in each embodiment
- the second detection means in the present invention is
- the wake-up detection unit 1040 according to the first embodiment corresponds to the wake-up detection unit 1040 and the context-incompatible detection unit 2010 according to the second embodiment.
- the context association unit and the setting unit in the invention correspond to the execution control unit, the association unit, and the dispatch unit 1060 in each embodiment.
- the information processing apparatus is used for multithread execution control.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
<概要>
実施の形態1に係る情報処理装置は、CPU(Central Processing Unit)等のプロセッサにプログラムを実行させることにより、マルチスレッドOS(Operating System)としての機能を実現する従来の情報処理装置を改良したものである。
図1は、本発明の実施の形態1に係る情報処理装置1000の機能ブロック図である。
情報処理装置1000がマルチスレッド制御に用いるデータについて説明する。なお、以下では、3つのイベントドリブン型のスレッドの並列実行を想定した場合を例に説明する。また、以下の例では、1つのセマフォを使って待ち合わせ処理を行う場合を想定して説明する。
まず、スレッド構造体D10A~D10Cについて説明する。
次に、スケジューラ構造体D00について説明する。
次に、セマフォ構造体D20について説明する。
次に、コンテキスト構造体D30A~D30Cについて説明する。
図8は、各スレッドの処理を示すフローチャート(左側)と、情報処理装置1000の実行制御部1050の動作を示すフローチャート(右側)である。
次に、上記構成を備える情報処理装置1000の動作を説明する。
まず、メッセージループステップの部分ステップS104で呼び出しているスケジュールステップS000について説明する。
次に、メッセージループステップの部分ステップS105で呼び出しているディスパッチ要求ステップS110について、図8の右側に示すフローチャートに従って説明する。
次に、ディスパッチ要求ステップの部分ステップS112におけるメッセージ待ち状態遷移検出ステップS010について説明する。
続いて、ディスパッチ要求ステップの部分ステップS113におけるメッセージ待ち状態からの起床検出ステップS020について説明する。
次に、ディスパッチ要求ステップの部分ステップS114で呼び出しているコンテキスト対応付け交換ステップS030について説明する。
次に、ディスパッチ要求ステップの部分ステップS116で呼び出しているディスパッチステップS040について説明する。
スレッド構造体D10Aに対応するスレッドとスレッド構造体D10Bに対応するスレッドとの間で切り替えが発生する場合を例に、情報処理装置1000の動作を具体的に説明する。
<概要>
実施の形態1に係る情報処理装置1000では、各スレッドについて、1つのコンテキストが必ず対応付けられていたが、以下説明する実施の形態2に係る情報処理装置は、前スレッドがメッセージ待ち状態T4に遷移する場合に、前スレッドとコンテキストとの対応付け(ポインタ)を削除する点で、情報処理装置1000とは異なる。
図14は、本発明の実施の形態2に係る情報処理装置2000の機能ブロック図である。
情報処理装置2000がマルチスレッド制御に用いるデータについて説明する。
まず、スケジューラ構造体D40について説明する。
次に、コンテキスト構造体D50A~D50Cについて説明する。
次に、上記構成を備える情報処理装置2000の動作を説明する。
まず、ディスパッチ要求改良ステップS130について説明する。
次に、ディスパッチ要求改良ステップの部分ステップS133、S136におけるコンテキスト未対応検出ステップS050について説明する。
次に、ディスパッチ要求改良ステップの部分ステップS134で呼び出しているコンテキスト対応移動ステップS060について説明する。
次に、ディスパッチ要求改良ステップの部分ステップS135で呼び出しているコンテキスト対応開放・復元ステップS070について説明する。
次に、ディスパッチ要求改良ステップの部分ステップS137で呼び出しているコンテキスト保管・対応割付ステップS080について説明する。
続いて、コンテキスト保管・対応割付ステップの部分ステップS082で呼び出しているコンテキスト対応割付ステップS120について、図22に示すフローチャートに従って説明する。
スレッド構造体D10A、スレッド構造体D10B、スレッド構造体D10Cに対応するそれぞれのスレッドとの間で切り替えが発生する場合を例に、情報処理装置2000の動作を具体的に説明する。
スレッド構造体D10Cに対応するスレッドは、スレッド構造体D10CのメッセージキューD15にメッセージがないので(同図左側の部分ステップS101:NO)、実施の形態1の具体例で説明したのと同様に、部分ステップS102~S105を実行する。この例では、部分ステップS104の処理により、現スレッド構造体へのポインタD02が「D10B」に更新される。
スレッド構造体D10Bに対応するスレッドは、スレッド構造体D10BのメッセージキューD15にメッセージがあるので(図8左側の部分ステップS101:YES)、取り出したメッセージを引数にしてメッセージハンドラの処理を行う(部分ステップS106)。なお、この例では、メッセージハンドラ内でのスレッドの切り替えはなされなかったものとする。
以上、本発明に係る情報処理装置について実施の形態に基づいて説明したが、以下のように変形することも可能であり、本発明は上述の実施の形態で示した通りの情報処理装置に限られないことは勿論である。
1010 記憶部
1020 スケジュール部
1030 遷移検出部
1040 起床検出部
1050、2020 実行制御部
1060 ディスパッチ部
1070、2030 対応付け部
1071 コンテキスト対応交換部
2010 コンテキスト未対応検出部
2031 コンテキスト対応移動部
2032 コンテキスト対応開放・復元部
2033 コンテキスト保管・対応割付部
Claims (8)
- それぞれがイベントの取得に対応して処理を行う複数のスレッドを、切り換えながらプロセッサにより実行する情報処理装置であって、
実行状態である第1のスレッドの状態を非実行状態に遷移させ、前記複数のスレッドの中から次に実行する第2のスレッドを選択して実行状態に遷移させるスケジューリング手段と、
非実行状態に遷移させられる前記第1のスレッドにおける、次に実行状態になった際の処理の開始位置が、イベントの取得に対応した既定の処理部分であることを検出する第1検出手段と、
実行状態に遷移させられる前記第2のスレッドにおける処理の開始位置が、前記既定の処理部分であることを検出する第2検出手段と、
前記第2のスレッドが実行状態に遷移させられる際に、前記第1検出手段及び前記第2検出手段の検出結果に応じて、前記第2のスレッドの実行用のコンテキストを、前記プロセッサに設定するか否かを切り替えて動作する設定手段とを備える
ことを特徴とする情報処理装置。 - 前記情報処理装置は、更に、
スレッドに対応付けてコンテキストを記憶するためのコンテキスト記憶手段と、
前記第1検出手段が検出しなかった場合に、前記プロセッサに設定されているコンテキストを、前記第1のスレッドと対応付けられたコンテキストとして前記コンテキスト記憶手段に記憶させるコンテキスト対応付け手段を備え、
前記設定手段は、前記第1検出手段が検出し、かつ前記第2検出手段が検出した場合に、前記第2のスレッドに対応付けられたコンテキストを、前記プロセッサに設定せず、前記第2検出手段が検出しなかった場合に、前記第2のスレッドに対応付けられたコンテキストを、前記プロセッサに設定する
ことを特徴とする請求項1記載の情報処理装置。 - 前記コンテキスト対応付け手段は、更に
前記第1検出手段が検出した場合に、前記コンテキスト記憶手段に記憶されている、前記第1のスレッドと対応付けられたコンテキストと当該第1のスレッドとの対応付けを削除する
ことを特徴とする請求項2記載の情報処理装置。 - 前記情報処理装置は、
前記コンテキスト記憶手段においてコンテキストが対応付けられていないスレッド用の前記既定の処理部分を処理の開始位置とするための初期コンテキストを記憶する初期コンテキスト記憶手段を備え、
前記第2検出手段は、前記コンテキスト記憶手段において、前記第2のスレッドとコンテキストとが対応付けられていない場合に、当該第2のスレッドにおける処理の開始位置が、前記既定の処理部分であると検出し、
前記コンテキスト対応付け手段は、更に
前記第2検出手段が検出した場合において、前記第1検出手段が検出したときは、前記第1のスレッドに対応付けられたコンテキストの対応付け先を、前記第2のスレッドに変更し、前記第1検出手段が検出しなかったときは、前記初期コンテキストを前記第2のスレッドと対応付けられたコンテキストとして、前記コンテキスト記憶手段に記憶させ、
前記設定手段は、前記第1検出手段が検出せず、かつ前記第2検出手段が検出した場合に、前記コンテキスト対応付け手段により前記第2のスレッドと対応付けて前記コンテキスト記憶手段に記憶されている初期コンテキストを前記プロセッサに設定する
ことを特徴とする請求項3記載の情報処理装置。 - 前記情報処理装置は、更に
前記第1検出手段が検出し、かつ前記第2検出手段が検出した場合に、前記コンテキスト記憶手段に記憶されている、前記第2のスレッドと対応付けられているコンテキストの対応付け先を前記第1のスレッドに、前記第1のスレッドと対応付けられているコンテキストの対応付け先を前記第2のスレッドにそれぞれ変更するコンテキスト対応付け手段を備える
ことを特徴とする請求項2記載の情報処理装置。 - 前記イベントは、メッセージであり、
前記非実行状態は、メッセージの受信を待つメッセージ待ち状態を含み、
前記複数のスレッドには、次に実行状態になった際の処理の開始位置が、前記既定の処理部分となる場合には、前記メッセージ待ち状態に遷移することを示すフラグを設定するよう構成されたスレッドを含み、
前記第1検出手段及び前記第2検出手段は、検出対象のスレッドにおいて、前記フラグが設定されていることを検出することにより、当該処理対象のスレッドにおける処理の開始位置が、前記既定の処理部分であることを検出する
ことを特徴とする請求項5記載の情報処理装置。 - それぞれがイベントの取得に対応して処理を行う複数のスレッドを、切り換えながらプロセッサにより実行する情報処理装置において用いられる情報処理方法であって、
スケジューリング手段が、実行状態である第1のスレッドの状態を非実行状態に遷移させ、前記複数のスレッドの中から次に実行する第2のスレッドを選択して実行状態に遷移させるステップと、
第1検出手段が、非実行状態に遷移させられる前記第1のスレッドにおける、次に実行状態になった際の処理の開始位置が、イベントの取得に対応した既定の処理部分であることを検出するステップと、
第2検出手段が、実行状態に遷移させられる前記第2のスレッドにおける処理の開始位置が、前記既定の処理部分であることを検出するステップと、
設定手段が、前記第2のスレッドが実行状態に遷移させられる際に、前記第1検出手段及び前記第2検出手段の検出結果に応じて、前記第2のスレッドの実行用のコンテキストを、前記プロセッサに設定するか否かを切り替えて動作するステップとを備える
ことを特徴とする情報処理方法。 - それぞれがイベントの取得に対応して処理を行う複数のスレッドを、切り換えながらプロセッサにより実行する情報処理装置にスレッドの実行制御処理を実行させるための情報処理プログラムであって、
前記スレッドの実行制御処理は、
実行状態である第1のスレッドの状態を非実行状態に遷移させ、前記複数のスレッドの中から次に実行する第2のスレッドを選択して実行状態に遷移させるスケジューリングステップと、
非実行状態に遷移させられる前記第1のスレッドにおける、次に実行状態になった際の処理の開始位置が、イベントの取得に対応した既定の処理部分であることを検出する第1検出ステップと、
実行状態に遷移させられる前記第2のスレッドにおける処理の開始位置が、前記既定の処理部分であることを検出する第2検出ステップと、
前記第2のスレッドが実行状態に遷移させられる際に、前記第1検出ステップ及び前記第2検出ステップの検出結果に応じて、前記第2のスレッドの実行用のコンテキストを、前記プロセッサに設定するか否かを切り替えて動作する設定ステップとを備える
ことを特徴とする情報処理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/991,980 US8392932B2 (en) | 2008-06-25 | 2009-05-13 | Information processing device for causing a processor to context switch between threads including storing contexts based on next thread start position |
CN2009801191287A CN102047224B (zh) | 2008-06-25 | 2009-05-13 | 信息处理装置、信息处理方法及信息处理程序 |
JP2010517676A JP5330384B2 (ja) | 2008-06-25 | 2009-05-13 | 情報処理装置、情報処理方法及び情報処理プログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008165443 | 2008-06-25 | ||
JP2008-165443 | 2008-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009157127A1 true WO2009157127A1 (ja) | 2009-12-30 |
Family
ID=41444200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/002080 WO2009157127A1 (ja) | 2008-06-25 | 2009-05-13 | 情報処理装置、情報処理方法及び情報処理プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US8392932B2 (ja) |
JP (1) | JP5330384B2 (ja) |
CN (1) | CN102047224B (ja) |
WO (1) | WO2009157127A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014505294A (ja) * | 2011-01-10 | 2014-02-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並行ソフトウェア環境のためのアクティビティ記録システム |
US9471458B2 (en) | 2012-01-05 | 2016-10-18 | International Business Machines Corporation | Synchronization activity recording system for a concurrent software environment |
CN110971920A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 一种消息的降级方法及相关装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8832663B2 (en) | 2009-11-23 | 2014-09-09 | International Business Machines Corporation | Thread serialization and disablement tool |
US8549523B2 (en) * | 2009-11-23 | 2013-10-01 | International Business Machines Corporation | Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool |
US20120180057A1 (en) * | 2011-01-10 | 2012-07-12 | International Business Machines Corporation | Activity Recording System for a Concurrent Software Environment |
US9652282B2 (en) * | 2011-11-08 | 2017-05-16 | Nvidia Corporation | Software-assisted instruction level execution preemption |
US10795722B2 (en) * | 2011-11-09 | 2020-10-06 | Nvidia Corporation | Compute task state encapsulation |
TWI439925B (zh) * | 2011-12-01 | 2014-06-01 | Inst Information Industry | 內嵌式系統及其執行緒與緩衝區管理方法 |
US9928109B2 (en) * | 2012-05-09 | 2018-03-27 | Nvidia Corporation | Method and system for processing nested stream events |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10318302B2 (en) | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
US10558463B2 (en) * | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191863A (ja) * | 1993-12-25 | 1995-07-28 | Nec Corp | マルチタスク実行管理方式 |
JPH11212808A (ja) * | 1997-11-21 | 1999-08-06 | Omron Corp | プログラム制御装置とメモリ割当装置および方法 |
JP2004522234A (ja) * | 2000-11-24 | 2004-07-22 | キャサロン プロダクションズ, インコーポレイテッド | 仮想スレッドを介したコンピューター多重タスク |
JP2005284904A (ja) * | 2004-03-30 | 2005-10-13 | Kyocera Corp | 携帯電話端末装置及びプログラム管理方法並びにそのコンピュータプログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07141209A (ja) | 1993-11-16 | 1995-06-02 | Fujitsu Ltd | データ処理装置 |
JP4693326B2 (ja) * | 1999-12-22 | 2011-06-01 | ウビコム インコーポレイテッド | 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 |
JP4243571B2 (ja) * | 2003-08-05 | 2009-03-25 | パナソニック株式会社 | 放送受信装置 |
JP4502650B2 (ja) * | 2004-02-03 | 2010-07-14 | 日本電気株式会社 | アレイ型プロセッサ |
CN1677352A (zh) | 2004-03-30 | 2005-10-05 | 京瓷株式会社 | 移动电话终端、及其程序管理方法和相应的计算机程序 |
JP4476193B2 (ja) * | 2005-07-29 | 2010-06-09 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理方法および情報処理装置 |
US20070113055A1 (en) * | 2005-11-15 | 2007-05-17 | Dale Jason N | Apparatus and method for improving single thread performance through speculative processing |
JP2007207074A (ja) | 2006-02-03 | 2007-08-16 | Ricoh Co Ltd | オペレーションシステム、スレッド制御機構、及び情報処理装置 |
US8001549B2 (en) * | 2006-04-27 | 2011-08-16 | Panasonic Corporation | Multithreaded computer system and multithread execution control method |
JP2008102847A (ja) | 2006-10-20 | 2008-05-01 | Nec Corp | マルチスレッドプログラム処理方法及び装置 |
-
2009
- 2009-05-13 CN CN2009801191287A patent/CN102047224B/zh not_active Expired - Fee Related
- 2009-05-13 JP JP2010517676A patent/JP5330384B2/ja not_active Expired - Fee Related
- 2009-05-13 WO PCT/JP2009/002080 patent/WO2009157127A1/ja active Application Filing
- 2009-05-13 US US12/991,980 patent/US8392932B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191863A (ja) * | 1993-12-25 | 1995-07-28 | Nec Corp | マルチタスク実行管理方式 |
JPH11212808A (ja) * | 1997-11-21 | 1999-08-06 | Omron Corp | プログラム制御装置とメモリ割当装置および方法 |
JP2004522234A (ja) * | 2000-11-24 | 2004-07-22 | キャサロン プロダクションズ, インコーポレイテッド | 仮想スレッドを介したコンピューター多重タスク |
JP2005284904A (ja) * | 2004-03-30 | 2005-10-13 | Kyocera Corp | 携帯電話端末装置及びプログラム管理方法並びにそのコンピュータプログラム |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014505294A (ja) * | 2011-01-10 | 2014-02-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並行ソフトウェア環境のためのアクティビティ記録システム |
US9600348B2 (en) | 2011-01-10 | 2017-03-21 | International Business Machines Corporation | Recording activity of software threads in a concurrent software environment |
US9471458B2 (en) | 2012-01-05 | 2016-10-18 | International Business Machines Corporation | Synchronization activity recording system for a concurrent software environment |
CN110971920A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 一种消息的降级方法及相关装置 |
CN110971920B (zh) * | 2018-09-30 | 2021-11-26 | 武汉斗鱼网络科技有限公司 | 一种消息的降级方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
US8392932B2 (en) | 2013-03-05 |
US20110067034A1 (en) | 2011-03-17 |
JPWO2009157127A1 (ja) | 2011-12-08 |
JP5330384B2 (ja) | 2013-10-30 |
CN102047224B (zh) | 2013-10-02 |
CN102047224A (zh) | 2011-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5330384B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US8826291B2 (en) | Processing system | |
US7493436B2 (en) | Interrupt handling using simultaneous multi-threading | |
KR101651246B1 (ko) | 멀티-코어 아키텍처들을 위한 사용자-레벨 인터럽트 메커니즘 | |
US9372729B2 (en) | Task scheduling method and apparatus | |
US9880875B2 (en) | Apparatus and method for hardware-based task scheduling | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
US9229789B2 (en) | Transparent user mode scheduling on traditional threading systems | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
CN110149231A (zh) | 更新虚拟交换机的方法、装置、存储介质和设备 | |
US7823158B2 (en) | Adaptive scheduling and management of work processing in a target context in resource contention | |
JP2009059310A (ja) | プログラム制御装置 | |
US20190065238A1 (en) | Auto-Adaptive Serverless Function Management | |
CN112379992A (zh) | 基于角色的多智能体任务协同消息传递及异常处理方法 | |
KR100617228B1 (ko) | 실시간 운영체계 커널의 이벤트 전달 체계 구현방법 | |
CN109889406B (zh) | 用于管理网络连接的方法、装置、设备和存储介质 | |
CN113574515B (zh) | 用于分布式系统中的异步存储管理的系统和方法 | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
US9876876B2 (en) | Processing a unit of work | |
JPH07295840A (ja) | マルチプログラミングにおける事象管理方式 | |
US20030023775A1 (en) | Efficient notification of multiple message completions in message passing multi-node data processing systems | |
JP4336763B2 (ja) | ジョブ管理システム | |
JPH11120147A (ja) | 負荷分散制御方法 | |
US11971830B2 (en) | Efficient queue access for user-space packet processing | |
JP7188472B2 (ja) | コンピュータ、スケジューリング方法、及び、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200980119128.7 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09769837 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 12991980 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010517676 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09769837 Country of ref document: EP Kind code of ref document: A1 |