MODULE 1 : FONDEMENTS AVANCES DES SYSTEMES
D’EXPLOITATION
1. Généralités sur les Système d’exploitation
Un système d’exploitation est un programme qui a pour rôle de connaitre
l’utilisateur d’une ressource, d’en accorder l’usage et de gérer les conflits d’accès.
Il a également pour rôle la gestion de processeur, de la mémoire et des entrées
sortis. Ils constituent la couche logicielle essentielle permettant l’exécution des
programmes, la gestion des ressources matérielles et l’interaction avec les
applications. Dans un contexte de calcul intensif, d’IA et de systèmes distribués,
les fondements avancés des SE sont indispensables pour comprendre les
architectures modernes, les performances et la scalabilité.
- Interface entre les applications et le matériel
- Rends le matériel utilisable par le programmeur
- Evite qu'un utilisateur/processus puisse lire/détruire les données d'un autre
utilisateur/processus
2. Architecture de Von Neumann
Architecture de John von Neumann et ses collaborateurs.
Les ordinateurs sont structurés en unités séparées,
fonctionnellement différentes :
- L’unité de calcul (Unité Arithmétique et Logique)
- L’unité de contrôle
- La mémoire interne
(programme et données)
- Les unités d’Entrées/sorties
2.1. Unité Arithmétique et Logique
3 parties :
- Les registres qui sont des unités de stockage.
1
- Les circuits de l’UAL qui effectuent les opérations (calcul ou
logique).
- Les voies de circulation dans l’UAL (bus de commandes et
de données).
2.2. Unité de contrôle
- Cherche dans la mémoire l’instruction suivante d’un programme
(Pointeur ordinal).
- Décode et détermine ce qui doit être fait.
- Envoi les bonnes commandes à l’UAL, la mémoire et les contrôleurs
d’entrée/sortie.
- Mémoriser le résultat.
2.3. Unité de contrôle
- Les instructions exécutées par l’ordinateur sont exprimées en langage
machine (code binaire) :
o Opération (instruction) à effectuer.
o Adresse, endroit en mémoire ou doit s’effectuer l’opération.
- Les instructions en langage machine sont organisées avec le op code en
premier, suivi des adresses mémoire.
- L’ensemble des opérations qu’un processeur peut effectuer est appelé jeu
d’instructions.
2.4. Mémoire
- Le programme et les données y sont stockés. Idéalement :
- Plus rapide que le temps d’exécution d’une instruction.
- Disponible en grande quantité.
- Peu onéreuse.
❖ En pratique, la hiérarchie de couches :
o Les registres
o La mémoire cache (lignes de cache), différents niveaux de cache.
o La mémoire principale, appelée RAM.
o Disques durs (aspect mécanique)
2.5. Unités d’Entrée / Sortie
Sous-système qui permet à l’ordinateur d’interagir avec d’autres périphériques et
de communiquer avec l
2
3. Systèmes d'Exploitation Primitifs
Un système d’exploitation primitif (ou primitive operating system) désigne une
première génération de systèmes d’exploitation très simples, dont la fonction se
limite essentiellement à charger et exécuter un programme.
Ce sont les ancêtres des systèmes modernes, dépourvus de multitâche, de
protection mémoire, de gestion avancée des processus ou d’interfaces élaborées.
3.1. Caractéristiques d’un système d’exploitation primitif
Un système d’exploitation est qualifié de primitif lorsqu’il :
- Ne gère qu’un seul programme à la fois
o Aucun multitâche
o Aucune commutation de contexte
Le processeur reste monopolisé par un seul job, jusqu’à sa fin.
- N’offre aucune protection
o Pas de séparation entre programme et matériel
o Pas de mode noyau / mode utilisateur
o Les programmes peuvent accéder directement au matériel
- Interface extrêmement rudimentaire
o Aucune interface utilisateur évoluée
o Le chargement se fait via des cartes perforées, bandes magnétiques,
interrupteurs…
- Absence d’abstraction matérielle
o Le SE ne masque pas la complexité du hardware
o Le programmeur doit connaître l’architecture exacte de la machine
3
- Absence de services système
Pas de :
o Gestion de fichiers
o Gestion de mémoire
o Gestion de périphériques
o Ordonnancement
o Appels système structurés
Exemple d’OS primitif : BM 701 : IBM Monitor
UNIVAC I : Executive System rudimentaire
4. Système d’exploitation multitâches
Un système d’exploitation multitâche est un système capable d’exécuter plusieurs
processus (ou programmes) simultanément du point de vue de l’utilisateur, grâce
à une gestion rapide et contrôlée du processeur entre ces processus.
Le multitâche repose sur le principe suivant :
Le processeur bascule rapidement d’un processus à un autre (ordonnancement),
donnant l’illusion que plusieurs tâches s’exécutent en parallèle
4.1. Caractéristiques d’un système d’exploitation multitâche
- Gestion simultanée de plusieurs processus
Le CPU est partagé entre les tâches selon un algorithme d’ordonnancement.
Chaque tâche reçoit un quantum (intervalle de temps).
- Préemption
Le SE peut interrompre un processus pour en exécuter un autre.
Exemples :
• Timer interrupt
• Priorités
• I/O wait
- Isolation entre les processus
Chaque processus est exécuté dans un espace mémoire protégé.
Cela évite :
o Écrasement mémoire
o Interférences entre programmes
o Crash total de la machine
4
- Commutation de contexte (context switch)
Lors du changement de processus, le noyau sauvegarde :
o Registres CPU
o Compteur ordinal (PC)
o Pile
o État mémoire
Puis charge l’état du prochain processus.
- Utilisation optimale du CPU
Le multitâche permet de :
o Occuper le CPU pendant les opérations E/S,
o Minimiser le temps mort du processeur,
o Améliorer la réactivité du système.
4.2. Types de multitâche
4.2.1. Multitâche coopératif
Le processus décide lui-même quand céder le CPU.
Inconvénient :
• Risque de blocage si un programme ne rend pas la main.
Exemple : premières versions de MacOS et Windows 3.x.
4.2.2. Multitâche préemptif (moderne)
Le CPU est repris automatiquement par le système grâce à un timer.
Avantages :
• Équité
• Fiabilité
• Prévention des blocages
Exemple : Linux, Windows NT+, Android, iOS, macOS.
4.3. Composants clés du multitâche
- Ordonnanceur (scheduler)
- Gestion mémoire (MMU, pages, segments)
- Tables de processus (PCB)
- Gestion des interruptions
- Timers pour la préemption
- Mécanismes IPC (pipes, sockets, files de messages, sémaphores)
5
Exemples de systèmes multitâches
- Linux / Unix
- Microsoft Windows NT, 10, 11
- MacOS
- Android, iOS
- Systèmes embarqués modernes (RTOS)
Figure : Exemple d’exécution multitâches
5. Système d’exploitation multiutilisateur
Un système d’exploitation multiutilisateur est un système capable de permettre à
plusieurs utilisateurs distincts d’accéder simultanément ou successivement aux
ressources d’un même ordinateur ou réseau, tout en garantissant l’isolation, la
sécurité et la gestion équitable des ressources.
Il assure que :
- Chaque utilisateur possède un espace de travail isolé,
- Les données d’un utilisateur ne peuvent pas être consultées ou modifiées
par un autre,
- Les ressources (CPU, mémoire, disque, réseau) sont réparties de manière
contrôlée.
6
5.1. Caractéristiques d’un système d’exploitation multiutilisateur
- Gestion de multiples sessions d’utilisateurs
Le système peut exécuter :
o Plusieurs connexions locales,
o Plusieurs sessions distantes (SSH, Telnet, RDP),
o Plusieurs comptes simultanément.
- Isolation des utilisateurs
Chaque utilisateur dispose de :
o Ses fichiers propres,
o Ses droits,
o Ses processus,
o Ses quotas de ressources.
Cela empêche les interférences entre utilisateurs.
- Sécurité renforcée
Un OS multiutilisateur implémente :
o Contrôle d’accès (DAC, MAC)
o Permissions (lecture, écriture, exécution)
o Authentification (mot de passe, clés, certificats)
o Journaux de sécurité (logs)
Il protège le système contre :
o Accès non autorisés
o Escalade de privilèges
o Malveillance inter-utilisateurs
- Gestion équitable des ressources
Le système répartit :
o Temps CPU
o Mémoire
o Espace disque
o Bande passante
Il évite qu’un utilisateur “glouton” monopolise la machine.
- Gestion des processus et priorités
Chaque utilisateur possède ses propres processus.
Le système doit garantir que :
o Un utilisateur ne puisse pas tuer les processus d’un autre,
o Le noyau puisse équilibrer les charges entre utilisateurs.
Comme exemples de systèmes multiutilisateurs
Unices (multisession) :
7
o Linux
o BSD
o MacOs (Unix certifié)
o Solaris
Serveurs Windows (NT) :
o Windows Server + RDP
o Domaines Active Directory
Mainframes :
o IBM z/OS
o IBM i
Systèmes de virtualisation :
o VMware ESXi (multi-VM multiutilisateurs)
o Proxmox
o Xen
6. La protection
Mécanismes pour isoler les utilisateurs/processus malicieux
❖ Préemption :
- Donner une ressource, mais la reprendre au bout d'un certain temps
❖ Médiation :
- Le SE est le médiateur entre les processus et les ressources ;
- Contrôle toutes les ressources qu'une application peut utiliser ;
- Pour chaque demande le SE vérifie que l'application à le droit de faire
cette demande.
❖ Mode privilégié dans le CPU
- Applications tournent en mode utilisateur ;
- SE tourne en mode privilégié (ou mode noyau) ;
- Les opérations de protection ne sont disponibles qu'en mode privilégié.
8
7. Structure d’un système d’exploitation typique
- Les applications tournent en mode utilisateur
- Le noyau tourne en mode privilégié
o Crée et détruit les processus
o Décide et vérifie qui accède au matériel
8. Les appels système
- Les applications invoquent le noyau avec des appels système
o Des instructions assembleur spéciales transfèrent le contrôle
au noyau
o Qui transfère l'appel à l'une des milliers de routines gestionnaires
9. Traitement d’une interruption
Une interruption est un signal envoyé au processeur pour lui indiquer qu’un
événement urgent ou important vient de se produire, et qu’il doit suspendre
temporairement l’exécution en cours pour traiter cet événement via une routine
spéciale appelée ISR (Interrupt Service Routine).
Les interruptions jouent plusieurs rôles à savoir :
1. Améliorer la réactivité du système
Le CPU est immédiatement prévenu d’un événement important.
2. Éviter la boucle d’attente active (polling)
Le processeur n’a plus besoin de vérifier en permanence les
périphériques.
9
3. Synchroniser matériel et logiciel
Les interruptions permettent aux périphériques d’informer l’OS (clavier,
disque, carte réseau…).
4. Assurer le multitâche
Le timer génère des interruptions régulières → préemption →
ordonnancement.
On distingue les interruptions matérielles des interruptions logicielles
- Interruptions matérielles (Hardware Interrupts)
Générées par un périphérique :
o Clavier,
o Souris,
o Carte réseau,
o Disque dur,
o Timer matériel…
- Interruptions logicielles (Software Interrupts)
Générées par un programme :
o Appels système (ex : int 0x80 en Linux),
o Exceptions programmées,
o Interruptions de débogage.
10