[comp.os.vms] Thoughts On The Whereabouts Of The NULL Process, And Other Topics...

CLAYTON@XRT.UPENN.EDU ("Clayton, Paul D.") (08/04/88)

The recent bout of articles about the state of the 'null process' has 
prompted me to hopefully ice this topic, as there has been some close calls, 
but no direct hits.

The null process is now reduced to nothing more then a vector address to a 
Proccess Control Block (PCB), which is used to have the VMS Scheduler point to
SOMETHING, instead of writing exceptions into the code. The null process 
itself is now 'run' at IPL 3 and done on the interrupt stack.

There is essentially a loop in the null process which is looking at a longword
(32 bits) that represent each level of priority that a process can execute at.
If a process is resident and computable a bit is set in this longword for the 
specified priority level for that process. EACH CPU in a box COULD be looking 
at this longword and waiting for something to do. When a CPU, 'running' the 
null process 'sees' a bit set here, it attempts to gain control of the spin 
lock for the Schedular. If the CPU gets control, it can then execute the 
highest level priority job available. It will be guarenteed of at least one 
job being computable as it got control of the spin lock. The schedular then 
will select the appropiate job, tell the CPU where it is and start it up on 
that CPU. It will then update this longword, as needed, to show more jobs 
that may be computable at the various priorities.

The one item about the 'null' time. It is now part of the interrupt stack and 
therefore the true interrupt time is the current total interrupt time minus the 
current total 'null' time.

Hope this helps out... ;-)
pdc

Paul D. Clayton 
Address - CLAYTON%XRT@CIS.UPENN.EDU

Disclaimer:  All thoughts and statements here are my own and NOT those of my 
employer, and are also not based on, or contain, restricted information.