WO2010082244A1 - 情報処理装置および情報処理方法 - Google Patents

情報処理装置および情報処理方法 Download PDF

Info

Publication number
WO2010082244A1
WO2010082244A1 PCT/JP2009/004995 JP2009004995W WO2010082244A1 WO 2010082244 A1 WO2010082244 A1 WO 2010082244A1 JP 2009004995 W JP2009004995 W JP 2009004995W WO 2010082244 A1 WO2010082244 A1 WO 2010082244A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
processing
unit
program
execution
Prior art date
Application number
PCT/JP2009/004995
Other languages
English (en)
French (fr)
Inventor
西川尚宏
村田誠二
Original Assignee
株式会社ソニー・コンピュータエンタテインメント
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 株式会社ソニー・コンピュータエンタテインメント filed Critical 株式会社ソニー・コンピュータエンタテインメント
Priority to EP09838214.6A priority Critical patent/EP2388699B1/en
Priority to US13/142,156 priority patent/US8793695B2/en
Priority to CN200980154610.4A priority patent/CN102282543B/zh
Publication of WO2010082244A1 publication Critical patent/WO2010082244A1/ja

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Definitions

  • the present invention relates to information processing technology, and more particularly to technology for executing a computer program by distributing processing to a plurality of computing resources.
  • an OS operating system
  • a user level scheduling method is also proposed in which a user level task operating on the OS manages task processing such as scheduling. For example, a technique has been proposed in which a task is stored in a queue of a main memory, and a processor that executes the task selects and executes the task from the queue (see, for example, Patent Document 1).
  • the present invention has been made in view of such a problem, and an object of the present invention is to provide a technique capable of efficiently executing necessary processing by a plurality of processors.
  • An aspect of the present invention relates to an information processing apparatus.
  • This information processing apparatus includes a task processing unit that processes a task of a program and a processing request that issues a processing request by adding an execution condition to the task of the external program when an external program of the program being executed is called
  • a task allocation unit that incorporates the task of the external program for which the processing request unit issued the processing request into the task processing schedule control in the task processing unit, and a processing request unit added in the processing of the task of the external program in the task processing unit
  • An execution monitoring unit that determines whether a violation of the execution condition has occurred, an execution control unit that switches the processing of the task processing unit to a task of an external program when the execution monitoring unit determines that an execution condition violation has occurred, It is provided with.
  • the “external program” is generally a library, kernel, or the like for realizing a function provided by the OS, but the type and processing content are not limited as long as it is a program other than the calling program.
  • This information processing method includes a step of processing a task of a program to be executed in a processor, and a user level schedule that has been performed for a task of a program being executed when a system level program other than the program being executed is called.
  • the control includes the step of incorporating the task of the system level program, and the step of processing the task of the system level program incorporated in the schedule control in the processor.
  • FIG. 3 is a diagram conceptually illustrating an example of task processing transition in each processing unit, which is realized as one aspect of scheduling system processing by a user level scheduler in the first embodiment.
  • FIG. 3 is a diagram showing in more detail the configuration of a processing unit in the first embodiment.
  • 3 is a flowchart showing an overall flow from generation to start of system processing in the first embodiment.
  • 6 is a diagram schematically showing a processing procedure for executing system processing in the first embodiment.
  • FIG. 6 is a diagram illustrating a data structure example of information related to system processing that is notified when a system processing request unit makes a system processing request to a task assignment unit in Embodiment 1.
  • FIG. FIG. 10 is a diagram for describing an outline of autonomous user level scheduling applied in the second embodiment.
  • FIG. 10 is a diagram illustrating an example of allocation conditions set for each workload in the second embodiment.
  • FIG. 10 is a diagram schematically illustrating an example of a process in which a processing unit selects and processes each workload when the assignment conditions illustrated in FIG. 9 are set in the second embodiment.
  • FIG. 10 is a diagram schematically illustrating a processing procedure when system processing is executed as a virtual workload in the second embodiment.
  • 10 is a diagram illustrating an example of a conversion table referred to when a system process requested by a task assignment unit in Embodiment 2 is converted into a virtual workload.
  • 10 is a flowchart showing a processing procedure for executing system processing when an autonomous user level scheduler is introduced in the second embodiment. It is a figure which shows the example of the transition of the process in six process units which can be implement
  • FIG. It is a figure which shows the example of the transition of the process in six process units which can be implement
  • FIG. It is a figure which shows the example of the transition of the process in six process units which can be implement
  • FIG. It is a figure which shows the example of the transition of the process in six process units which can be implement
  • FIG. 1 shows a configuration example of an information processing apparatus to which this embodiment can be applied.
  • the information processing apparatus 10 includes a microprocessor unit 18, an input / output device (I / O) 42, a main memory 44, and an auxiliary storage device (HDD) 46, which are connected via a bus 48.
  • the microprocessor unit 18 has a configuration in which a plurality of processing units 22 a, 22 b,..., 22 n are connected via an internal bus 19.
  • the processing units 22a, 22b,..., 22n are processing units including an arithmetic unit, a local memory, and the like.
  • the processing units 22a, 22b,..., 22n process tasks of the OS and activated application programs (hereinafter simply referred to as “applications”).
  • the input / output device (I / O) 42, the main memory 44, and the auxiliary storage device (HDD) 46 may be configured by an input / output device, a memory, and an auxiliary storage device provided in a general information processing device.
  • At least one of the processing units 22a, 22b,..., 22n requires processing to access devices such as the input / output device 42 and the main memory 44. It is necessary to perform system level processing.
  • system processing processing is referred to as “system processing”.
  • user-level task processing such as an application can be regarded as user processing.
  • a processing unit that does not execute system processing mainly processes user-level tasks such as applications in parallel.
  • FIG. 2 conceptually shows the transition of task processing in the processing units 22a, 22b,..., 22n when the processing unit 22a is a processing unit that performs system processing.
  • the horizontal axis represents time, and among the tasks processed in each processing unit shown by rectangles, a white rectangle is an application task, and a hatched rectangle is a system processing task.
  • processing unit 22a system processing tasks 2, 3, and 5 are processed, and the task 4 of the application is processed in the idle time.
  • the other processing units 22b,..., 22n always process the task 6 of the application. Although omitted in the figure, it is assumed that the task 6 is naturally processed for each processing unit, and the context switch is appropriately performed even in the same processing unit.
  • FIG. 3 conceptually shows an example of the transition of task processing in the processing units 22a, 22b,..., 22n, which is realized as one aspect of scheduling system processing by the user level scheduler. The way of illustration is the same as in FIG.
  • all the processing units 22a, 22b,..., 22n basically execute the task 8 of the application.
  • scheduling is performed so that any processing unit executes the processing based on the introduced user level scheduling procedure. For example, a processing unit that processes a task of an application with a low priority, a processing unit that processes a task that is not related to a task being processed by another processing unit, or the like is selected and system processing is assigned.
  • the processing unit to which the system process is assigned pauses the task of the application being executed at a timing suitable for the context switch or starts the system process when the task being processed ends.
  • FIG. 4 shows the configuration of the processing unit 22a in more detail.
  • the information processing apparatus 10 may have processing units other than the processing unit 22a as shown in FIG. 1, and the number thereof is not limited.
  • the processing unit 22a includes a system level management unit 24 that manages system processing tasks and a user level management unit 25 that manages user level tasks such as application tasks.
  • the system level management unit 24 includes a system processing request unit 27 that issues a system processing request to the user level management unit 25 when a system processing is required, such as when a system program is called in a task being processed.
  • An execution monitoring unit 28 that monitors the execution of system processing in the unit, and an execution control unit 30 that forcibly executes the system processing in any of the processing units 22a and 22b when the execution conditions of the system processing are violated.
  • the user level management unit 25 includes a task assignment unit 26 that mainly divides a user level program such as an application into tasks and assigns them to each processing unit.
  • the processing unit 22a further includes a task processing unit 32 that processes assigned tasks according to a schedule, a communication unit 34 that notifies the system level management unit 24 when system processing can be started, and is necessary for task processing.
  • a local memory 36 for reading and storing data from the main memory 44 is included.
  • the other processing units 22b,..., 22n may have the same configuration as the processing unit 22a.
  • the processing unit 22b may also good.
  • the processing unit having the system level management unit 24 and the user level management unit 25 may manage task processing of other processing units that do not have them.
  • each element described as a functional block for performing various processes can be configured by a CPU (Central Processing Unit), a memory, and other LSIs in terms of hardware. This is realized by a program loaded on the computer. Therefore, it is understood by those skilled in the art that these functional blocks can be realized in various forms by hardware only, software only, or a combination thereof, and is not limited to any one.
  • the user level management unit 25 may be one of the tasks processed by the task processing unit 32, and in this case, the functional block can be considered as a part of the task processing unit 32.
  • the system processing request unit 27 of the system level management unit 24 generates a system process corresponding to the library when the library provided by the OS is called by a task processed in the processing units 22a, 22b, etc. By notifying the task allocation unit 26 of the user level management unit 25 of information related to the system processing, the system processing is requested to be executed.
  • the information related to the system process notified to the task assignment unit 26 includes a condition for executing the system process.
  • the execution conditions include an execution time limit that is an allowable time until system processing is started, a processing unit to be executed, and the like.
  • execution condition is violated, for example, when the system process is not executed even if the execution time limit is exceeded, as described later, the task of the application in one of the processing units is forcibly suspended to execute the system process.
  • Information such as execution condition information and processing request issue timing is shared in the system level management unit 24.
  • the execution monitoring unit 28 monitors whether or not the execution condition is observed, such as whether the system process is executed within the execution deadline in any of the processing units 22a and 22b.
  • the execution deadline is specified as an execution condition, for example, the execution monitoring unit 28 is provided with a timer (not shown), and the elapsed time since the system processing request unit 27 issued a system processing execution request is measured. If the notification of acceptance of system processing from the communication unit 34 is not made within the execution time limit measured by the timer, it is determined that the execution condition of the system processing has been violated.
  • the execution control unit 30 performs processing in any of the processing units 22a, 22b or all of the processing units 22a, 22b,.
  • the suspended task is suspended and the system process is executed. This process can be realized in the same manner as a general preemption process by an OS kernel or the like.
  • execution control unit 30 detects that the processing unit to which the system processing is assigned pauses the task of the application that it was processing and saves the register value or the like, the execution control unit 30 performs system processing on the processing unit. Let it run.
  • the task allocation unit 26 of the user level management unit 25 allocates the task of the application started by the user to the processing units 22a and 22b.
  • the task assignment unit 26 sequentially stores the generated tasks in a task queue provided in the main memory 44 or the like.
  • the processing units 22a, 22b, etc. sequentially take out the tasks from the task queue and process them when the task being processed is paused or terminated.
  • the task allocation unit 26 adjusts with the tasks already scheduled in the processing units 22a and 22b based on the priority of the task, the number of necessary processing units, the processing time, etc. Then, tasks are allocated to the processing units 22a, 22b, etc. so that new tasks are processed. For such processing, a method generally used in a multitasking OS, a user level OS, or the like can be applied.
  • the task allocation unit 26 receives a system process execution request from the system process request unit 27, the task allocation unit 26 also allocates the system process to one of the processing units. At this time, system processing information is stored in the above-described task queue together with other tasks. Alternatively, since the information received from the system processing request unit 27 includes an execution condition for the system process, the task assignment unit 26 performs scheduling so as to satisfy the execution condition.
  • the task processing unit 32 sequentially processes the application and system processing tasks allocated by the task allocation unit 26 in accordance with a schedule. Data necessary for task processing such as a program is read from the main memory 44 to the local memory 36. When switching tasks, the context of the task that has been processed so far is stored in the main memory 44, and context switching is performed to restore the context of the next task.
  • the task processing unit 32 stores the application task context according to the schedule, and the communication unit 34 notifies the system level management unit 24 of the fact.
  • the system processing is executed under the control of the execution control unit 30 of the system level management unit 24.
  • the task processing unit 32 performs a context switch from the task of the application being processed to the system processing under the control of the execution control unit 30 at that time.
  • FIG. 5 is a flowchart showing the overall flow from the generation to the start of system processing in this embodiment.
  • the processing units 22a, 22b,..., 22n it is assumed that the task of the application started by the user is processed according to the schedule at that time.
  • the system processing request unit 27 of the system level management unit 24 When a task being processed in such a situation calls a library provided by the OS, the system processing request unit 27 of the system level management unit 24 generates a system process corresponding to the library, and performs user level management.
  • a processing request is made to the task allocation unit 26 of the unit 25 (S10).
  • the processing unit 26 When the requested task allocation unit 26 does not allocate the system processing to any processing unit, or the processing unit does not suspend the task of the application for some reason despite the allocation.
  • the execution monitoring unit 28 determines whether the execution condition is violated (Y in S12). Then, the execution control unit 30 pauses any or all of the processing units 22a, 22b,..., 22n, and performs preemption processing for use in system processing (S14).
  • the system processing may be executed using at least one of the processing units. Further, when at least one of the plurality of processing units 22a, 22b,..., 22n is suspended and system processing is performed by the processing unit, the processing unit to be suspended is selected according to a rule such as a preset priority. It may be selected arbitrarily.
  • the execution monitoring unit 28 determines that there is no violation of the execution condition (N in S12). ). Then, the task processing unit 32 of the processing unit starts system processing (S16). Similarly, when the preemption process is performed in S14, the system process is started (S16).
  • FIG. 6 schematically shows a processing procedure for executing the system processing.
  • an execution time limit is set for the system processing.
  • the horizontal direction is the time axis
  • white rectangles are application tasks
  • hatched rectangles are system processing tasks.
  • six processing units 22a, 22b,..., 22f each process an application task.
  • the system processing request unit 27 of the system level management unit 24 makes a system processing request to the task allocation unit 26 (S20).
  • the task assignment unit 26 assigns the process to the processing unit 22d (S22).
  • this processing unit is selected based on the priority of the task being processed, the relevance of the task being processed by another processing unit, or the like.
  • system processing information is stored in the task queue. In this case, the processing unit that has finished the task being processed reads the system processing information from the task queue, so that substantial allocation is performed.
  • the processing unit 22d to which the system processing is assigned pauses the application task at a suitable timing, stores the register value in the main memory 44 and the like, and notifies the system level management unit that the system processing is acceptable. 24 (S24).
  • the execution monitoring unit 28 of the system level management unit 24 measures the elapsed time from the processing request in S20, and when receiving the notification in S24 by the execution deadline, the execution control unit 30 causes the processing unit 22d to start system processing. (S28).
  • the execution monitoring unit 28 It is determined that the execution condition has been violated, and the preemption process in S14 of FIG.
  • FIG. 7 shows an example of the data structure of information related to system processing that is notified when the system processing request unit 27 makes a system processing request to the task allocation unit 26.
  • the system process data 50 includes a type identifier 52, a process ID 54, an execution deadline 56, a period 58, and an execution time 60.
  • the type identifier 52 is identification information for identifying the type of system processing, such as an audio decoder or an echo canceller, and the correspondence between the type and the identifier is predetermined and stored in the main memory 44 or the like.
  • the task allocation unit 26 specifies the type of the process based on the requested system process type identifier 52, specifies a predetermined priority for each type, and reflects the priority in scheduling.
  • the process ID 54 is identification information that is uniquely set for each requested system process.
  • a system processing program is read from the main memory 44 based on the processing ID.
  • the communication unit 34 of the processing unit to which the system process is assigned notifies the system level management unit 24 that the system process is ready to be executed, the process ID is used for other system processes. Differentiate from such notifications.
  • the execution time limit 56 is, for example, an allowable time from issuing a system process request to starting execution. As described above, when the processing unit does not notify that the system process can be accepted even after this time, the preemption process by the execution control unit 30 is performed.
  • the task allocation unit 26 may use the execution deadline 56 to determine an allocation priority between the system processes. For example, a system process whose execution time limit first arrives is preferentially assigned to a processing unit.
  • Cycle 58 is an operation cycle of system processing.
  • the task allocation unit 26 may determine allocation to processing units based on the period 58, for example, according to a method such as rate monotonic scheduling.
  • the execution time 60 is the execution time of the system process.
  • the task allocation unit 26 may determine allocation to processing units based on the execution time 60. In some cases, when the execution of the system process has passed the execution time 60, the system process in the processing unit may be forcibly terminated.
  • system level management unit 24 when the system level management unit 24 generates a system process, a process request is exclusively issued to the task allocation unit 26 of the user level management unit 25, thereby realizing an aspect in which the system process is incorporated in the user level scheduling. did.
  • the system level management unit 24 issues a request for the generated system processing to the task allocation unit 26. If a mode for executing system processing independently of user level scheduling is specified, the system level management unit 24 does not request processing from the task allocation unit 26 and the processing unit is processing a user level task. Intercepts processing time and causes system processing to be executed. In this way, when creating an application, it is possible to select an optimum mode according to the type of system processing required and the execution frequency.
  • system processing that occurs during application processing is incorporated into user-level scheduling processing. This creates an opportunity to execute system processing in accordance with a user level scheduling policy, and reduces the possibility that a user level task such as an application is suspended at an unexpected timing. Further, since the system processing load is easily distributed to a plurality of processing units, there is a high possibility that the system processing can be executed before the execution deadline without preemption by the system management unit. As a result, the processing unit to which the system process is assigned can pause the application task that it was processing at a suitable timing, and the overhead due to the context switch for starting the system process can be reduced. it can. In addition, since it is difficult for the task processing of the application to be biased, it is possible to avoid a situation in which communication between processing units is difficult only for a specific processing unit, and parallelization of programs is easy.
  • the main processing unit when the execution condition is violated such as the system processing by the processing unit exceeds the execution time limit, the main processing unit forcibly switches the processing of the processing unit to the system processing.
  • system processing can be executed reliably, and adverse effects such as system processing being delayed can be eliminated by performing processing assignment according to user-level scheduling.
  • the first embodiment is a mode in which the task assignment unit 26 of the user level management unit 25 generates a schedule by appropriately assigning each task to a processing unit based on priority, execution time, and the like.
  • system processing is executed by the processing unit according to the schedule as in the first embodiment.
  • FIG. 8 is a diagram for explaining an outline of autonomous user level scheduling.
  • the same functional block as that in Embodiment 1 can be used, the same reference numeral as that in Embodiment 1 is given to the functional block. Further, the description of the processing procedure similar to that in Embodiment 1 will be omitted as appropriate.
  • the processing unit 22 a when the processing unit 22 a generates a user level task such as an application, the processing unit 22 a assigns it to one of the processing unit groups included in the information processing apparatus 10. Specifically, data for executing the assigned task is stored in an area (task queue) in the main memory 44 corresponding to a predetermined group of one or a plurality of processing units. In the example of FIG. 8, it is assumed that four processing units 22 a, 22 b, 22 c, and 22 d constitute a group of processing units, and a task 80 assigned to the group is stored in a corresponding area of the main memory 44.
  • a kernel program that executes user level scheduling is stored in each local memory of the processing units 22a, 22b, 22c, and 22d.
  • the processing units 22 a, 22 b, 22 c, and 22 d start the kernel processing when the task of the previous application is completed or enters a dormant state, or when a predetermined period arrives, and the task stored in the main memory 44 Is selected, and the processing of the task is started by copying data such as a program necessary for executing the task to its own local memory.
  • the task stored in the main memory 44 may be a minimum unit task executed in one processing in one processing unit, a task set in which the processing unit is grouped in a predetermined processing unit, or a job chain state. Good.
  • a unit in which one or more tasks of the minimum unit are collected is called a workload. If one macroscopic process, that is, a collection of tasks for achieving the objective, is formed as a workload, efficient processing can be performed by assigning the processing unit to each workload. For example, when a plurality of processing units are required to execute a workload, basically, the number of processing units is secured and executed at the same time. For this reason, information on allocation conditions such as the number of requested processing units, the priority in each processing unit, and the maximum number of allocated processing units is added to each workload.
  • the processing units 22a, 22b, 22c, and 22d read information related to the workload and select one workload based on the priority of each processing unit to process the task.
  • FIG. 9 exemplifies the allocation conditions set for each of the four workloads, here the priority in each processing unit and the maximum number of processing unit allocations.
  • the allocation condition table 90 shown in FIG. 9 as shown in the workload column 92, the physical operation workload P, the artificial intelligence workload A, the graphics processing workload G, and the audio processing workload M is a workload to be processed.
  • the priority order of the four workloads in each processing unit and the maximum number of processing units that can be assigned are described in the priority column 94 and the maximum processing unit number column 96 for each workload.
  • the priorities in the processing units 22a, 22b, 22c, and 22d are set to “1”, “0”, “2”, and “2”, respectively.
  • the maximum number of processing units that can be assigned is set to “2”. The same applies to other workloads.
  • the numerical values described in the priority column 94 are higher in priority as the number is smaller except for “0”.
  • the priority is the workload P and the next is the workload G.
  • the numerical value is “0”, it means that the processing unit does not perform processing.
  • the maximum number of processing units that can be assigned is not set, the maximum processing unit number column 96 may be left blank. Such settings are made for each application when creating a program.
  • FIG. 10 schematically illustrates an example of a process in which the processing units 22a, 22b, 22c, and 22d select and process each workload when the allocation conditions illustrated in FIG. 9 are set.
  • the vertical direction is the time axis, and the rectangles shown below each processing unit are each processing of a task or workload.
  • each of the processing units 22a, 22b, 22c, and 22d processes a task having the highest priority, that is, workload P, workload A, workload G, and workload G. Each of these processes is performed.
  • the processing units 22c and 22d are the workloads that have the next highest priority. Try to select P. However, since the maximum number of processing units that can process the task of the workload P is “2”, when the processing unit 22c selects the workload P, the processing unit 22d further selects the workload M having the next priority. To do. When the standby for device access is canceled at time T, the processing units 22c and 22d select the workload G again and start execution at the timing when the respective workloads P and M can be paused (time). t2).
  • task processing progresses autonomously by the kernel operating in each processing unit according to the priority specified in the application and the allocation conditions such as the maximum number of processing units that can be allocated or the number of processing units requested. To do.
  • the task with low priority in each processing unit gives processing time to the task with high priority at a timing suitable for suspension, so that the process can be switched according to the priority with the minimum time required for context switch. It becomes.
  • the priority for each processing unit it is easy to assign tasks to the processing units. 9 and 10 are merely examples, and the assignment condition may be only priority or other parameters may be designated.
  • system processing is incorporated into user level scheduling in an information processing apparatus in which such an autonomous user level scheduler is introduced.
  • the system processing is incorporated into the scheduling of the user level scheduler by generating the system processing as a virtual workload.
  • This aspect can be realized by the same configuration as the information processing apparatus 10 shown in FIGS. 1 and 4 of the first embodiment.
  • the task allocation unit 26 does not directly allocate a task to a processing unit, but allocates a workload to a processing unit group as described above, and is necessary for processing in an area in the main memory 44 corresponding to the processing unit group. Data and assignment conditions are stored.
  • FIG. 11 schematically shows a processing procedure when the system processing is executed as a virtual workload in the present embodiment.
  • the white rectangle is an application task (workload)
  • the hatched rectangle is a system processing task (virtual workload).
  • four processing units of processing units 22a, 22b, 22c, and 22d form a processing unit group, each of which processes a task that constitutes an assigned application workload.
  • the system processing request unit 27 of the system level management unit 24 makes a system processing request to the task allocation unit 26 (S40).
  • the task allocation unit 26 converts the processing request into a virtual workload according to a predetermined rule and stores it in the corresponding area of the main memory 44 (S42).
  • the processing unit that has completed or suspended the previous task processing in the processing unit group selects the virtual workload of the system processing from the main memory 44 and stores it in its own local memory. Load (S44).
  • the processing unit 22d transmits a notification to that effect to the system level management unit 24 (S46).
  • the execution monitoring unit 28 of the system level management unit 24 measures the elapsed time from the processing request in S40, and when receiving the notification in S46 by the execution deadline, the execution control unit 30 causes the processing unit 22d to start system processing. (S50).
  • the execution control unit 30 causes the processing unit 22d to start system processing. (S50).
  • any or all of the processing units 22a, 22b, 22c, and 22d may be suspended and the system processing may be executed.
  • FIG. 12 shows an example of a conversion table that is referred to when the task allocation unit 26 converts the requested system process into a virtual workload.
  • the conversion table 100 is set in advance and stored in the main memory 44 or the like.
  • the conversion table 100 includes a group column 102, a type column 104, a resource allocation unit column 108, and a user parameter column 110.
  • the task allocation unit 26 receives the same information from the system processing request unit 27 as the information related to the system processing shown in FIG. 7 of the first embodiment. Of this information, the type of the requested system processing is searched from the type column 104 of FIG. 12 based on the type identifier 52. As shown in the figure, the various types are grouped into groups shown in the group column 102, and parameters necessary as a workload are set for each group.
  • the resource allocation unit column 108 it is set whether to allocate resources such as processing units or each type with each group as one unit. When “group” is described in the example of FIG. 12, resources are shared by one group. When “for each type” is described, a resource is allocated for each type described in the type column 104.
  • a parameter that can be set for each application for example, a processing unit to which the system process is assigned, a maximum number of processing units that can be assigned, or a priority table that defines a priority order for each processing unit. Set identifiers. The priority table is prepared in advance in association with the identifier. Based on the setting, the task assignment unit 26 finally determines numerical values as shown in the priority column 94 and the maximum processing unit number column 96 of FIG.
  • FIG. 13 is a flowchart showing a processing procedure for executing system processing when an autonomous user level scheduler is introduced.
  • the task allocation unit 26 registers the virtual workload in the initial state in the main memory 44 in the same manner as the application workload when the application is started or when it is necessary to perform system processing according to user level scheduling. (S60).
  • the number of requested processing units is set to an initial value of zero.
  • the task allocation unit 26 modifies the initial virtual workload registered in S60 according to the information included in the request (S64). For example, the number of processing units required for the processing set in advance is specified based on the processing ID of the system processing, and the setting of the initial value 0 in the virtual workload is corrected. The priority etc. which were mentioned above can also be determined.
  • the kernel that operates in each processing unit starts selecting a virtual workload in response to a change in the number of requested processing units set to 1 or more in the virtual workload. Thereby, the virtual workload is substantially allocated to the requested number of processing units (S66).
  • the processing unit that has selected the virtual workload starts a virtual workload program prepared in advance, loads the program from the main memory 44 based on the processing ID, and executes the system processing (S68).
  • the 14 to 16 show examples of processing transitions in the six processing units 22a, 22b, 22c, 22d, 22e, and 22f that can be realized in the present embodiment.
  • the horizontal direction in the figure is the time axis, and the task processed during a unit processing time is indicated by a rectangle for each processing unit.
  • the tasks with “P”, “A”, and “G” are application tasks corresponding to the above-described physical operation workload P, artificial intelligence workload A, and graphics processing workload G. It is. In the example shown in the figure, it is assumed that the processing always proceeds in the order of “A”, “P”, and “G”.
  • system processing of noise removal, system BGM, AV chat, and recording is requested at time T0 in the environment where application task processing is performed in this way. 14 to 16, system processing is indicated by a bold rectangle, and each processing is distinguished by being described as “noise removal”, “BGM”, “AV chat”, and “recording”. As described above, with the conversion table 100 shown in FIG. 12, it is possible to set a processing unit or the like assigned to each group to which each process belongs.
  • FIG. 14 shows an example in which each processing is assigned to any processing unit.
  • the assignable processing units can be specified by the user for the conversion table using, for example, a bit mask.
  • each system process is started by the processing units 22c, 22d, 22e, and 22f at time T0.
  • “A” of the tasks of the application is processed by the two processing units 22a and 22b. Therefore, even if the system processing is executed in this way, “P”, “ “ G” can progress the processing using the maximum number of processing units without a large delay.
  • FIG. 15 shows an example in which a setting is made such that system processing is assigned only to the processing unit 22a.
  • “A” is started among the tasks of the application at time T0, but the processing unit 22a switches to the system processing “noise removal” at a timing suitable for context switching, and the subsequent system processing is performed.
  • the processing unit 22a progresses according to priority. In this case, all the processing units can be assigned to application tasks for the time from the time T0 until the system processing is switched to the time after the system processing is completed.
  • FIG. 16 shows an example in which system processing can be assigned to any processing unit, but the priority of system processing belonging to a utility or high load service group is relatively low.
  • the processing of “noise removal” and “BGM” with high priority is started by the processing units 22c and 22d at time T0, but the processing of “recording” and “AV chat” is the task “G” of the application. Has been started after the end.
  • processing can be progressed in an optimum manner for each application.
  • the priority of each system process and the processing unit to be assigned can be specified in the application, and settings are made according to the specification when converting to a virtual workload.
  • the timing for executing the system processing and the processing unit to be executed can be easily changed for each application, and an optimum processing mode can be realized.
  • system processing can be handled in the same way as application tasks, applications can be created in the same manner as before.
  • the processing speed can be increased by distributing the system processing load and operating the maximum number of processing units.
  • Information processing device 22a processing unit, 24 system level management unit, 25 user level management unit, 26 task allocation unit, 27 system processing request unit, 28 execution monitoring unit, 30 execution control unit, 32 task processing unit, 34 communication unit 36 local memory, 44 main memory.
  • the present invention can be used for information processing apparatuses such as computers, game machines, and image processing apparatuses.

