506 THE PDP-10 FAMILY
The original PDP-6 Monitor was less than 6 Kwords. The Monitor has increased at about 25 percent per year with the KA10 at 30 Kwords, KI10 at 50 Kwords, and KL10 at 90 Kwords (Figure 7). This increase provided increased functionality (e.g., better files, batch, automatic spooling), larger system configuration size, more I/O options, increased number of jobs, easier system generation, and increased reliability (e.g., checking, retries, file backup).
Figure 7. Monitor and main utilities program size versus time.
Note that with a 16 Kword memory, a 9 Kword FORTRAN compiler with 5 Kword run-time package, and 1 Kword utility programs, two users could simultaneously reside in PDP-6 memory and use the machine for program creation and checkout. By keeping the Monitor program size small, subsequent functionality increases kept the Monitor module sizes in bounds such that program swapping was reduced. This provided high performance for a given configuration with little Monitor overhead.
Table 6 summarizes the development of the Monitor with the various systems. The facilities are arranged beginning with basics. The following sections deal with the various facilities, in turn.
Memory Protection Swapping. The basic environment was discussed in the ISP section on Multiprogramming/
Facilities Allocator. The Facilities Allocator was a module called from a console or program for an I/O device or memory space request. This module would attach (or assign) a given peripheral or contiguous physical memory area to a given job. Although this module was relatively trivial initially, it evolved to a more complex module because improper resources allocation caused deadlocks.
The KA10 generation software introduced queued operation. A line printer (output), paper tape (input/output), and a card reader (input) spooler were implemented. These spoolers ran as timeshared jobs, accepted requests from other user jobs, and managed the input/output operation.
Program Scheduler. The scheduler was invoked by line frequency (50 or 60 Hz) interrupts to examine run queues and to determine the next action. The first Monitor employed a round-robin scheduling algorithm. At the end of a given time quantum of 500 milliseconds, the next job was run. A job was runnable if it was not stopped by the console and was not waiting for I/O.
Because terminal response time is the user's measure of system effectiveness, subsequent scheduler improvements have favored interactive jobs. With the KA10, separate priority queues were added so that jobs with substantial computation were placed in the lowest priority and then run the longest without interruption. This, in effect, approximated batched operation; for example, jobs from a card reader would operate as a batch stream. Later, batch operation was added for interactive users.
The introduction of disk/drum swapping caused additional complexities since runnable jobs might be located in secondary memory.