The Dispatcher, Priorities, and Dispatching Classes

The dispatcher's task is to give control to the proper thread. The definition of 'proper' thread can be difficult to state. My approach to this problem is to state the obvious cases, and then to focus on what is left. In a sense, this discussion parallels the logic in the dispatcher.

No other class will be pre-empted in order to run an idle class thread. The notion of starved, and the MAXWAIT parameter do NOT apply to Idle Class threads. OS/2 by design will not execute a ready Idle Class thread as long as threads in other classes are ready. Most threads are expected to be in this class. All dispatching options and parameters apply to scheduling this thread. As long as any thread in this class is ready, OS/2 will give control to it. By design, this may prevent threads in other classes from running. You cannot use priority as a serialization method.

For example, a page fault will result in temporarily blocking this priority thread.

The threads in this class are at a somewhat higher priority than those in the regular class which do not have the focus, but below time-critical.