Abstract

 システムレベル管理部24がシステム処理を発生させて処理要求をユーザレベル管理部25のタスク割り当て部26に行う(S20)。タスク割り当て部26は導入しているユーザレベルスケジューリングの手順に則りシステム処理をスケジューリングする(S22)。システム処理を割り当てられた処理ユニット22dは、アプリケーションのタスクを好適なタイミングで休止するか終了した時点で、システム処理が受け入れ可能である旨の通知を主処理ユニット20に送信する(S24)。システムレベル管理部24は、実行期限までにS24の通知を受けた場合、処理ユニット22dにシステム処理を開始させる(S28)。

Description

情報処理装置および情報処理方法
 本発明は情報処理技術に関し、特に複数の計算資源に処理を分散させてコンピュータプログラムを実行するための技術に関する。
 コンピュータゲームやウェブ検索ソフトをはじめとするソフトウェアの高機能化は、ハードウェアに対して大きな処理負荷をかけるようになってきている。このような状況に対処するためには、演算処理自体の高速化が必要であることはもちろんであるが、複数のプロセッサを導入し、タスク処理を効率的に行うことも重要である。このとき、いかに高い稼働率で個々のプロセッサを動作させるかが、処理の高速化に対し重要な鍵となる。
 複数のプロセッサにタスク処理を並列に実行させるためには、一般的にはOS(オペレーティングシステム)が、処理のタスクへの分割、各プロセッサへのタスクの割り当て、処理の切り替え、各プロセッサからメインメモリや入出力装置へのアクセスの制御などを行う場合が多い。一方で、OS上で動作するユーザレベルのタスクがスケジューリングなどのタスク処理の管理を行うユーザレベルスケジューリングの手法も提案されている。例えば、タスクをメインメモリのキューに格納しておき、タスクを実行するプロセッサが自ら当該キューからタスクを選択して実行する技術が提案されている(例えば特許文献1参照)。
