7.3 Queues
The structure of the process descriptor block is shown in Table 7.1. When the process
is not executing, it contains the saved work space pointer and instruction pointer of the
process, plus a queue link if the process is in a queue.
Figure 7.3 illustrates a descheduled process.
Code
Process descriptor block
Iptr
Work space pointer
Link
Process
local
work space
(stack)
Task descriptor
Next process
Figure 7.3 A descheduled process
7.3 Queues
There may be any number of processes waiting for execution, so a queue (i.e. a linked
list) of waiting processes is formed, called the scheduling queue. This is an example
of a general queue supported by the instruction set for queueing waiting processes.
A queue is a linked list of process control blocks, formed by links included in the
process control blocks. Each link points to the control block of the next process in the
queue unless it is the last in the queue, which is undefined.
The front and back pointers of a queue are held in a queue control block, as shown in
Table 7.2. The queue control block is held in memory, and the address of the block is
the identifier of the queue .
Word offset
1
0
Slot name
q.BPtrLoc
q.FPtrLoc
Purpose
The back of the queue.
The front of the queue.
Table 7.2 Queue control block
A complete queue is illustrated in Figure 7.4. In the case of the scheduling queue, the
control block is stored at the reserved address called SchedulerQptr (which has the
80/205
®