All three policies we have seen so far do `space scheduling',
that is,
multiplex the set of processors among the applications.
The other alternative is to do `time scheduling',
that is,
multiplex the time (on as many processors the applications can use) among the various
applications.
This is a more direct extension of the single-processor case and
is called RRJob by McCann et al and co-scheduling in Singhal/Shivratari.
The basic idea is
assign each ready application in turn a fixed quantum.
During an application's quantum,
it gets as many of the physical processors as it can use
and then the application following it in the ready Q is given as many as it
can use, and so on.
The idea is inspired by the working set principle:
give an application as many processors as it needs because if you do not,
the scheduled threads many not get any useful work since they
need to communicate with some crucial unscheduled threads.
It was first implemented in Medusa,
which supported the notion of a process team,
a team of processes that need to be coscheduled.
It was useful in Medusa since it had no processor cache so the cost
of switching a processor among threads of different applications
was not so high.