特開2007-52511号公報
 上述のように、複数のプロセッサがタスク処理を並列に実行することによってプログラムの処理速度を確保する技術は一般的なものになっている。一方で、高度な処理を高速に行うことに対するユーザのニーズは留まるところを知らず、限られたリソースを最大限利用するために処理を効率化できる技術が望まれている。
 本発明はこのような課題に鑑みてなされたものであり、その目的は、複数のプロセッサが必要な処理を効率的に実行することのできる技術を提供することにある。
 本発明のある態様は情報処理装置に関する。この情報処理装置は、プログラムのタスクを処理するタスク処理部と、実行中のプログラムの外部プログラムが呼び出された場合に、当該外部プログラムのタスクに実行条件を付加して処理要求を発行する処理要求部と、処理要求部が処理要求を発行した外部プログラムのタスクをタスク処理部におけるタスク処理のスケジュール制御に組み入れるタスク割り当て部と、タスク処理部における外部プログラムのタスクの処理において、処理要求部が付加した実行条件に対する違反が生じたか否かを判定する実行監視部と、実行監視部が実行条件違反が生じたと判定した際に、タスク処理部の処理を外部プログラムのタスクに切り替える実行制御部と、を備えたことを特徴とする。
 ここで「外部プログラム」とは、一般的にはOSが提供する機能を実現するためのライブラリ、カーネルなどであるが、呼び出し元のプログラム以外のプログラムであればその種別や処理内容は限定されない。
 本発明の別の態様は情報処理方法に関する。この情報処理方法は、実行すべきプログラムのタスクをプロセッサにおいて処理するステップと、実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れるステップと、スケジュール制御に組み入れられたシステムレベルのプログラムのタスクをプロセッサにおいて処理するステップと、を含むことを特徴とする。
 なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
 本発明によれば、複数のプロセッサによるタスクの並列処理を容易に効率化することができる。
