  Federated scheduling is a promising approach to schedule parallel real-time
tasks on multi-cores, where each heavy task exclusively executes on a number of
dedicated processors, while light tasks are treated as sequential sporadic
tasks and share the remaining processors. However, federated scheduling suffers
resource waste since a heavy task with processing capacity requirement $x +
\epsilon$ (where $x$ is an integer and $0 < \epsilon < 1$) needs $x + 1$
dedicated processors. In the extreme case, almost half of the processing
capacity is wasted. In this paper we propose the semi-federate scheduling
approach, which only grants $x$ dedicated processors to a heavy task with
processing capacity requirement $x + \epsilon$, and schedules the remaining
$\epsilon$ part together with light tasks on shared processors. Experiments
with randomly generated task sets show the semi-federated scheduling approach
significantly outperforms not only federated scheduling, but also all existing
approaches for scheduling parallel real-time tasks on multi-cores.
