Qu’est-ce qu’un Système d’Exploitation ?

Un système d’exploitation (OS - Operating System) est comme le chef d’orchestre de votre ordinateur. Imaginez-le comme un gestionnaire qui coordonne tout ce qui se passe dans votre machine, régit par des algorithmes.

Analogie simple

Pensez à un restaurant :

  • Le système d’exploitation = le maître d’hôtel
  • Les utilisateurs = les clients
  • Les programmes (Word, Chrome, jeux) = les plats
  • Le matériel (processeur, mémoire, disque) = la cuisine et les ressources

Le maître d’hôtel s’assure que chaque client soit servi correctement, dans le bon ordre, que la cuisine ne soit pas surchargée, et que tout fonctionne harmonieusement. D’un point de vue technique l’OS est là pour offrir au programmeur une interface uniforme, portable et sécurisé. (La JVM fais donc redondance a cette égard mais corrige le problème de portabilité inter-système et inter-matériel) bien qu’il existe aussi des alternatives C portables et plus performantes (posix).

Système d’Exploitation et noyaux

Le rôle du système est d’orchestrer les processus et le matériel.
Il assure notamment :

  • Le lancement de programmes
  • Le basculement entre processus (ordonnancement)
  • La gestion de la mémoire et du matériel (lecture, écriture, horloge, etc.)
  • Le cloisonnement entre utilisateurs et processus (sauf cas particuliers).
  • Isolation des processus pour éviter qu’un programme plante le reste du système.
  • La sécurité : authentification, gestion des droits, isolation mémoire

En pratique, le kernel met seulement à disposition tous les mécanismes nécessaires, mais ce sont des programmes spécifiques qui assurent leur mise en œuvre :

  • Authentification : gestion des utilisateurs, mots de passe
  • Gestionnaire de fenêtres : XFCE, Gnome, KDE, Explorer…
  • Installation des applications : apt, installeur windob, etc.

L’OS est donc en réalité un ensemble de programmes organisés autour d’un noyau unique. C’est la cohérence de cet ensemble qui donne vie au produit visible pour l’utilisateur. Des systèmes comme Windows, macOS ou Android sont avant tout des produits destinés aux consommateurs, avec une orientation vers l’ergonomie, l’expérience utilisateur et la compatibilité matérielle.

À l’inverse, les systèmes open source comme Linux, Haiku-OS ou SailfishOS s’adressent davantage à un public technique, désireux de personnaliser, configurer, comprendre ou même modifier leur système selon leurs besoins. Ces systèmes sont également largement utilisés dans les serveurs, l’embarqué et la recherche, où la flexibilité, la performances et la transparence priment sur le côté « clé en main ».

Architecture générale du système d’exploitation

graph TD A[Utilisateur] --> D4 D5 --> A B[Applications] B <--> |syscall|C[Noyaux] C <--> |interupt| D[Matériel] B1[Word] <--> |syscall| C B2[Chrome] <--> |syscall| C B3[Jeux] <--> |syscall| C B4[Window] <--> |syscall| C C <--> |interupt| D1[Processeur] C <--> |interupt| D6[Caches] C <--> |interupt| D2[Mémoire RAM] C <--> |interupt| D3[Disque Dur] D4[Clavier/Souris] --> |interupt| C C --> |interupt| D5[Écran]

Les dialogue entre application et le noyaux s’appel simplement des appels systemes (ou syscall pour system call en anglais). Cela correspond a l’espace utilisateur. De l’autre coté, le dialogue entre la matériel et le système s’appel en général des intéruptions (ou interupt en anglais) car cela fais référence a ces principes physique sous-jacent, ici c’est l’espace noyaux (ou kernel en anglais).

Kernel et Userland

Un OS est donc généralement divisé en deux mode d’éxécution :

  • Le kernel : cœur du système, responsable de la gestion de la mémoire, du CPU, des périphériques et de la sécurité.
  • L’espace utilisateur (userland) : bibliothèques, shells, gestionnaires graphiques, applications, services.

Par exemple, le programme responsable de l’interface graphique pourra être lancé par un utilisateur spécifique (super-user / root) et dialoguer avec les programmes utilisateurs grâce à des mécanismes (tels que l’IPC, que nous verrons plus tard), de manière sécurisée.