実施の形態1を適用できる情報処理装置の構成例を示す図である。 一つの処理ユニットにのみシステム処理を行わせた場合の、処理ユニットにおけるタスク処理の推移を概念的に示す図である。 実施の形態1における、ユーザレベルスケジューラによってシステム処理をスケジューリングする場合の一態様として実現される、各処理ユニットにおけるタスク処理の推移の例を概念的に示す図である。 実施の形態1における処理ユニットの構成をより詳細に示す図である。 実施の形態1におけるシステム処理の発生から開始までの全体的な流れを示すフローチャートである。 実施の形態1においてシステム処理を実行するための処理手順を模式的に示す図である。 実施の形態1においてシステム処理要求部がタスク割り当て部にシステム処理要求を行う際に通知する、システム処理に係る情報のデータ構造例を示す図である。 実施の形態2で適用する自律的なユーザレベルスケジューリングの概要を説明するための図である。 実施の形態2においてワークロードのそれぞれに設定された割り当て条件の例を示す図である。 実施の形態2において図9に示した割り当て条件を設定した際、処理ユニットが各ワークロードを選択し、処理する過程の例を模式的に示す図である。 実施の形態2においてシステム処理を仮想ワークロードとして実行する際の処理手順を模式的に示す図である。 実施の形態2においてタスク割り当て部が要求されたシステム処理を仮想ワークロードに変換する際に参照する変換テーブルの例を示す図である。 実施の形態2において自律的なユーザレベルスケジューラを導入した際にシステム処理を実行する処理手順を示すフローチャートである。 実施の形態2において実現できる、6つの処理ユニットにおける処理の推移の例を示す図である。 実施の形態2において実現できる、6つの処理ユニットにおける処理の推移の例を示す図である。 実施の形態2において実現できる、6つの処理ユニットにおける処理の推移の例を示す図である。
実施の形態1
 図1は、本実施の形態を適用できる情報処理装置の構成例を示している。情報処理装置10は、マイクロプロセッサユニット18、入出力装置(I/O)42、メインメモリ44、補助記憶装置(HDD)46を備え、それぞれがバス48を介して接続される。マイクロプロセッサユニット18は、複数の処理ユニット22a、22b、・・・、22nがそれぞれ内部バス19を介して接続する構成を有する。
 処理ユニット22a、22b、・・・、22nはいずれも、演算装置、ローカルメモリなどを含む処理ユニットである。処理ユニット22a、22b、・・・、22nは、OSや起動されたアプリケーションプログラム(以後、単に「アプリケーション」と呼ぶ)のタスクを処理する。入出力装置(I/O)42、メインメモリ44、補助記憶装置(HDD)46は、一般的な情報処理装置に設けられる入出力装置、メモリ、補助記憶装置で構成してよい。
 図1に示したような構成の情報処理装置10においては、処理ユニット22a、22b、・・・、22nの少なくともいずれかが、入出力装置42やメインメモリ44などのデバイスへのアクセスを要する処理など、システムレベルの処理を行う必要がある。以後、このような処理を「システム処理」と呼ぶ。これに対しアプリケーションなどユーザレベルのタスク処理はユーザ処理、と捉えることができる。システム処理を実行しない処理ユニットは、主にアプリケーションなどユーザレベルのタスクを並列に処理する。
 このような場合、アプリケーションを高速処理するためには、ある処理ユニットにシステム処理のみを行わせるのでなく、処理の空き時間にアプリケーションのタスクも処理させることが望ましい。図2は処理ユニット22aをシステム処理を行う処理ユニットとした場合の、処理ユニット22a、22b、・・・、22nにおけるタスク処理の推移を概念的に示している。図中、横軸が時間であり、矩形で示された、各処理ユニットにおいて処理されるタスクのうち、白い矩形がアプリケーションのタスク、斜線網掛けの矩形がシステム処理のタスクとする。
 処理ユニット22aではシステム処理のタスク2、3、5が処理され、その空き時間にアプリケーションのタスク4を処理している。一方、その他の処理ユニット22b、・・・、22nでは常時、アプリケーションのタスク6を処理している。図では省略しているが、タスク6は当然、処理ユニットごとに処理が行われ、同じ処理ユニットでも適宜コンテキストスイッチを行っているものとする。
 一般的にアプリケーションのタスクと比較して、システム処理は高い優先度を必要とする場合が多い。そのため図2に示したような態様において、処理ユニット22aがアプリケーションのタスク4を処理している途中でシステム処理のタスク5が発生すると、ユーザレベルのスケジューリングに関係なく、アプリケーションのタスク4は当該処理ユニット22aをシステム処理のタスク5に明け渡さざるを得なくなる。
 アプリケーションを作成する段階で、システム処理がどのように発生するかを予測することは困難であるため、並列処理用にアプリケーションを作成したとしても、処理ユニット22aに割り当てるタスク4をどのように切り出すかは難しい問題である。例えば、処理ユニット22aがアプリケーションのタスクを処理できる時間が予測できないため、同じアプリケーションのタスク6を処理している処理ユニット22b、・・・、22nと通信の必要が発生しても、当該通信処理を好適なタイミングで実行できる保障がない。またアプリケーションのタスク4を突然休止せざるを得ないため、保存すべきデータが多くなりコンテキストスイッチに要する時間7が長くなる。
 本実施の形態では、このような状況を回避しつつ処理の高速化を実現するため、システム処理の処理スケジューリングをユーザレベルスケジューラに行わせることにより、ユーザレベルの処理スケジュールに組み入れる。図3はユーザレベルスケジューラによってシステム処理をスケジューリングする場合の一態様として実現される、処理ユニット22a、22b、・・・、22nにおけるタスク処理の推移の例を概念的に示している。図の示し方は図2と同様である。
 同図に示すように、全ての処理ユニット22a、22b、・・・、22nは、基本的にアプリケーションのタスク8を実行する。そしてシステム処理のタスク2、3、5が発生したら、導入されているユーザレベルスケジューリングの手順に基づき、いずれかの処理ユニットが当該処理を実行するようにスケジューリングする。例えば優先度の低いアプリケーションのタスクを処理している処理ユニットや、他の処理ユニットが処理中のタスクと関連性の低いタスクを処理している処理ユニットなどを選択してシステム処理を割り当てる。このときシステム処理を割り当てられた処理ユニットは、自らが実行中のアプリケーションのタスクをコンテキストスイッチの観点で好適なタイミングで休止するか処理中のタスクが終了した時点でシステム処理を開始する。
 このようにすることで、システム処理の負荷を分散させることができるとともに、アプリケーションのタスクが突然、システム処理のタスクによって休止させられるという状況を回避でき、システム処理とアプリケーションのタスクの双方を可能な限り進捗させることができる。このとき、上述した、一つの処理ユニットのみ、アプリケーションに必要な通信を行いづらい、といった状況を回避できるため、全ての処理ユニットを利用して並列に処理を行うプログラムを作成すればよく、プログラム作成が容易である。またコンテキストスイッチに要する時間を削減することができ、全体として処理速度が向上する。
 図4は処理ユニット22aの構成をより詳細に示している。情報処理装置10は図1に示すように処理ユニット22a以外の処理ユニットを有していてよく、その数は限定しない。
 処理ユニット22aは、システム処理のタスクを管理するシステムレベル管理部24、アプリケーションのタスクなどユーザレベルのタスクを管理するユーザレベル管理部25を含む。システムレベル管理部24は、処理中のタスクにおいてシステム系のプログラムが呼び出された場合などシステム処理の必要が生じた際、システム処理要求をユーザレベル管理部25に発行するシステム処理要求部27、処理ユニットにおけるシステム処理の実行を監視する実行監視部28、および、システム処理の実行条件に違反した際、処理ユニット22a、22bなどのいずれかにシステム処理を強制的に実行させる実行制御部30を含む。ユーザレベル管理部25は、主としてアプリケーションなどユーザレベルのプログラムをタスクに分割し、各処理ユニットに割り当てるタスク割り当て部26を含む。
 処理ユニット22aはさらに、割り当てられたタスクをスケジュールに則り処理するタスク処理部32、システム処理が開始できる状態となった際、システムレベル管理部24に通知する通信部34、タスクの処理に必要なデータをメインメモリ44から読み出し格納するローカルメモリ36を含む。なおその他の処理ユニット22b、・・・、22nは処理ユニット22aと同様の構成としてもよいし、例えばタスク処理部32、通信部34、およびローカルメモリ36など、一部の機能ブロックのみ有する構成としてもよい。この場合、システムレベル管理部24およびユーザレベル管理部25を有する処理ユニットは、それらを持たない他の処理ユニットのタスク処理も管理してよい。
 図4において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。例えばユーザレベル管理部25はタスク処理部32で処理するタスクのひとつであってもよく、この場合、当該機能ブロックはタスク処理部32の一部と考えることもできる。
 システムレベル管理部24のシステム処理要求部27は、処理ユニット22a、22bなどにおいて処理されているタスクによってOSが提供するライブラリが呼び出された際などに、当該ライブラリに対応するシステム処理を発生させ、当該システム処理に係る情報をユーザレベル管理部25のタスク割り当て部26に通知することによりシステム処理の実行を要求する。
 ここでタスク割り当て部26に通知する、システム処理に係る情報には、当該システム処理を実行する条件を含ませる。実行条件としては例えば、システム処理が開始されるまでの許容時間である実行期限や、実行する処理ユニットなどが挙げられる。実行条件を違反した場合、例えば実行期限を超過してもシステム処理が実行されない場合は、後述するように、いずれかの処理ユニットにおけるアプリケーションのタスクを強制的に休止させてシステム処理を実行させる。実行条件の情報や処理要求発行タイミングなどの情報はシステムレベル管理部24内で共有される。
 実行監視部28は、処理ユニット22a、22bなどのいずれかでシステム処理が実行期限内に実行されたかなど、実行条件が守られたか否かを監視する。実行期限が実行条件として指定されている場合、例えば実行監視部28には図示しないタイマを設け、システム処理要求部27がシステム処理の実行要求を発行させてからの経過時間を測定する。そして通信部34からのシステム処理の受け入れ可能の通知が、タイマで測定した実行期限内になされなかった場合は、システム処理の実行条件に違反したと判定する。
 実行制御部30は、実行監視部28によってシステム処理の実行条件違反が判定された場合に、処理ユニット22a、22bなどのいずれか、または全ての処理ユニット22a、22b、・・・、22nにおいて処理されているタスクを休止させ、当該システム処理を実行させる。この処理は、OSのカーネルなどによる一般的なプリエンプション処理と同様に実現することができる。
 実行制御部30はさらに、システム処理を割り当てられた処理ユニットが、自らが処理していたアプリケーションのタスクを休止し、レジスタ値などの保存を行ったことを検知すると、当該処理ユニットにシステム処理を実行させる。
 ユーザレベル管理部25のタスク割り当て部26は、ユーザが起動したアプリケーションのタスクを処理ユニット22a、22bなどに割り当てる。新たなタスクが発生すると、タスク割り当て部26は、メインメモリ44などに設けたタスクキューに、発生したタスクを順次格納していく。この場合、処理ユニット22a、22bなどは、処理中のタスクを休止、終了した際などに、当該タスクキューからタスクを順次取り出して処理する。あるいはタスク割り当て部26は、タスクの優先度や必要な処理ユニットの数、処理時間などに基づき、処理ユニット22a、22bなどで既にスケジューリングされているタスクとの調整を行ったうえで、適当なタイミングで新たなタスクが処理されるように処理ユニット22a、22bなどにタスクを割り振る。このような処理は、マルチタスク対応のOSやユーザレベルOSなどで一般的に用いられている手法を適用することができる。
 タスク割り当て部26はさらに、システム処理要求部27からシステム処理の実行要求を受けたら、当該システム処理もいずれかの処理ユニットに割り当てる。このとき、上述のタスクキューに、他のタスクとともにシステム処理の情報を格納する。あるいは、システム処理要求部27から受け付けた情報には当該システム処理の実行条件が含まれているため、タスク割り当て部26は、当該実行条件を満たすようにスケジューリングを行う。
 タスク処理部32は、タスク割り当て部26が割り当てたアプリケーションおよびシステム処理のタスクをスケジュールに則り順次処理する。プログラムなどタスクの処理に必要なデータはメインメモリ44からローカルメモリ36に読み出しておく。またタスクを切り替える際は、それまで処理していたタスクのコンテキストをメインメモリ44に保存し、次のタスクのコンテキストをリストアするコンテキストスイッチを行う。
 タスク割り当て部26がシステム処理を割り当てた際は、そのスケジュールに従い、タスク処理部32がアプリケーションのタスクのコンテキストを保存したうえで、通信部34が、システムレベル管理部24にその旨を通知する。そしてシステムレベル管理部24の実行制御部30の制御のもと、システム処理を実行する。また上述のように実行条件に違反した場合は、その時点で実行制御部30の制御のもと、タスク処理部32は処理中のアプリケーションのタスクからシステム処理へコンテキストスイッチを行う。
 次にこれまで述べた構成による本実施の形態の動作について説明する。図5は本実施の形態におけるシステム処理の発生から開始までの全体的な流れを示すフローチャートである。まず前提として、処理ユニット22a、22b、・・・、22nでは、ユーザが起動したアプリケーションのタスクなどがその時点でのスケジュールに則り処理されているとする。このような状況において処理中のタスクが、OSが提供するライブラリを呼び出すなどした際に、システムレベル管理部24のシステム処理要求部27は、当該ライブラリに対応するシステム処理を発生させ、ユーザレベル管理部25のタスク割り当て部26に処理要求を行う(S10)。
 要求を受けたタスク割り当て部26が、当該システム処理の割り当てをいずれの処理ユニットにも行わなかったり、割り当てたにも関わらず処理ユニットが何らかの理由でアプリケーションのタスクを休止しなかったりした場合などに、実行監視部28は実行条件の違反を判定する(S12のY)。そして実行制御部30は、処理ユニット22a、22b、・・・、22nのいずれかまたは全ての処理を休止させ、システム処理用に使用するためのプリエンプション処理を行う(S14)。このとき全ての処理ユニットを休止させた場合は、そのうち少なくとも一つの処理ユニットを使用してシステム処理を実行すればよい。また、複数の処理ユニット22a、22b、・・・、22nのいずれか少なくとも一つを休止させ、当該処理ユニットによりシステム処理を行う場合、休止させる処理ユニットはあらかじめ設定した優先度などの規則に従って選択してもよいし、任意に選択してもよい。
 一方、タスク割り当て部26がシステム処理の割り当てを行い、割り当てられた処理ユニットが当該処理のためにコンテキストスイッチを行った場合、実行監視部28は実行条件の違反がないと判定する(S12のN)。そして処理ユニットのタスク処理部32はシステム処理を開始する(S16)。S14でプリエンプション処理を行った場合も同様に、システム処理を開始する(S16)。
 図6はシステム処理を実行するための処理手順を模式的に示している。このときシステム処理には実行期限が設定されているとする。図2と同様、横方向が時間軸であり、白い矩形はアプリケーションのタスク、斜線網掛けの矩形はシステム処理のタスクである。同図において6つの処理ユニット22a、22b、・・・、22fがそれぞれアプリケーションのタスクを処理している。この状況において、まず図5のS10に示すように、システムレベル管理部24のシステム処理要求部27がシステム処理要求をタスク割り当て部26に行う(S20)。タスク割り当て部26は、処理ユニット22dに当該処理を割り当てる(S22)。この処理ユニットの選択は、上述のように、処理しているタスクの優先度や他の処理ユニットが処理中のタスクとの関連性などに基づいて行う。またはシステム処理の情報をタスクキューに格納する。この場合、処理中のタスクを終了した処理ユニットが当該タスクキューからシステム処理の情報を読み出すことにより、実質的な割り当てが行われる。
 システム処理を割り当てられた処理ユニット22dは、アプリケーションのタスクを好適なタイミングで休止し、レジスタ値などをメインメモリ44などに保存したうえ、システム処理が受け入れ可能である旨の通知をシステムレベル管理部24に送信する(S24)。システムレベル管理部24の実行監視部28は、S20の処理要求からの経過時間を測定し、実行期限までにS24の通知を受けた場合、実行制御部30は処理ユニット22dにシステム処理を開始させる(S28)。
 ここで何らかの原因でS22のタスク割り当て処理がなされなかった場合、あるいは、処理ユニット22dでシステム処理の受け入れができない場合など、S24の受け入れ可能通知が実行期限までになされないと、実行監視部28は実行条件違反と判定し、図5のS14におけるプリエンプション処理が実行制御部30により実行される。以上の処理をシステム処理が発生するたびに繰り返すことにより、図3に示したように、全ての処理ユニット22a、22b、・・・、22nをアプリケーションのために使用しつつ、必要なタイミングでシステム処理を実行する態様を実現できる。
 図7はシステム処理要求部27がタスク割り当て部26にシステム処理要求を行う際に通知する、システム処理に係る情報のデータ構造例を示している。システム処理データ50は、種別識別子52、処理ID54、実行期限56、周期58、実行時間60を含む。種別識別子52は、オーディオデコーダ、エコーキャンセラなど、システム処理の種別を識別するための識別情報であり、種別と識別子の対応はあらかじめ定めてメインメモリ44などに格納しておく。タスク割り当て部26は、要求されたシステム処理の種別識別子52に基づき当該処理の種別を特定し、それぞれの種別に対しあらかじめ定めた優先度を特定したうえ、スケジューリングに反映させる。
 処理ID54は、要求するシステム処理ごとに一意に設定する識別情報である。処理ユニットがシステム処理を行う際、当該処理IDに基づき、システム処理のプログラムをメインメモリ44から読み出す。また、システム処理を割り当てられた処理ユニットの通信部34が、当該システム処理を実行する準備が整ったことをシステムレベル管理部24に通知する際にも、処理IDを用いて他のシステム処理に係る通知と区別する。実行期限56は例えばシステム処理の依頼発行から実行開始までの許容時間である。上述のとおりこの時間を過ぎても処理ユニットからシステム処理の受け入れ可能通知がなされない場合、実行制御部30によるプリエンプション処理が行われる。複数のシステム処理が発生した場合、タスク割り当て部26は当該実行期限56を利用して、システム処理間での割り当て優先順位を定めてもよい。例えば最初に実行期限が到来するシステム処理を優先して処理ユニットに割り当てる。
 周期58はシステム処理の動作周期である。複数のシステム処理が発生した場合、タスク割り当て部26は当該周期58に基づき、例えばレートモノトニックスケジューリングなどの手法に則り、処理ユニットへの割り当てを定めてもよい。実行時間60はシステム処理の実行時間である。複数のシステム処理が発生した場合、タスク割り当て部26は当該実行時間60に基づき処理ユニットへの割り当てを定めてもよい。また場合によっては、システム処理の実行が実行時間60を経過したら、処理ユニットにおける当該システム処理を強制的に打ち切るようにしてもよい。
 これまでの説明では、システムレベル管理部24がシステム処理を発生させると、専らユーザレベル管理部25のタスク割り当て部26に処理要求を行うことにより、ユーザレベルのスケジューリングにシステム処理を組み入れる態様を実現した。一方で、同じ情報処理装置10を用いて、システム処理をユーザレベルのスケジューリングに組み入れる態様と、図2について説明したようにシステム処理がユーザレベルスケジューリングと独立に実行される態様とを、アプリケーションなどのプログラムによって選択できるようにしてもよい。この場合、システムレベル管理部24は、システム処理が発生した時点で、いずれの態様が指定されているかを実行中のアプリケーションのプログラムから判断する。
 そしてシステム処理をユーザレベルのスケジューリングに組み入れる態様が指定されていれば、システムレベル管理部24は、発生したシステム処理の要求をタスク割り当て部26に対して発行する。システム処理をユーザレベルスケジューリングと独立に実行する態様が指定されていれば、システムレベル管理部24は、タスク割り当て部26に処理を要求せず、処理ユニットがユーザレベルのタスクを処理している場合は処理時間を横取りしてシステム処理を実行させる。このようにすることで、アプリケーションを作成する際に、必要となるシステム処理の種類や実行頻度などに応じて最適な態様を選択することができる。
 以上述べた本実施の形態によれば、アプリケーションの処理の途中で発生するシステム処理をユーザレベルのスケジューリング処理に組み込む。これにより、ユーザレベルのスケジューリングポリシーに則りシステム処理を実行できる機会が生まれ、アプリケーションなどユーザレベルのタスクが予期しないタイミングで休止させられる可能性が低くなる。また、システム処理の負荷が複数の処理ユニットに分散し易いため、システム管理部によるプリエンプションをせずに実行期限までにシステム処理を実行できる可能性が高くなる。これにより、システム処理を割り当てられた処理ユニットは、自らが処理していたアプリケーションのタスクを、好適なタイミングで休止させることができ、システム処理を開始させるためのコンテキストスイッチによるオーバーヘッドを削減することができる。また、アプリケーションのタスク処理に偏りが発生しにくいため、特定の処理ユニットのみ処理ユニット間通信がしにくい、といった状況が回避でき、プログラムの並列化が容易である。
 また、処理ユニットによるシステム処理が実行期限を超過するなど実行条件に違反した場合、主処理ユニットは処理ユニットの処理を強制的にシステム処理に切り替える。これにより、システム処理を確実に実行することができ、処理割り当てをユーザレベルのスケジューリングに則り行うことによってシステム処理が遅延するなどの悪影響を排除することができる。結果として、システム処理を確実に実行しながら、アプリケーションのタスクも高速に処理することが可能となる。
