The data flow for the Scheduler is depicted in figure 1. The diagram shows the various types of observing programs which will be run in various phases of execution.
The main observing program is obs prog which has requested a scan and had it granted. The Scheduler informs all required resources (device servers) e.g. steer and noise diodes, of the new valid scan id. This immediately invalidates the previous scan id.
Other programs will wait for end of the scan for the resource (e.g. the telescope) to be freed before they gain access to it. A process waiting for a resource (queued obs prog) can go into a sleep state waiting for the scheduler to wake it up or it can go off and do something and then request a new scan at a future date.
The Scheduler periodically wakes up (periodic check loop) and checks the validity of the current scan to see if it has terminated or expired. It also checks the list of background monitoring programs to see if any new programs have been added to the list and if it is time to schedule one of the background programs. If one of the background programs is to be scheduled the Scheduler will spawn it and wait for it to start up. As soon as the program starts it should request a scan id and have it granted.
Finally there is an example of a interactive observing program (obsh) running at low priority which will have access to resources which are presently not being used.