Review
DDT
The command system also creates lower level meters over many of the programs which it loads for its users. These meters are (currently) only used if the user wishes to halt one of its sibling programs. The meter is created with maximum resource values and no meter keeper. If the user requests the meter be emptied, a meter keeper domain is created for the meter. When the meter keeper is invoked, it checks to see if the interrupt is a valid trap or a "false" trap. If the interrupt is valid, the meter keeper calls a NEVER key, leaving itself busy. If the command system wishes to restart whatever processes may be trapped due to the meter being empty, it puts resources back in the meter, and fabricates a restart key to the meter keeper using its domain key. The subsequent "false" entries to the meter keeper are processed by the meter keeper directly to restart all trapped domains.
The typical action of the program on the other side of a meter gate might be to make a note of the event {perhaps for charging and producing detailed billing information} and replenishing the balance and restarting the program by means of the restart key. The system of superior meter pointers connects the meters together into a tree. The program that controls a meter node controls all of the programs that depend on that meter and the meters inferior to it.
Meters are used by the scheduler to control the minute to minute resource utilization so as to optimize multiprogramming. See (p3,muxmet) and (p2,supsched).
In applications that involve substantial amounts of computer resources and are done regularly and are associated with the operation of an organization {payroll, for example}, it is advisable to schedule the required resources ahead of time. To this end we propose a program, presumably written by Tymshare, with access to a meter that gives it effective access to the bulk of the computing resources over any span of a few seconds. This program is in a position to grant {for a price} commitments for computer resources during a specified time interval in the future. For this section we call these commitments (_resource contracts) or simply (_contracts). The business end of such a contract would be a meter that can provide the designated resources during the designated interval to any program running with that meter.
The nature of the guarantee is that so long as there is at least one process ready to use the meter during the interval then the designated resources will in fact be delivered. Compliance with this provision is monitored by the contract administrator with the "wait for no process" feature of a meter {(p1,noproc)}. There may be provisions for short periods of time with no process under the contract meter but these would have to be charged for as if there had been some headway. If the contractee {the system using the resources} needed to call other programs for substantial amounts of time it might be arranged that those programs be "certified for use under resource contracts". Prior arrangements at contract time must be made for the use of such programs; such an arrangement would consist of a front end, running under the contract meter, to the certified program. This front end would inform the contract administrator that the contractee was exercising his right to invoke the certified service, and not to penalize for the absence of a process under the meter.
A similar case arises when the contractee wants to use a segment that might have inordinate delays in servicing page faults. The NO_CALL bit of the segment key can be made to mark the beginning of such segment keeper services.
Resource contracts provide the contract administrator with the latitude of when to run the job. This is unacceptable for applications where there is interaction with things outside the control of the computer system such as terminals at the ends of circuits. In such cases the contractee requires a guarantee of a steady stream of computing within some duration of time. The above mechanism can provide this by creating a large number of very short contracts. If 1/3 of the machine were required we could make a sequence of consecutive 15 second contracts each of which would guarantee 5 seconds of resource.
Contracts with short durations would cost more per unit of resource than long contracts for two reasons: The administrator has fewer options of when to provide the resources and someone must pay for the core required to hold the pages until the next commitment begins.
Contracts must be able to require tape drives.