実施の形態2
 実施の形態1は、優先度や実行時間などに基づき、ユーザレベル管理部25のタスク割り当て部26が各タスクを適宜処理ユニットに割り当てていくことによりスケジュールを生成していく態様であった。本実施の形態では、各処理ユニットが自律的にタスクを選択して実行する自律的なユーザレベルスケジューリングの機構において、実施の形態1の如く、システム処理をスケジュールに則った処理ユニットで実行させる。
 このユーザレベルスケジューリングの例は、例えば特開2007-52511号公報などにおいて示されている。ここではその概要について説明する。図8は自律的なユーザレベルスケジューリングの概要を説明するための図である。なお以後の説明において実施の形態1と同じ機能ブロックを用いることができる場合、当該機能ブロックに実施の形態1で示したのと同じ符号を付す。また実施の形態1と同様の処理手順については適宜その説明を省略する。
 図8において、処理ユニット22aは、アプリケーションなどユーザレベルのタスクを生成すると、それを情報処理装置10に含まれる処理ユニットのグループのいずれかに割り当てる。具体的には、あらかじめ定めておいた一つまたは複数の処理ユニットのグループに対応するメインメモリ44内の領域(タスクキュー)に、割り当てたタスクを実行するためのデータを格納する。図8の例では、4つの処理ユニット22a、22b、22c、22dが処理ユニットのグループを構成しているとし、当該グループに割り当てたタスク80がメインメモリ44の対応する領域に格納されている。
 そして、処理ユニット22a、22b、22c、22dの各々のローカルメモリには、ユーザレベルスケジューリングを実行するカーネルのプログラムを格納しておく。処理ユニット22a、22b、22c、22dは、前のアプリケーションのタスクが完了したり休止状態となった場合、あるいは所定の周期が到来すると、カーネルの処理を開始し、メインメモリ44に格納されたタスクから1つ選択して、当該タスクの実行に必要なプログラムなどのデータを自らのローカルメモリにコピーすることによって当該タスクの処理を開始する。
 ここでメインメモリ44に格納するタスクは、1つの処理ユニットにおいて1回の処理で実行される最小単位のタスクでもよいし、それらを所定の処理単位でまとめたタスクセット、あるいはジョブチェインの状態でもよい。以後、このように最小単位のタスクを1つ以上まとめた単位をワークロードと呼ぶ。1つの巨視的な処理、すなわち目的を達成するためのタスクの集合体をワークロードとして形成すれば、当該ワークロード単位で処理ユニットに割り当てを行うことにより、効率的な処理が可能となる。例えば、ワークロードの実行に複数の処理ユニットが必要な場合は、基本的にはその数の処理ユニットを同時に確保して実行させる。このため各ワークロードには、要求する処理ユニットの数、各処理ユニットにおける優先度、最大の処理ユニット割り当て数などの割り当て条件の情報を付加しておく。
 処理ユニット22a、22b、22c、22dは、当該ワークロードに係る情報を読み出したうえ、処理ユニットごとの優先度などに基づき一つのワークロードを選択してタスクの処理を行う。図9は、4つのワークロードのそれぞれに設定された割り当て条件、ここでは各処理ユニットにおける優先度および最大の処理ユニット割り当て数を例示している。図9に示した割り当て条件テーブル90の例では、ワークロード欄92に示すように、物理演算のワークロードP、人工知能のワークロードA、グラフィックス処理のワークロードG、およびオーディオ処理のワークロードMを処理対象のワークロードとしている。
 そして各ワークロードに対し、各処理ユニットにおける4つのワークロードの優先順位、および割り当てることのできる処理ユニットの最大数が、優先度欄94および最大処理ユニット数欄96に記載されている。例えばワークロードPの場合、処理ユニット22a、22b、22c、22dにおける優先順位はそれぞれ「1」、「0」、「2」、「2」と設定されている。また割り当てることのできる処理ユニットの最大数は「2」と設定されている。その他のワークロードも同様である。
 同図の場合、優先度欄94に記載された数値は、「0」を除き数が少ないほど優先順位が高いとする。例えば処理ユニット22aにおける優先順位はワークロードPが高く次がワークロードGである。数値が「0」の場合は、当該処理ユニットでは処理を行わない設定を意味する。割り当てることのできる処理ユニットの最大数を設定しない場合は最大処理ユニット数欄96を空欄としてよい。このような設定はプログラム作成時にアプリケーションごとに行う。
 図10は、図9に示した割り当て条件を設定した際、処理ユニット22a、22b、22c、22dが各ワークロードを選択し、処理する過程の例を模式的に示している。同図において縦方向が時間軸であり、各処理ユニットの下に示される矩形がタスクあるいはワークロードの一つ一つの処理である。同図で示した時刻t0付近では、各処理ユニット22a、22b、22c、22dが、それぞれにおいて最も高い優先順位を有するタスクの処理、すなわちワークロードP、ワークロードA、ワークロードG、ワークロードGの処理をそれぞれ行っている。
 例えば時刻t1で、処理ユニット22c、22dで処理されていたワークロードGのタスクがデバイスアクセスのための待機状態となると、それらの処理ユニット22c、22dは次に優先度の高いタスクであるワークロードPを選択しようとする。ところがワークロードPのタスクを処理できる処理ユニットの最大数は「2」であったため、処理ユニット22cがワークロードPを選択した場合、処理ユニット22dはさらに次の優先度を有するワークロードMを選択する。そしてデイバイスアクセスのための待機が時間Tで解消すると、処理ユニット22c、22dは、それぞれのワークロードP、ワークロードMを休止できるタイミングで、再びワークロードGを選択して実行を開始する(時刻t2)。
 このように、アプリケーションにおいて指定された優先度および割り当て可能な処理ユニットの最大数、あるいは要求する処理ユニットの数などの割り当て条件に従い、各処理ユニットで動作するカーネルによって自律的にタスクの処理が進捗する。このとき各処理ユニットにおいて優先度の低いタスクは休止に好適なタイミングで優先度の高いタスクに処理時間を譲るため、コンテキストスイッチに要する時間を最小限に、優先度に従った処理の切り替えが可能となる。また処理ユニットごとに優先度を指定可能とすることで、処理ユニットへのタスクの割り振りが容易になる。なお図9、10はあくまで例示であり、割り当て条件は優先度のみとしたり、その他のパラメータを指定してもよい。
 本実施の形態では、このような自律的なユーザレベルスケジューラを導入した情報処理装置において、システム処理をユーザレベルスケジューリングに組み込む。具体的には、システム処理を仮想ワークロードとして発生させることにより、ユーザレベルスケジューラのスケジューリングにシステム処理を組み込む。この態様は、実施の形態1の図1および図4で示した情報処理装置10と同様の構成によって実現できる。ただし本態様においてタスク割り当て部26は、タスクを直接処理ユニットに割り当てるのでなく、上述のとおり、ワークロードを処理ユニットグループに割り当て、当該処理ユニットグループに対応するメインメモリ44内の領域に処理に必要なデータや割り当て条件を格納する。
 図11は本実施の形態においてシステム処理を仮想ワークロードとして実行する際の処理手順を模式的に示している。図6と同様、白い矩形はアプリケーションのタスク(ワークロード)、斜線網掛けの矩形はシステム処理のタスク(仮想ワークロード)である。同図において処理ユニット22a、22b、22c、22dの4つの処理ユニットが処理ユニットグループを形成し、それぞれが、割り当てられたアプリケーションのワークロードを構成するタスクを処理している。この状況において、まずシステムレベル管理部24のシステム処理要求部27がシステム処理要求をタスク割り当て部26に行う(S40)。タスク割り当て部26は、当該処理要求をあらかじめ定めた規則により仮想ワークロードに変換し、メインメモリ44の該当領域に格納する(S42)。
 その後、処理ユニットグループのうち前のタスク処理を完了、または休止させた処理ユニット、図11の例では処理ユニット22dが、メインメモリ44からシステム処理の仮想ワークロードを選択して自らのローカルメモリにロードする(S44)。仮想ワークロードの処理が可能となった時点で処理ユニット22dはその旨の通知をシステムレベル管理部24に送信する(S46)。
 システムレベル管理部24の実行監視部28は、S40の処理要求からの経過時間を測定し、実行期限までにS46の通知を受けた場合、実行制御部30は処理ユニット22dにシステム処理を開始させる(S50)。実行条件違反があった場合は、実施の形態1と同様、処理ユニット22a、22b、22c、22dのいずれか、または全てのタスク処理を休止させ、システム処理を実行させてよい。
 次にタスク割り当て部26が、システムレベル管理部24から要求されたシステム処理を仮想ワークロードに変換する手法について説明する。図12はタスク割り当て部26が要求されたシステム処理を仮想ワークロードに変換する際に参照する変換テーブルの例である。変換テーブル100はあらかじめ設定しておきメインメモリ44などに格納しておく。変換テーブル100は、グループ欄102、種別欄104、リソース割り当て単位欄108、およびユーザパラメータ欄110を含む。
 タスク割り当て部26は、実施の形態1の図7に示したシステム処理に係る情報と同様の情報をシステム処理要求部27から受け取る。この情報のうち、種別識別子52に基づき図12の種別欄104から、要求されたシステム処理の種別を検索する。同図に示すように、各種別はグループ欄102に示したグループにまとめられ、それぞれのグループに対し、ワークロードとして必要なパラメータを設定する。
 リソース割り当て単位欄108には、各グループを一つの単位として処理ユニットなどのリソースを割り当てるか、種別ごとに割り当てるかを設定する。図12の例で「グループ」と記載されている場合は、1つのグループでリソースを共有する。「種別ごと」と記載されている場合は、種別欄104に記載した種別ごとにリソースを割り当てる。ユーザパラメータ欄110には、アプリケーションごとに設定が可能なパラメータ、例えば当該システム処理を割り当てる処理ユニットや、割り当てることのできる最大の処理ユニット数、あるいは処理ユニットごとの優先順位を定めた優先度テーブルの識別子などを設定する。優先度テーブルは識別子と対応づけてあらかじめ準備しておく。タスク割り当て部26は、当該設定に基づき、図9の優先度欄94、最大処理ユニット数欄96に示すような数値を最終決定する。
 次にこれまで述べた構成による本実施の形態の動作を説明する。図13は自律的なユーザレベルスケジューラを導入した際にシステム処理を実行する処理手順を示すフローチャートである。まずタスク割り当て部26は、アプリケーションの起動時や、システム処理をユーザレベルスケジューリングに則り行う態様が必要となった際、アプリケーションのワークロードと同様に、初期状態の仮想ワークロードをメインメモリ44に登録しておく(S60)。初期状態の仮想ワークロードでは、要求する処理ユニットの数を初期値0としておく。
 このときアプリケーションのタスクは自律的なユーザレベルスケジューリングによって各処理ユニットで処理されているとする。このような状況において、OSが提供するライブラリが呼び出されるなどした際に、システムレベル管理部24のシステム処理要求部27は、当該ライブラリに対応するシステム処理を発生させ、タスク割り当て部26に処理要求を行う(S62)。
 要求を受けたタスク割り当て部26は、要求に含まれる情報に従い、S60において登録しておいた初期状態の仮想ワークロードを修正する(S64)。例えばシステム処理の処理IDに基づき、あらかじめ設定した当該処理に要する処理ユニットの数を特定し、仮想ワークロードにおける初期値0の設定を修正する。上述した優先度なども決定できる。各処理ユニットで動作するカーネルは、仮想ワークロードにおいて、要求する処理ユニットの設定数が1以上に変更されたことを受けて、仮想ワークロードの選択を開始する。これによりにより、実質、仮想ワークロードが要求数の処理ユニットに割り当てられる(S66)。
 すると仮想ワークロードを選択した処理ユニットは、あらかじめ準備しておいた仮想ワークロード用のプログラムを起動し、処理IDに基づきメインメモリ44からプログラムをロードしたうえ、システム処理を実行する(S68)。
 図14~16は本実施の形態で実現できる、6つの処理ユニット22a、22b、22c、22d、22e、22fにおける処理の推移の例を示している。図の横方向が時間軸であり、ある単位処理時間中にどのタスクが処理されたかを処理ユニットごとに矩形で示している。同図において「P」、「A」、「G」が記載されたタスクは、上述の物理演算のワークロードP、人工知能のワークロードA、グラフィックス処理のワークロードGに対応するアプリケーションのタスクである。同図の例は、常に「A」、「P」、「G」の順で処理が進捗するとする。
 このようにアプリケーションのタスク処理がなされている環境において、時刻T0でノイズ除去、システムBGM、AVチャット、レコーディング、のシステム処理が要求されたとする。図14~16ではシステム処理を太線の矩形で示し、それぞれの処理を、「ノイズ除去」、「BGM」、「AVチャット」、「レコーディング」と記載して区別している。上述したように、図12に示した変換テーブル100によって、それぞれの処理が属するグループごとに割り当てる処理ユニットなどを設定することができる。
 図14は各システム処理をどの処理ユニットに割り当ててもよい、との設定がなされている場合の例である。割り当て可能な処理ユニットは、例えばビットマスクを利用して変換テーブルに対しユーザが指定できるようにする。同図の場合、各システム処理は、処理ユニット22c、22d、22e、22fが時刻T0でそれぞれ開始している。その間に、アプリケーションのタスクのうち「A」は、2つの処理ユニット22a、22bで処理されているため、このようにシステム処理が実行されても、アプリケーションの後続のタスクである「P」、「G」は大きく遅延することなく、最大限の数の処理ユニットを利用して処理を進捗させることができる。
 図15は、システム処理は処理ユニット22aにのみ割り当てるという設定がなされている場合の例である。この例では、時刻T0でアプリケーションのタスクのうち「A」を開始しているが、処理ユニット22aにおいてはコンテキストスイッチに好適なタイミングでシステム処理「ノイズ除去」に処理が切り替わり、その後のシステム処理が処理ユニット22aで優先度などに従い進捗する。この場合、時刻T0からシステム処理へ切り替わるまでの時間、およびシステム処理が終了した後の時間は、全ての処理ユニットをアプリケーションのタスクに割り当てることが可能である。
 図16は、システム処理をどの処理ユニットに割り当ててもよいが、ユーティリティや高負荷サービスのグループに属するシステム処理の優先度を比較的低くした場合の例である。この場合、優先度が高い「ノイズ除去」、「BGM」の処理は時刻T0で処理ユニット22c、22dによって開始されるが、「レコーディング」、「AVチャット」の処理は、アプリケーションのタスク「G」が終了した後に開始されている。
 このように、システム処理をワークロードに変換する際に割り当てる処理ユニットなどの指定を可能としておくことにより、アプリケーションごとに最適な態様で処理を進捗させることができる。
 以上述べた本実施の形態によれば、プログラムを分割して並列処理する際、処理ユニット自らが分割後のタスクを優先度などに基づき選択して実行する自律的なユーザレベルスケジューラを導入した環境において、システム処理を仮想ワークロードに変換する。これにより、本来はユーザレベルスケジューリングの対象外であったシステム処理を、ユーザレベルのタスクと同様に扱うことが可能となる。結果として、優先度ベースで行われている本来のスケジューリングの動作を阻害することなくシステム処理も進捗させることができる。
 またアプリケーションにおいて、各システム処理の優先度や割り当てる処理ユニットを指定できるようにし、仮想ワークロードへ変換する際に当該指定に従った設定を行う。これによりアプリケーションごとにシステム処理を実行するタイミングや実行する処理ユニットを容易に変化させることができ、最適な処理態様を実現できる。さらに、アプリケーションのタスクと同様にシステム処理を扱えるため、アプリケーションの作成は従来と同様に行える。また実施の形態1と同様、システム処理の負荷を分散させ最大限の処理ユニットを稼働させることによって処理の高速化を実現できる。
 以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
 10 情報処理装置、 22a 処理ユニット、 24 システムレベル管理部、 25 ユーザレベル管理部、 26 タスク割り当て部、 27 システム処理要求部、 28 実行監視部、 30 実行制御部、 32 タスク処理部、 34 通信部、 36 ローカルメモリ、 44 メインメモリ。
 以上のように本発明はコンピュータ、ゲーム機、画像処理装置などの情報処理装置に利用可能である。

