This paper presents a progress report and details on developing a multiprogramming system. A set of mutually synchronized sequential processes are responsible for the functioning of the system. These are layered in a hierarchy of 6 levels in each of which one or more abstractions have been implemented. The author emphasizes that this layered approach has simplified development and testing efforts. The Appendix describes semaphores, a synchronization mechanism developed in the system and a proof of the author’s claim that a multiprogramming system can be designed in such a way that its logical correctness can be proved a priori.


In the goal to process continuous flows of user programs smoothly, problems include,

  • reduce turn-around time for programs of short durations
  • use peripheral devices economically
  • control backing store and central processor automatically and economically
  • use the machine economically with only general purpose computers


Contribution made through this paper are Distinct between memory units(“pages”) and corresponding information units(“segment”). Created independent identification mechanism for segments, with which the drum page with the minimum latency is selected and get rid of the drum allocation problem.

Arrange the whole system as a society of sequential processes and progress them accordingly. This helps to make sequential processes execute in different speed rate and easier to switch between each other.

Build the system in a strict hierarchy.

Level 0: allocate process, achieve quick response;

level 1: segment controller, further abstract storage pages;

level 2: message interpreter, taking care of conversation between operator and higher level processes, abstract that each process has its private conversational console;

level 3: buffering inputs and unbuffering outputs;

level 4: independent user programs;

level 5: the operator


Experience in design and reasoning helps meet requirements with mutually synchronization; traditional approaches are also needed; doing early test of components and the consequence shows the hierarchical design of system is useful.

Extra question

There are few confusions such as it specially notes that the system is not a multiaccess one, as there is no common data base for users to communicate with each other. How do they achieve communication if they need to? Or does it mean there is no communication between users at all in a multiprogramming system?


Hansen, P. (2019). The nucleus of a multiprogramming system.