Scheduling Classes
The Oracle Solaris kernel dispatches processes by priority. The scheduler or dispatcher supports the concept of scheduling classes. Classes are defined as real-time (RT
), system (SYS
), and time-sharing (TS
). Each class has a unique scheduling policy for dispatching processes within its class.
The kernel dispatches highest priority processes first. By default, real-time processes have precedence over sys
and TS
processes. Administrators can configure systems so that the priorities for TS
processes and RT
processes overlap.
The following figure illustrates the concept of classes as viewed by the Oracle Solaris OS kernel.
Dispatch Priorities for Scheduling Classes

Hardware interrupts, which cannot be controlled by software, have the highest priority. The routines that process interrupts are dispatched directly and immediately from interrupts, without regard to the priority of the current process.
Real-time processes have the highest default software priority. Processes in the RT
class have a priority and time quantum value. RT
processes are scheduled strictly on the basis of these parameters. As long as an RT
process is ready to run, no SYS
or TS
process can run. Fixed-priority scheduling enables critical processes to run in a predetermined order until completion. These priorities never change unless they are changed by an application.
An RT
class process inherits the parent's time quantum, whether finite or infinite. A process with a finite time quantum runs until the time quantum expires. A process with a finite time quantum also stops running if the process blocks while waiting for an I/O event or is preempted by a higher-priority runnable real-time process. A process with an infinite time quantum ceases execution only when the process terminates, blocks, or is preempted.
The SYS
class exists to schedule the execution of special system processes, such as paging, STREAMS, and the swapper. You cannot change the class of a process to the SYS
class. The SYS
class of processes has fixed priorities established by the kernel when the processes are started.
The time-sharing (TS
) processes have the lowest priority. TS
class processes are scheduled dynamically, with a few hundred milliseconds for each time slice. The TS
scheduler switches context in round-robin fashion often enough to give every process an equal opportunity to run, depending upon:
-
The time slice value
-
The process history, which records when the process was last put to sleep
-
Considerations for CPU utilization
Default time-sharing policy gives larger time slices to processes with lower priority.
A child process inherits the scheduling class and attributes of the parent process through fork
(). A process's scheduling class and attributes are unchanged by exec
(). For more information, see the fork
(2) and exec
(2) man pages.
Different algorithms dispatch each scheduling class. Class-dependent routines are called by the kernel to make decisions about CPU process scheduling. The kernel is class-independent, and takes the highest priority process off its queue. Each class is responsible for calculating a process's priority value for its class. This value is placed into the dispatch priority variable of that process.
As the following figure illustrates, each class algorithm has its own method of nominating the highest priority process to place on the global run queue.
Kernel Dispatch Queue

Each class has a set of priority levels that apply to processes in that class. A class-specific mapping maps these priorities into a set of global priorities. A set of global scheduling priority maps is not required to start with zero or be contiguous.
By default, the global priority values for time-sharing (TS
) processes range from -20 to +20. These global priority values are mapped into the kernel from 0-40, with temporary assignments as high as 99. The default priorities for real-time (RT
) processes range from 0-59, and are mapped into the kernel from 100 to 159. The kernel's class-independent code runs the process with the highest global priority on the queue.