Définition

Un système d'exploitation (SE) ou operating system (OS) en anglais est un ensemble de programmes permettant de diriger l'utilisation des ressources d'un système informatique par des applicatifs. Il assure le bon fonctionnement d'un ordinateur. Il offre aussi une vue plus abstraite et simple pour l'utilisateur que la vue matérielle. Le système d'exploitation est la première couche logicielle dans un système informatique. Pour illustrer cela voici un schéma très simplifié.

Schéma SE au sein d'un ordinateur

Le système d'exploitation fournit aux applications des interfaces standardisées pour accéder aux différents composants matériels. C'est lui qui assure la liaison entre l'utilisateur, le matériel et les applications.

On rattache souvent la notion de système d'exploitation aux ordinateurs, mais cette dernière peut être présente sur des machines en général (automates, systèmes embarqués, etc...).

Rôles du système d'exploitation

Le système d'exploitation assure plusieurs rôles au sein d'un ordinateur. Voici les différents rôles qu'il occupe :

  • Gestion du matériel
  • Gestion des processus
  • Gestion de la mémoire
  • Gestion du système de fichiers
  • Gestion des entrées/sorties
  • Gestion de l'interface utilisateur
  • Sécurité et gestion des droits

Nous allons dans cette partie de l'article expliquer ces différents rôles de manière simple.

Gestion du matériel

L'OS contrôle les composants matériels de la machine tels que la mémoire vive (RAM), le processeur (CPU), le disque dur, le réseau, la carte graphique (GPU) et les périphériques. Il va ici allouer aux différentes applications les ressources dont elles ont besoin pour fonctionner tout en s'assurant que les applications n'utilisent pas trop de ressources ou n'empiètent sur les ressources réservées à d'autres applicatifs.

Gestion des processus

L'OS gère l'exécution des programmes en allouant des ressources pour chaque tâche. Il s'assure aussi que tous les processus s'exécutent bien de manière ordonnée et qu'ils n'interfèrent pas entre eux. Un processus est un ensemble d'instructions qui s'exécute.

Exemple : Il va allouer aux différents applicatifs des ressources (processeurs, mémoire, ect...) minimales et maximales pour éviter qu'un processus utilise toutes les ressources disponibles et sature donc le système.

Gestion de la mémoire

Alloue et libère la mémoire pour les différents programmes. Le système de gestion de mémoire du système d'exploitation a pour rôle de répertorier les emplacements libres de la mémoire et de les mettre à jour en fonction de l'allocation de la mémoire au processus, mais aussi de récupérer la mémoire d'un processus terminé. La gestion de la mémoire s'assure aussi que les programmes n'utilisent que la zone mémoire qui leur est allouée. Pour cela, le système de gestion de mémoire fait croire au processus qu'il a toute la mémoire de disponible.

Gestion du système de fichiers

Le système d'exploitation a aussi pour rôle la gestion du système de fichiers. C'est lui qui contrôle l'accès aux fichiers que ce soit en lecture, en écriture et en exécution dans le système de fichiers. Il fournit aussi les fonctions de lecture, modification et suppression des fichiers.

Gestion des entrées/sorties

La gestion des entrées et sorties permet d'utiliser et contrôler l'accès des programmes aux ressources matérielles par l'intermédiaire de pilotes. Cette gestion permet notamment aux périphériques comme le clavier et la souris de fonctionner. Quand on saisit du texte avec un clavier, il s'agit d'une entrée. Ce texte tapé en entrée, est par exemple ensuite affiché sur un écran qui est notre sortie.

Gestion de l'interface utilisateur

Interface permettant aux utilisateurs d'interagir avec le système, au travers d'une interface plus conviviale et moins abstraite que l'interface machine. Cette interface peut être une interface en ligne de commande (CLI) ou d'une interface graphique (GUI).

Sécurité et gestion des droits

Le système d'exploitation gère le système de permissions qui permet d'assurer la sécurité et l'accès à l'exécution des programmes. Il garantit qu'un programme est exécuté par un utilisateur disposant des droits adéquats. Ce qui permet de restreindre l'accès aux différents fichiers.

Pour résumer, le système d'exploitation a pour rôle de gérer les ressources et d'offrir des services pour les applications installées.

Architecture générale d'un système d'exploitation

