We make fun of Monsieur Jourdain who was prose without knowing it. But using a computer or a tablet, you unknowingly unleash a flood of underground programs, those of the operating system, whose important roles remain hidden to you.
The penguin is the symbol of Linux, a very popular free operating system.
Computer science is a young science, with many technical aspects and a strong industrial competition. Today, there is an operating system for every computer, tablet, mobile phone, and more generally any digital object, with on the market dozens of different operating systems. In their name, we often find the acronym OS for Operating System, in English. Even if manufacturers use different names to stand out from their competitors, common operating systems and invariants are found in all operating systems.
From a computer or a tablet, we first see the screen and the box that encloses the computer hardware – processors, memories, and input-output channels – but it is the software that it contains that we use.
Direct programming of the computer is laborious. The machine, built on the model of Von Neumann, is universal (see Interstices Under the sign of calculation, by Jean-Louis Giavitto and François Rechenmann and Alan Turing: from concept to machine, by Sacha Krakowiak). However, the language it recognizes, consisting of instructions and data, all coded in binary, is very difficult to use. The operating system comes to the rescue of the user, allowing him to operate the computer better than in machine language. But he does more than that.
Roles of the operating system
The purpose of an operating system is to make it easy for everyone to use the computer as if it were a fictional machine, its “virtual machine,” which would have been built for it. The system provides convenient and ergonomic access, for example with a screen with multiple windows and a graphical interface. Today, in 2015, there can also be a touch or sound interface.
The system stores programs and data of all kinds – text, images, videos, movies – in files prepared by the user or loaded from external media or via the network. Ideally, this primary role of information and file management should allow the user to specify only the logical aspects of his work.
The second role of the system, the execution control, consists of managing the resources – hardware and software – that are needed to launch and monitor the execution of local or remote applications. The system thus deals with the technological aspects and the constraints of use of the shared resources, whether they are allocated in turn, as are the processor and the printer, or divided, as are the memory and the memory. screen.
These two roles must be sustainable. For this, the operating system ensures – and this is its third role – the operational security in the event of an internal failure (hardware or software) or aggression from an increasingly open environment (the network). It automatically backs up the work in progress and makes sure to restart after a failure. It must also make possible a material evolution (change in the hardware configuration) or functional (update and add programs).
These roles are filled by services described in the operating system programs; the execution of these programs – and therefore services – is accomplished by the processes of the operating system.
A program is a passive entity, describing a sequence of instructions. A process is its dynamic counterpart, an active entity that represents the execution of this sequence of instructions by the computer.
Operating system representations of a computer An operating system can be considered from two points of view:
A “static” vision that corresponds to the hierarchical stacking of its programs,
A “dynamic” vision that accounts for program delivery by processes.
Static representation by programs
The computer operating system is a fantastic collection of programs and data that have been developed to provide the services required for each of the roles mentioned above. This information is cleverly stacked in layers that reflect the strong structuring of the construction: at the lowest level, we find the core programs that materialize the principles on which the construction of the system is based, then the programs that drive access to the system. material; Above, in ascending order, sometimes using the programs of the layers underlying them, come the operating system’s own services, community services, and finally the application programs intended for the user.
Fundamentals of building operating systems
This structured information stack forms a large database: the system files. Add user files stored on media managed by the operating system or accessed remotely over the network.
The speed of the processors and the very large capacity of the memory makes it possible to build very complex systems of considerable size which can reach ten gigabytes. For example, an operating system used for a laptop, the operating system Mac OS X 10.6, occupies about 5 GB in memory plus 5 to 15 GB for shared libraries.
Dynamic representation by processes
Many of the system programs that have their sources – codes and data – in these stacks of layers are expected to run concomitantly. They respond in real time to users’ explicit or implicit needs and react to random events from the environment. Sometimes it’s the same service that is requested simultaneously by multiple events or multiple users. The operating system can be led to managing the concurrent execution of several hundred programs. The competing, polysemic word evokes simultaneity – programs run together – and competition in the allocation of resources.
In order to identify these different concomitant executions, the term process was introduced. This word was used as early as 1960 in the Multics system. It is used to identify the sequence of a sequential program, among others, and distinguishes it from the text of the program.
The remainder of the historical context of the emergence of processes
The figure below schematizes this dynamic vision, which reflects the activity of the processes. It distinguishes between the processes of the system, the processes that are responsible for infrastructure and community services, and the processes that are specifically designed to provide a “virtual machine” for each user. Each of the processes is an abstraction of the physical processor.
Process and processors
The dynamic representation shows a swarm of processes, even though there are not enough physical processors to assign one to each. But physical processors have a speed about a million times greater than the reaction capacity of the user. This huge difference in speed is used to simulate program parallelism by sharing processors between processes – this is called pseudo-parallelism. The sharing is punctuated by a clock tick that triggers the interruption of the current process and the allocation of the processor to another process. This assignment is governed by a system kernel program, the scheduler. The figure below shows an example of sharing a processor (it is assumed here that there is only one) between four simultaneously triggered processes that use it one after the other, in sequential slices. successive. CPU allocation by the kernel also consumes CPU time.
The complexity of the operating systems is great, it results as much from the number and size of the programs involved as from the multiplicity of processes and their interactions. This great complexity makes illusory the “zero defect”! Today, we continue to develop new systems, while seeking an increase in their operational safety. For this, we begin to use automatic program certification techniques.
To understand the dynamics of an operating system in more detail, and to discover the processes that are triggered when a computer is launched, we invite you to read the article Process Ballet in an Operating System.