Introduction vague aux systèmes d’exploitation

Orestis Malaspinas, Steven Liatti

Avant-propos

Ce chapitre est fortement inspiré du cours en ligne Introduction to Operating Systems se trouvant sur https://classroom.udacity.com/courses/ud923.

Généralités sur les systèmes d’exploitation

Dans ce chapitre, nous allons brièvement introduire ce qu’est un système d’exploitation (ou Operating System, abrégé OS, en anglais) et comment il fait fonctionner un ordinateur. Mais avant de donner une vague définition de ce qu’est un système d’exploitation, nous allons d’abord rappeler en quoi consiste un ordinateur.

Un ordinateur est constitué de plusieurs composants: un ou plusieurs processeurs (ou Central Processing Units, abrégé CPU, en anglais) qui peut contenir plusieurs cœurs, de la mémoire, une carte réseau ou wifi, une carte graphique, un disque dur, des périphériques USB, … Tous ces composants seront utilisés par une ou plusieurs applications (le butineur, le lecteur multimédia, l’éditeur de texte, Dota 2, …).

Qu’est-ce qu’un système d’exploitation?

Le système d’exploitation est une couche de logiciel qui fait le lien entre les applications et les différents composants matériel d’un ordinateur. Il n’existe pas de définition unique de ce qu’est un système d’exploitation. Nous allons plutôt le définir ici par les tâches qu’il est capable d’effectuer:

  1. A un accès privilégié direct au matériel.
  2. Il cache la complexité du matériel à l’utilisateur et aux développeurs d’applications.
  3. Il gère les ressources matérielles. Quelle application peut utiliser quelle ressource et à quel moment elle peut le faire (leur ordonnancement).
  4. Il isole et protège les ressources. Il empêche que plusieurs applications utilisent les mêmes parties des ressources au même moment. En particulier, différentes applications n’ont pas accès à la même partie de la mémoire en même temps.

Exemple 1

Lorsqu’on lit ou on écrit de la musique sur une mémoire USB et le disque dur d’un ordinateur, à aucun moment il y a besoin de réfléchir où exactement sur le disque, nous allons écrire/lire les bits des fichiers. Il empêche qu’un fichier soit écrasé sans que l’utilisateur le veuille. De plus, il n’y a pas de différence notable entre les deux pour un utilisateur alors que le chemin pour accéder à l’un ou à l’autre est très différent. De plus, à aucun moment il n’y a besoin d’ordonnancer les différentes applications sur le processeur. Toutes ces opérations complexes sont effectuées pour nous par le système d’exploitation.


Quels systèmes d’exploitation connaissez-vous?

  1. Windows.
  2. Mac-OS (BSD), Linux: basé sur Unix.
  3. Android.
  4. iOS.
  5. ….

Dans cette introduction, on va plutôt discuter les systèmes Linux.


Quiz 1

Choisissez parmi les possibilités suivantes quels sont les différents composants d’un système d’exploitation:

  1. Un éditeur de fichier.
  2. Un système de fichier.
  3. Un driver de carte graphique.
  4. La mémoire cache.
  5. Un compilateur.
  6. Un ordonnanceur.

De quoi est constitué un système d’exploitation

Il y a trois concepts de base qui constituent un système d’exploitation.

  1. Les abstractions: comme les processus, les fils d’exécution (ou threads), les fichiers, les socket, les pages mémoire, …
  2. Les mécanismes: la création, l’ordonnancement des processus/threads, lire/écrire dans dans un fichier, allouer/désallouer de la mémoire, …
  3. Les politiques: qui déterminent comment les mécanismes vont utilisent les abstractions du matériel sous jacent.

Exemple 2

Afin de gérer de la mémoire, le système d’exploitation utilise l’abstraction de la page mémoire. Une page mémoire correspond à une adresse de taille fixe (4kb par exemple). Le système d’exploitation va également avoir des mécanismes pour interagir avec cette page: allouer la page dans la mémoire, ou la maper dans l’espace d’adressage d’un processus pour qu’il puisse accéder à ce qu’il y a dans cette page mémoire. Cette page peut être déplacée dans la mémoire ou même sur le disque dur s’il y a besoin de faire de la place dans la mémoire (swapping). Ces dernières actions sont basées sur la politique du système d’exploitation. Une façon de décider si une page doit être copiée sur le disque dur peut être de prendre la page qui a été utilisée le moins récemment.


Mécanismes de protection d’un système d’exploitation

Le système d’exploitation doit contrôler et gérer les ressources matérielles d’un ordinateur. Pour ce faire il doit avoir des privilèges particuliers pour accéder aux différents composants. Il y a deux modes principaux d’accès au matériel:

  1. Le mode utilisateur (sans privilèges).
  2. Le mode “noyau” (avec privilèges).

Le système d’exploitation opère évidemment en mode noyau, alors que les applications (processus) eux opèrent en mode utilisateur. Il existe une barrière ne permettant pas aux applications d’effectuer des opérations privilégiées sur le matériel, seul le système d’exploitation peut les effectuer. Cette barrière est directement supportée par les matériel. En fait, si un processus tente d’effectuer directement une opération réservée au mode noyau, la tentative sera capturée et la main sera passée au système d’exploitation pour gérer ce qu’il convient de faire. Afin qu’une application puisse effectuer une opération privilégiée elle doit passer au travers du système d’exploitation, via un appel système. Un appel système est une interface qu’expose le système d’exploitation afin de permettre aux processus d’effectuer de demander au système d’exploitation d’effectuer une opération privilégiée pour eux. Par exemple, open(file) pour ouvrir un fichier, mmap(memory) pour allouer de la mémoire, créer un fil d’exécution, …

Résumé

Dans ce chapitre, nous avons très brièvement discuté ce qu’est un système d’exploitation. Il permet de cacher la complexité du matériel aux applications en mettant en place des abstractions et des mécanismes qui permettent de contrôler le matériel et de protéger les applications entre elles, et de les isoler. De plus il sert à gérer les différentes applications qui sont exécutées sur un ordinateur.

Dans le chapitre suivant, nous allons voir ce qu’est plus en détail une application (ou processus) et comment différents processus sont gérés par le système d’exploitation.