The second episode brings us to a breakthrough moment — when the computer stopped waiting for the operator and started managing itself.
Between 1956 and 1962, three pioneering batch systems were created: GM-NAA I/O for the IBM 704, and later EXEC I and EXEC II for the UNIVAC 1107. They defined the concept of the resident monitor and introduced early forms of multiprogramming.
Context: The Time Gap Between CPU and Operator
By the late 1950s, the IBM 704 processor could perform over 12,000 floating-point operations per second – yet it took an operator minutes to load the next card deck. This waste of computing power forced developers to automate job queuing and I/O management.

IBM 704 console with GM-NAA I/O being loaded by Lawrence Livermore National Laboratory, public domain.
GM-NAA I/O (1956) – The First “True” Operating System
| Feature | Value | Significance |
|---|---|---|
| Machine | IBM 704 | First computer with ferrite-core memory |
| Memory | 4,096 words (36-bit) | Only 2 KB reserved for the monitor |
| Key Function | Automatic job chaining | Eliminated idle CPU time |
| Reach | ≈40 installations | Set a standard in mainframe environments |
Developers at General Motors and North American Aviation created a library of I/O routines and a small, resident code segment that never left memory.
After one job finished, the monitor would read the next control cards (// JOB, // XEQ) and automatically load the next program.
Innovations in GM-NAA I/O
- Tape spooling – Input/output data was buffered on a magnetic drum to keep the CPU busy continuously.
- Gantt chart scheduling – Robert Patrick planned parallel I/O using Gantt-style diagrams.
- SHARE Operating System – A user community expanded GM-NAA I/O, adding support for IBM 709.
EXEC I (1962) – UNIVAC’s First Batch System with Multiprogramming
UNIVAC 1107, equipped with thin-film memory (65,536 words), required an ambitious new OS.
| Parameter | EXEC I | Consequences |
|---|---|---|
| Type | Batch + limited multiprogramming | Multiple jobs in memory → improved throughput |
| Control Language | RDL (Run Description Language) | Prototype of JCL |
| Max Logical Space | 64K words per program | Early memory segmentation |
| Security | No memory protection | “Locks and trust” policy |

UNIVAC 1107 Thin-film Memory Computer – Uniservo 2A Knudsens Fotosenter, Creative Commons Attribution 4.0
Key EXEC I Modules
- Job Controller – Interpreted *CONTROL cards
- Core Manager – Allocated dynamic 8KB memory segments
- I/O Channel Supervisor – Asynchronous DMA for 12 Uniservo IIA tape drives
EXEC II (1963) – When a Compiler Contract Spawns an OS
Computer Sciences Corporation, under contract to develop COBOL for UNIVAC, needed a runtime environment before EXEC I was complete.
Thus EXEC II was born – an OS created “in passing.”
| Attribute | EXEC II | Impact |
|---|---|---|
| Developer | CSC under UNIVAC contract | Outsourced OS development |
| Mode | Single-stream batch + spooling | Simpler but stable |
| Reputation | Ran the first COBOL-1107 compiler | Brought COBOL into industry |
| Legacy | Code carried into EXEC 8 / OS 1100 | Continued into Unisys Dorado |
Document downloaded from: https://www.fourmilab.ch/fourmilog/archives/2017-11/001731.html
Comparison of the Three Pioneers
| Criterion | GM-NAA I/O | EXEC I | EXEC II |
|---|---|---|---|
| Release Year | 1956 | 1962 | 1963 |
| Platform | IBM 704 | UNIVAC 1107 | UNIVAC 1107 |
| Work Mode | Batch-queue | Batch + multiprog | Batch + spooling |
| Control Language | // cards | RDL | RDL-Light |
| Memory Protection | None | 64K segmentation | None |
| Legacy | SHARE OS, MVT | EXEC 8 → OS 1100 | EXEC 8, OS 2200 |
Key Architectural Milestones
Resident monitor – Permanent in-memory code, the kernel’s ancestor
Segmentation – From EXEC I’s 0-bank/1-bank model to EXEC 8’s full relocator
Spooling – Multi-threaded I/O buffering prototype, precursor to print/email spoolers
Control language – // JOB, // XEQ → JCL → modern .yaml files in CI/CD systems
Legacy and Impact
Though GM-NAA I/O, EXEC I, and EXEC II vanished from production before 1970, their innovations live on in every modern OS.
Kernel code, batch queues, memory relocation, and task scripting remain pillars of servers, clouds, and HPC clusters.
In the next episode, we’ll see how IBM OS/360 and MULTICS evolved these ideas into full-fledged multi-user systems.

