The eCos kernel provides a choice of schedulers. In addition there are a number of configuration options to control the detailed behavior of these schedulers.
The multi-level queue scheduler supports multiple priority levels and multiple threads at each priority level. Preemption between priority levels is automatic. Timeslicing within a given priority level is controlled by a separate configuration option
The bitmap scheduler supports multiple priority levels but only one thread can exist at each priority level. This means that scheduling decisions are very simple and hence the scheduler is efficient. Preemption between priority levels is automatic. Timeslicing within a given priority level is irrelevant since there can be only one thread at each priority level.
This option controls the number of priority levels that are available. For some types of scheduler including the bitmap scheduler this may impose an upper bound on the number of threads in the system. For other schedulers such as the mlqueue scheduler the number of threads is independent from the number of priority levels. Note that the lowest priority level is normally used only by the idle thread, although application threads can run at this priority if necessary.
Some schedulers including the mlqueue scheduler support timeslicing. This means that the kernel will check regularly whether or not there is another runnable thread with the same priority, and if there is such a thread there will be an automatic context switch. Not all applications require timeslicing, for example because every thread performs a blocking operation regularly. For these applications it is possible to disable timeslicing, which reduces the overheads associated with timer interrupts.
Assuming timeslicing is enabled, how frequently should it take place? The value of this option corresponds to the number of clock ticks that should occur before a timeslice takes place, so increasing the value reduces the frequency of timeslices.