Contents Index Search Related Documents Previous Next
D.2.3 Preemptive Dispatching
1/2
This clause defines a preemptive task dispatching
policy.
Static Semantics
2/2
The policy_identifier
FIFO_Within_Priorities is a task dispatching policy.
Dynamic Semantics
3/2
When FIFO_Within_Priorities is in effect, modifications
to the ready queues occur only as follows:
4/2
- When a blocked task becomes ready,
it is added at the tail of the ready queue for its active priority.
5/2
- When the active priority of a ready
task that is not running changes, or the setting of its base priority
takes effect, the task is removed from the ready queue for its old active
priority and is added at the tail of the ready queue for its new active
priority, except in the case where the active priority is lowered due
to the loss of inherited priority, in which case the task is added at
the head of the ready queue for its new active priority.
6/2
- When the setting of the base priority
of a running task takes effect, the task is added to the tail of the
ready queue for its active priority.
7/2
- When a task executes a delay_statement
that does not result in blocking, it is added to the tail of the ready
queue for its active priority.
8/2
Each
of the events specified above is a task dispatching point (see
D.2.1).
9/2
A task dispatching point occurs for the currently
running task of a processor whenever there is a nonempty ready queue
for that processor with a higher priority than the priority of the running
task. The currently running task is said to be
preempted and it
is added at the head of the ready queue for its active priority.
Implementation Requirements
10/2
An implementation shall allow specifying both
the task dispatching policy as FIFO_Within_Priorities and the locking
policy (see
D.3) as Ceiling_Locking for a single
partition.
Documentation Requirements
11/2
Priority
inversion is the duration for which a task remains at the head of
the highest priority ready queue while the processor executes a lower
priority task. The implementation shall document:
12/2
- The maximum priority inversion a user
task can experience due to activity of the implementation (on behalf
of lower priority tasks), and
13/2
- whether execution of a task can be
preempted by the implementation processing of delay expirations for lower
priority tasks, and if so, for how long.
14/2
17 If the active priority
of a running task is lowered due to loss of inherited priority (as it
is on completion of a protected operation) and there is a ready task
of the same active priority that is not running, the running task continues
to run (provided that there is no higher priority task).
15/2
18 Setting the base priority
of a ready task causes the task to move to the tail of the queue for
its active priority, regardless of whether the active priority of the
task actually changes.
Contents Index Search Related Documents Previous Next Legal