Claims (15)

  1.  プログラムのタスクを処理するタスク処理部と、
     実行中のプログラムの外部プログラムが呼び出された場合に、当該外部プログラムのタスクに実行条件を付加して処理要求を発行する処理要求部と、
     前記処理要求部が処理要求を発行した前記外部プログラムのタスクを前記タスク処理部におけるタスク処理のスケジュール制御に組み入れるタスク割り当て部と、
     前記タスク処理部における前記外部プログラムのタスクの処理において、前記処理要求部が付加した実行条件に対する違反が生じたか否かを判定する実行監視部と、
     前記実行監視部が実行条件違反が生じたと判定した際に、前記タスク処理部の処理を前記外部プログラムのタスクに切り替える実行制御部と、
     を備えたことを特徴とする情報処理装置。
  2.  前記処理要求部は、前記外部プログラムのタスクとしてシステムレベルのタスクに、実行条件を付加して処理要求を発行することを特徴とする請求項1に記載の情報処理装置。
  3.  前記処理要求部は、前記実行条件として、処理要求を発行してから実行開始までに許容される実行期限を設定することを特徴とする請求項1または2に記載の情報処理装置。
  4.  前記実行監視部は、前記タスク処理部から、前記外部プログラムのタスク処理を受け入れ可能である旨の通知が、前記実行期限以内になされなかった場合に、実行条件違反が生じたと判定することを特徴とする請求項3に記載の情報処理装置。
  5.  前記タスク割り当て部は、前記外部プログラムの処理内容の種別に対してあらかじめ設定された優先度、実行期限、動作周期、および実行時間、の少なくともいずれかの情報を特定し、特定した情報に基づき、前記タスク処理部の処理のスケジュールを決定することを特徴とする請求項1から3のいずれかに記載の情報処理装置。
  6.  前記タスク割り当て部は、タスクの処理スケジュールを前記タスク処理部ごとに生成し、前記処理要求部が前記外部プログラムのタスクの処理要求を発行した際、当該外部プログラムのタスクを前記タスク処理部ごとの処理スケジュールのいずれかに挿入し、
     前記タスク処理部は、前記タスク割り当て部が生成した処理スケジュールに則りタスクを処理することを特徴とする請求項1から3のいずれかに記載の情報処理装置。
  7.  前記タスク割り当て部は、タスクをメモリのタスクキューに格納し、前記処理要求部が前記システムレベルのタスクの処理要求を発行した際、当該タスクに係る情報を、ユーザレベルのタスクと同様の情報に変換したうえ、前記メモリのタスクキューに格納し、
     前記タスク処理部は、前記タスクキューに格納されたタスクから選択したタスクを処理することを特徴とする請求項2に記載の情報処理装置。
  8.  前記タスク割り当て部は、前記システムレベルのタスクに係る情報をユーザレベルのタスクと同様の情報に変換する際、当該システムレベルのプログラムを呼び出したプログラムにおいて、当該システムレベルのプログラムのタスクに対し設定された優先度および割り当てることのできるタスク処理部の数の少なくともいずれかを、変換後の情報に付加することを特徴とする請求項7に記載の情報処理装置。
  9.  前記タスク処理部は、割り当てることのできるタスク処理部の数が0以外の数とされているタスクを前記タスクキューから選択し、
     前記タスク割り当て部は、前記処理要求部が前記システムレベルのタスクの処理要求を発行した際、あらかじめメモリーのタスクキューに格納しておいた、割り当てることのできるタスク処理部の数を0としたタスクを、処理要求の内容に応じた割り当てることのできるタスク処理部の数へ修正することにより、前記システムレベルのタスクをタスク処理のスケジュール制御に組み入れることを特徴とする請求項7または8に記載の情報処理装置。
  10.  前記処理要求部は、実行中のプログラムにおいて、呼び出す外部プログラムのタスクを前記タスク処理部におけるタスク処理のスケジュール制御へ組み入れない旨の設定がなされていた場合、前記処理要求を発行せず、前記実行制御部は、いずれかの前記タスク処理部の処理を、呼び出された外部プログラムのタスクへ切り替えることを特徴とする請求項1に記載の情報処理装置。
  11.  前記実行制御部は、前記タスク処理部が前記外部プログラムのタスクを開始後、当該外部プログラムの処理内容の種別に対してあらかじめ設定された、当該タスクの実行時間が経過した際、前記タスク処理部における当該タスクの処理を打ち切ることを特徴とする請求項1に記載の情報処理装置。
  12.  実行すべきプログラムのタスクをプロセッサにおいて処理するステップと、
     実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れるステップと、
     スケジュール制御に組み入れられた前記システムレベルのプログラムのタスクを前記プロセッサにおいて処理するステップと、
     を含むことを特徴とする情報処理方法。
  13.  前記システムレベルのプログラムのタスクに実行条件を付加するステップと、
     前記実行条件に違反が生じた場合に、いずれかのプロセッサにおけるタスクの処理を、前記システムレベルのプログラムのタスクに切り替えるステップと、
     をさらに含むことを特徴とする請求項12に記載の情報処理方法。
  14.  前記組み入れるステップは、前記ユーザレベルのプログラムのタスクごとに設定される、優先度を含む情報と同一の形式の情報を、タスクの種別に応じて前記システムレベルのプログラムのタスクに設定するステップを含むことを特徴とする請求項12に記載の情報処理方法。
  15.  実行すべきプログラムのタスクを処理する機能と、
     実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れる機能と、
     をコンピュータに実現させ、
     前記タスクを処理する機能は、スケジュール制御に組み入れられた前記システムレベルのプログラムのタスクも処理することを特徴とするコンピュータプログラム。
