A task is ready if it is in a ready queue, or if it is running. Each processor has one ready queue for each priority value. A task can be on the ready queues of more than one processor. Each processor also has one running task, which is the task currently being executed by that processor. Whenever a task running on a processor reaches a task dispatching point, one task is selected to run on that processor.
Processors are preemptible resources.
Access to a protected object, See section 9.5.1 Protected Subprograms and Protected Actions , is a nonpreemptible resource. When a higher-priority task is dispatched to the processor, and the previously running task is placed on the appropriate ready queue, the latter task is said to be preempted. A new running task is also selected whenever there is a nonempty ready queue with a higher priority than the priority of the running task, or when the task dispatching policy requires a running task to go back to a ready queue. These are also task dispatching points. An implementation is allowed to define additional resources as execution resources, and to define the corresponding allocation policies for them.