Patent ID: 8806498

Claim:
A scheduling apparatus to allocate works from applications to cores so that the applications share the cores, comprising: a processor; a runnable queue, using the processor, configured to enqueue therein the works in order of execution in consideration of any dependency therebetween; a finish queue, using the processor, configured to enqueue therein finished works whose execution is complete; one or more dependency queues, using the processor, configured to temporarily enqueue the works therein until the works are enqueued into the runnable queue, wherein each application corresponds to a separate dependency queue; an I/O (input/output) port configured to transmit the works in the runnable queue to the cores and receive the finished works from the cores; and a scheduler configured to search the dependency queues for one or more runnable works with no dependency and enqueue the one or more runnable works with no dependency into the runnable queue, to transmit the one or more works in the runnable queue to the cores via the I/O port so that the transmitted one or more works can be executed by any idle one of the cores, and to receive the finished works from the cores via the I/O port and enqueue the received finished works in the finish queue, wherein the scheduler is further configured to perform dependency resolving on the works in the dependency queues in real time upon the receipt of the finished works from the cores or at regular intervals of time, and in response to there being one or more works in the dependency queues having dependency on the finished works, the scheduler is further configured to perform dependency resolving on the one or more works having dependency on the finished works and to enqueue the dependency-resolved works into the runnable queue.