Nous allons à présent nous intéresser à l'architecture d'un système d'exploitation. Afin de fournir une vue plutôt globale de l'architecture des OS, nous allons présenter une architecture généraliste que l'on retrouve globalement dans toutes les familles de système d'exploitation que ce soit Windows ou UNIX.

Un OS est un modèle en couche, il est donc composé de plusieurs niveaux, qui sont le noyau (kernel) et l'espace utilisateur. Voici un schéma simplifié et généraliste de l'architecture d'un OS.

Schéma de l'architecture d'un OS

Le noyau

Le noyau tourne avec le niveau de privilège le plus élevé disponible, il dispose d'un contrôle total sur le matériel et sur les composants supérieurs. Il est le premier programme à se charger au démarrage d'une machine. Le noyau assure la majorité des rôles d'un système d'exploitation. La plupart des systèmes d'exploitation sont conçus autour d'un noyau.

Types de noyaux

Il existe trois types de noyau.

Les noyaux monolithiques conçus en un seul bloc tout intégré. Il est plus rapide du fait d'être un seul bloc, mais cela le rend aussi plus complexe. Le noyau Linux est un noyau monolithique.

Les micro noyaux sont des noyaux minimaux. Il embarque très peu de services et de fonctions. L'utilisation de ces types de noyau a pour effet de faire tourner beaucoup plus de services au niveau de l'espace utilisateur.

Les noyaux hybrides, comme son nom l'indique, il s'agit d'un mix des deux premiers. Ce type de noyau permet de bénéficier des avantages des deux types. C'est ce type de noyau qui est utilisé pour MacOS et le noyau Windows NT.

Les rôles du noyau

Le noyau joue un rôle important au sein d'un système d'exploitation. C'est lui notamment qui s'occupe des tâches suivantes :

  • Gestion des processus (scheduler, création/suppression de processus, multitâche)
  • Gestion de la mémoire (allocation, pagination, segmentation)
  • Système de fichiers (accès, création, suppression, permissions)
  • Gestion des périphériques (drivers, interruptions)
  • Sécurité et privilèges
  • Appels systèmes (syscalls) (Interface entre espace utilisateur et noyau)

Comme indiqué plus tôt, le noyau remplit une grande partie des rôles du systèmes d'exploitation.

Appels systèmes (syscalls)

Malgré qu'il soit en partie gérer par le noyau, les appels systèmes sont essentiels. Il s'agit de la frontière entre le noyau et l'espace utilisateur.

Espace utilisateur

L'espace utilisateur est l'environnement où tournent les applications utilisateurs. C'est au sein de l'espace utilisateur que l'on retrouve l'interface graphique et la ligne de commande. On y retrouve aussi les bibliothèques systèmes qui sont joignables au travers des API. De plus, les applications et services installés par l'utilisateur s'exécutent aussi au sein de cet environnement.

Exemple de fonctionnement

Pour comprendre un peu mieux le fonctionnement d'un système d'exploitation, voici ce qui se passe quand on lance une application. Nous prendrons comme exemple l'ouverture d'un fichier avec l'application bloc note.
Etape 1 : Le système identifie le fichier exécutable.

Etape 2 : Création d'un nouveau processus de l'application exécutée.
Au cours de la création du processus, le noyau effectue différentes tâches :

  • Allocation de la mémoire
  • Lecture de l'exécutable
  • Initialisation les instructions

Etape 3 : Charge le code en mémoire.
Chargement des librairies et variables en mémoire : permet de fournir des fonctions pour l'interface graphique et les entrées sorties notamment.

Etape 4 : Initialisation de l'interface graphique.

Etape 5 : Donne le contrôle à l’application.
L'utilisateur peut alors effectuer des clics et frappes clavier dans l'application. Les événements sont alors traités lorsqu'un élément les déclenche : Exemple un clic sur la croix pour fermer l'application va envoyer un signal de fin de processus.

Les grandes familles de système d'exploitation

Pour finir cet article, il existe aujourd'hui deux grandes familles de systèmes d'exploitation sur nos ordinateurs. Le premier qui est aussi le plus ancien est UNIX. C'est sur ce dernier que reposent les systèmes comme Linux, BSD et MacOS. Le second est Windows à la différence d'UNIX, Windows est propriétaire. C'est notamment pour cela qu'on ne le retrouve que dans les OS de Microsoft.

Utilisation des OS en février 2024