As well as the (relatively simple) code to switch between running domains, the Nemesis scheduler has a variety of functions. It must:
Applications in Nemesis specify neither priorities nor deadlines. The scheduler deals with entities called scheduling domains, or sdoms, to which it aims to provide a particular share of the processor over some short time frame. An sdom may correspond to a single Nemesis domain or a set of domains collectively allocated a share.
Figure 5: Scheduling service architecture
The service architecture is illustrated in figure 5. Sdoms usually correspond to contracted domains, but also correspond to best-effort classes of domains. In the latter case, processor time allotted to the sdom is shared out among its domains according to one of several algorithms, such as simple round-robin or multi-level feedback queues. The advantage of this approach is that a portion of the total CPU time can be reserved for domains with no special timing requirements to ensure that they are not starved of processor time. Also, several different algorithms for scheduling best-effort domains can be run in parallel without impacting the performance of time-critical activities.
It has already been mentioned that within Nemesis scheduling using shares is a core concept; however, the particular scheduling algorithm is open to choice. The Atropos scheduler, now the ``standard'' Nemesis scheduler is described in detail below.