Type de noyaux

Monolithique : Tout est dans le noyau : gestion mémoire, gestion des processus, pilotes de périphériques, systèmes de fichiers, etc.

  • Exemples : Linux (avant la 2.0 : 1996), MS-DOS
  • Avantages : Performances élevées (tout est intégré directement au noyau). Accès direct et rapide au matériel.
  • Inconvénients : Si un bug se produit dans un module (ex. pilote), il peut faire planter tout le système.
graph LR A1[Applications] -->|syscall| B1[Noyau unique] B1 --> |interupt|C1[CPU/Mémoire/Drivers]

Micro-noyau : Le noyau est réduit au strict minimum : gestion du CPU, de la mémoire et de la communication entre processus. Les autres services (systèmes de fichiers, pilotes, gestion réseau, etc.) tournent en espace utilisateur.

  • Avantages Plus stable : un crash dans un service n’affecte pas le noyau. Plus sécurisé et plus modulaire (un peu comme Java).
  • Inconvénients : Performances moindres à cause des nombreux échanges entre noyau <-> services. Non donc jamais percé.
graph LR A2[Applications] <-->|IPC| B2[Noyau minimal] B2 <--> |interupt|C2[CPU/Mémoire de base] A2 <--> |IPC|S1[Service Fichiers] A2 <--> |IPC|S2[Service Réseau] A2 <--> |IPC|S3[Pilotes] S1 <--> |syscall| B2 S2 <--> |syscall| B2 S3 <--> |syscall| B2

Hybride : Un compromis entre monolithique et micro-noyau. Certains services restent dans le noyau pour les performances, d’autres sont isolés en espace utilisateur.

  • Exemples : Linux, Windows NT (et donc Windows 10/11), macOS (XNU), iOS
  • Avantages : Bon compromis entre rapidité et modularité.
  • Inconvénients : Complexité plus élevée. (certains services peuvent encore planter le système : ex blue screen).
graph LR A3[Applications] <-->|syscall| B3[Noyau hybride] B3 <--> |interupt|C3[CPU/Mémoire] B3 <--> |interupt|D3[Drivers internes] A3 <--> |IPC| S4[Services externes]

Exokernel : Philosophie différente : le noyau est ultra-minimaliste et n’impose pas de services. Il se contente de gérer les ressources matérielles et laisse les programmes utilisateurs définir leur propre gestion (par exemple, leur propre système de fichiers).

  • Avantages : Grande flexibilité, performances maximales (aucune abstraction inutile), obligatoire pour l’embarqué.
  • Inconvénients : “Complexe” à programmer. Pas du tout “user-friendly”.

Cas spécial des RTOS

Les systèmes d’exploitation temps réel (RTOS, Real-Time Operating System) ne correspondent pas strictement à un type de noyau « monolithique » ou « micro-noyau » dans le sens classique. Leur classification dépend de l’implémentation du noyau et de la façon dont ils gèrent la planification et les priorités des tâches. Leur caractéristique principale est de garantir des temps d’exécution encadrés, c’est-à-dire que chaque tâche critique doit être exécutée dans un délai prédéfini, quel que soit l’état du système ou la charge.

Les system RTOS sont utilisé dans tous les domaines critiques nécéssisant des certifications. La où chaque milliseconde compte pour la sécurité, l’impossibilité de tolérer des retards ou des plantages, pour garantir des bande passante et de la qualité du service.

  1. Automobile
    • Contrôle moteur (ECU – Engine Control Unit)
    • Systèmes de freinage ABS
    • Airbags et systèmes de sécurité passive
    • Voitures autonomes (gestion des capteurs, décisions en temps réel)
  2. Aérospatial et défense
    • Satellites et sondes spatiales
    • Avions et drones militaires
    • Systèmes de radar et de contrôle de mission
  3. Télécommunications
    • Stations de base pour réseaux mobiles
    • Routeurs et commutateurs haut-débit
    • Protocoles temps réel pour VoIP ou vidéo conférence
  4. Industrie / automatisation
    • Machines et robots industriels, où la coordination des mouvements et capteurs est critique.
  5. Santé et médical
    • Respirateurs, appareils d’IRM ou scanners, pompes à insuline.