PCT/JP2009/004995 2009-01-16 2009-09-29 情報処理装置および情報処理方法 WO2010082244A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP09838214.6A EP2388699B1 (en) 2009-01-16 2009-09-29 Information processing device and information processing method
US13/142,156 US8793695B2 (en) 2009-01-16 2009-09-29 Information processing device and information processing method
CN200980154610.4A CN102282543B (zh) 2009-01-16 2009-09-29 信息处理装置和信息处理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009008162A JP5324934B2 (ja) 2009-01-16 2009-01-16 情報処理装置および情報処理方法
JP2009-008162 2009-01-16

Publications (1)

Publication Number Publication Date
WO2010082244A1 true WO2010082244A1 (ja) 2010-07-22

Family

ID=42339514

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/004995 WO2010082244A1 (ja) 2009-01-16 2009-09-29 情報処理装置および情報処理方法

Country Status (5)

Country Link
US (1) US8793695B2 (ja)
EP (1) EP2388699B1 (ja)
JP (1) JP5324934B2 (ja)
CN (1) CN102282543B (ja)
WO (1) WO2010082244A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140204103A1 (en) * 2011-09-02 2014-07-24 Freescale Semiconductor, Inc. Data processing system and method for task scheduling in a data processing system
CN108292236A (zh) * 2015-11-30 2018-07-17 华为技术有限公司 一种信息处理方法及装置

