|
|
The scheduler uses the kernel-mode parameter table ts_kmdpris to manage sleeping time-sharing LWPs. A default version of ts_kmdpris is delivered with the system, and there is seldom a reason to change it. ts_kmdpris is specified in the space.c file in the /etc/conf/pack.d/ts directory. It is automatically built into the kernel as part of system configuration.
The kernel-mode parameter table is a one-dimensional array of global priorities. The kernel assigns these priorities to sleeping processes based on their reasons for sleeping. If a user process sleeps because it is waiting for an important resource, such as an inode, it sleeps at a priority near the high end of the ts_kmdpris priorities, so that it can get and free the resource quickly when the resource becomes available. If a user process sleeps for a less important reason, such as a wait for terminal input, it sleeps at a priority near the low end of the ts_kmdpris priorities.
The default kernel-mode parameter table is simply a one-dimensional array of the integers from 60 through 99, which means that time-sharing processes sleep at priorities between the default fixed priorities and the default time-sharing priorities.
In the default configuration, the priorities in ts_kmdpris happen to be exactly the same as the priorities used by system class processes, because the tunable parameter MAXCLSYSPRI is the same as the highest priority in ts_kmdpris. These priorities produce good performance in most environments, but the overlap is not necessary. The scheduler introduces a logical separation between the priorities of system processes and sleeping time-sharing processes; you can configure a machine so that the two sets of processes have different ranges of global priorities.