The design of computer operating systems is subject to a tension between two conflicting objectives: to improve user comfort; effectively exploit the physical resources of machines. The beginning of the history of these systems reflects the coming and going of these objectives.
1. A dual function
In an ideal world, as desired by the author of the above quotation, the constructs of a programming language could be directly implemented on a computer, through an appropriate layer of software. In reality, we note that a number of services (file management, input-output, graphical interfaces, security, etc.), are not the responsibility of a language but rather a common stewardship of various languages . To fill the gap between the constructions of a language and the interface of the physical machine, it is therefore necessary not one, but two intermediate layers of software. The operating system, in contact with the physical machine, transforms it into an ideal machine (virtual) providing the upper layer the stewardship services deemed adequate; this last layer uses these services to allow users to implement the languages they need. These languages, in turn, are used to implement the applications. This is summarized in the figure below.
Organization of a computer system.
The reality is however more complex. On the one hand, the number of layers is greater and the separation between them often less clear; it can also be smaller, with one or more applications running directly in place of the system. On the other hand, the scheme described is that of a single user. The computer can also be shared between several users, and it is up to the operating system to create for each of them its own virtual machine, independent of those of others but able to share information with them.
The role of the operating system as an interface transformer involves another: that of managing the resourcesof the physical machine: processors, memories, communication devices. Managing resources means assigning them at all times to the activities that need them, preventing or resolving potential conflicts and respecting priorities. It is also necessary to manage the intangible resources (programs and data) by allowing, if necessary, their sharing between users and ensuring their durability and their security.
This double function – to provide a “convenient” interface, to allocate resources – makes the design of an operating system subject to two requirements: the first function favors user comfort (we can talk about ergonomics ); the second emphasizes efficiency, the optimal use of resources (this is a saving). The early history of the operating systems shows that, in the technical context of the time, these requirements were contradictory and that the tension between them was a major source of difficulty, the other source being the complexity of the resources managed and the distance between the existing physical machine and the ideal machine. The remainder of this document illustrates the balance between the objectives of economy and ergonomics, favoring successively one and the other, before the final arbitration, allowed by the technical evolution, in favor of ergonomics .
One can schematically distinguish three phases in the early history of operating systems, with recoveries over time. The first computers were experimental instruments for researchers; the question of efficiency did not arise and users had to learn how to develop their programs, in direct contact with the machine. This is the phase we call “prehistory”. The next phase is computers that are both rare and expensive, and used for real applications. We successively describe the race for efficiency with batch processing and the search for user-friendly time-sharing. Finally, the third phase (not discussed here) corresponds to the trivialization of less and less expensive personal computers. Ergonomics triumphs and economy takes second place, the computer has become a consumable product. While the individual use of the computer predominates, we conclude that the current systems are directly derived from the large time-sharing systems of the 1970s.