Families Citing this family (158)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
EP2282264A1 (en) * 2009-07-24 2011-02-09 ProximusDA GmbH Scheduling and communication in computing systems
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
JP5703933B2 (ja) 2010-07-22 2015-04-22 株式会社リコー トナー及びその製造方法
US8483735B2 (en) * 2010-08-26 2013-07-09 Telefonaktiebolaget L M Ericsson (Publ) Methods and apparatus for parallel scheduling of frequency resources for communication nodes
US9195684B2 (en) 2012-03-02 2015-11-24 Cleversafe, Inc. Redundant task execution in a distributed storage and task network
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US9367681B1 (en) * 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US9413781B2 (en) 2013-03-15 2016-08-09 Fireeye, Inc. System and method employing structured intelligence to verify and contain threats at endpoints
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9626226B2 (en) 2013-11-25 2017-04-18 International Business Machines Corporation Cross-platform workload processing
US9652294B2 (en) 2013-11-25 2017-05-16 International Business Machines Corporation Cross-platform workload processing
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US9857990B1 (en) * 2016-03-24 2018-01-02 EMC IP Holding Company LLC Fast startup for modular storage systems
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
US10101934B1 (en) 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
US10324782B1 (en) 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10476906B1 (en) 2016-03-25 2019-11-12 Fireeye, Inc. System and method for managing formation and modification of a cluster within a malware detection system
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10152371B1 (en) 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10255172B1 (en) 2016-09-30 2019-04-09 EMC IP Holding Company LLC Controlled testing using code error injection
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10860369B2 (en) * 2017-01-11 2020-12-08 International Business Machines Corporation Self-adjusting system for prioritizing computer applications
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10554507B1 (en) 2017-03-30 2020-02-04 Fireeye, Inc. Multi-level control for enhanced resource and object evaluation management of malware detection system
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US10754706B1 (en) 2018-04-16 2020-08-25 Microstrategy Incorporated Task scheduling for multiprocessor systems
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
CN113365557A (zh) 2019-01-30 2021-09-07 富士胶片株式会社 医用图像分析装置、方法及程序
WO2020187182A1 (zh) * 2019-03-15 2020-09-24 上海小麦互动企业发展有限公司 处理装置及其处理方法
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
GB2599088A (en) * 2020-09-18 2022-03-30 Metaswitch Networks Ltd Configuring a virtualised environment in a telecommunications network

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816410A (ja) * 1994-06-29 1996-01-19 Natl Aerospace Lab スケジュール制御装置とその方法
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JP2001022601A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd ジョブ実行制御方法及び並列計算機システム
JP2001043091A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 優先度変換システム、優先度変換方法および優先度変換装置
JP2001117786A (ja) * 1999-10-19 2001-04-27 Nec Corp プロセススケジューリング装置およびプロセススケジューリング方法
JP2007052511A (ja) 2005-08-15 2007-03-01 Sony Computer Entertainment Inc スケジューリング方法およびスケジューリング装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19846274A1 (de) * 1998-10-08 2000-04-20 Alcatel Sa Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
WO2004070653A2 (en) * 2003-01-31 2004-08-19 Discovery Partners International Image analysis system and method
CN100345132C (zh) * 2003-07-28 2007-10-24 华为技术有限公司 一种并行处理的方法及系统
DE10337294A1 (de) * 2003-08-13 2005-05-19 Siemens Ag Verfahren und Anordnung zur Abarbeitung von Prozessen
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050268300A1 (en) * 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
US9003421B2 (en) * 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
US7669081B2 (en) 2006-09-27 2010-02-23 Raytheon Company Systems and methods for scheduling, processing, and monitoring tasks
US8185899B2 (en) * 2007-03-07 2012-05-22 International Business Machines Corporation Prediction based priority scheduling
US8893130B2 (en) * 2007-03-26 2014-11-18 Raytheon Company Task scheduling method and system
US8648910B2 (en) * 2007-12-27 2014-02-11 Siemens Healthcare Diagnostics Inc. Method and apparatus for remote multiple process graphical monitoring
US20090300629A1 (en) * 2008-06-02 2009-12-03 Mois Navon Scheduling of Multiple Tasks in a System Including Multiple Computing Elements
JP5281160B2 (ja) * 2008-07-29 2013-09-04 アルカテル−ルーセント ユーエスエー インコーポレーテッド コンピュータ・ネットワーク内の複数のユーザ・デバイス間の資源共用のための方法および装置
US8261274B2 (en) * 2009-06-29 2012-09-04 Oracle America, Inc. Method and system for managing a task

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816410A (ja) * 1994-06-29 1996-01-19 Natl Aerospace Lab スケジュール制御装置とその方法
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JP2001022601A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd ジョブ実行制御方法及び並列計算機システム
JP2001043091A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 優先度変換システム、優先度変換方法および優先度変換装置
JP2001117786A (ja) * 1999-10-19 2001-04-27 Nec Corp プロセススケジューリング装置およびプロセススケジューリング方法
JP2007052511A (ja) 2005-08-15 2007-03-01 Sony Computer Entertainment Inc スケジューリング方法およびスケジューリング装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140204103A1 (en) * 2011-09-02 2014-07-24 Freescale Semiconductor, Inc. Data processing system and method for task scheduling in a data processing system
CN108292236A (zh) * 2015-11-30 2018-07-17 华为技术有限公司 一种信息处理方法及装置

Also Published As

Publication number Publication date
JP2010165259A (ja) 2010-07-29
CN102282543A (zh) 2011-12-14
EP2388699B1 (en) 2019-12-18
JP5324934B2 (ja) 2013-10-23
CN102282543B (zh) 2014-12-17
US8793695B2 (en) 2014-07-29
US20110302587A1 (en) 2011-12-08
EP2388699A4 (en) 2012-11-07
EP2388699A1 (en) 2011-11-23

Similar Documents

Publication Publication Date Title
JP5324934B2 (ja) 情報処理装置および情報処理方法
Sotomayor et al. Combining batch execution and leasing using virtual machines
KR100628492B1 (ko) 실시간 동작 수행방법 및 시스템
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
CA2704269C (en) Uniform synchronization between multiple kernels running on single computer systems
KR101651871B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US20090100435A1 (en) Hierarchical reservation resource scheduling infrastructure
KR101680109B1 (ko) 복수 코어 장치 및 그의 로드 조정 방법
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
JPH0659906A (ja) 並列計算機の実行制御方法
JP6296678B2 (ja) ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置
KR100791296B1 (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
KR101392584B1 (ko) 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법
CN109766168B (zh) 任务调度方法和装置、存储介质以及计算设备
JP5726006B2 (ja) タスクおよびリソースのスケジューリング装置及びその方法並びに制御装置
JP2000056992A (ja) タスクスケジューリングシステム、方法及び記録媒体
JP2015141584A (ja) 情報処理装置、情報処理方法およびプログラム
WO2014188642A1 (ja) スケジュールシステム、スケジュール方法、及び、記録媒体
JP2014078214A (ja) スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム
CN114035926A (zh) 应用线程调度方法、装置、存储介质及电子设备
JP4017005B2 (ja) 演算装置
Walters et al. Enabling interactive jobs in virtualized data centers
JP2001282560A (ja) 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980154610.4

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09838214

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2009838214

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 13142156

Country of ref document: US