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.