In traditional CPU scheduling (prior to MPE/iX Release 5.0),
system and user processes run in one of five scheduling subqueues: the
AS subqueue, BS subqueue, CS subqueue, DS subqueue and ES subqueue.
In this scheme, scheduling subqueue is both an entity and a process
attribute.
The scheduling subqueue as an entity has defined characteristics
(such as base and limit, the minimum and maximum
quantum, timeslice, and the boost property) that determine the scheduling
policies of processes running in that subqueue. You can think of
the scheduling subqueue as a dynamically changing
collection of processes. The scheduling subqueue is a process attribute when,
for example, a job is described as “having a priority of CS” or,
for example, when “a program is running at DM priority”.
Users with system supervisor (OP) or system
manager (SM) capability can affect the behavior of the scheduling subqueues as
entities. Such users may alter, or tune, the characteristics of the CS,
DS and ES scheduling subqueues. (These subqueues, which collect user processes,
are also known as the circular scheduling subqueues).
No users, regardless of capability, can alter the characteristics of the AS and
BS subqueues, which are reserved for system processes.
Users without special capabilities can influence the scheduling subqueue as
a process attribute through one of the following means:
Users can choose a scheduling subqueue via the ;PRI= option of the
HELLO, RUN or JOB commands. Such a change lasts for the duration
of the session, program, or job. Furthermore, the system manager constrains
the priority that a user can assign to a process via the MAXPRI option of
the NEWUSER, ALTUSER, NEWACCT, or ALTACCT commands.
Users can change the scheduling subqueue of a process via the ;PRI=
option of the ALTPROC command. Such a change lasts
until the process terminates or until the queue attribute is changed again.
Programmers (and system managers) can use one of two Link Editor options to
determine a program's scheduling subqueue when they are creating an executable
program file: the priority_level, to specify the default execution
priority at run time or max_priority_level, to specify the maximum
priority a program can have at run time. Within this limit, users can
alter the program's priority by issuing the ;PRI= option of the
RUN command.
Programmers can use either the AIFPROCPUT routine or the GETPRIORITY
intrinsic to change the scheduling subqueue of a process.