Académique Documents
Professionnel Documents
Culture Documents
Sommaire
1) Introduction (séance 1)
2) Définition (séance 1)
3) Historique (séances 1, 2, 3)
4) Typologie (séances 4, 5)
5) Fonctions et Structures (séance 5)
6) Notion d'Entrées/Sorties et interruption (séance 6)
7) Notion de processus (séance 6)
8) Gestion de la mémoire (séances 7, 8)
9) Gestion des fichiers (séances 9, 10)
10) Gestion des processus (séances 11, 12)
Bibliographie
1) Operating system concepts, Abraham Silberschatz et Peter B. G., Addison-Wesley Pub. 1994.
2) Principes des systèmes d’exploitation des ordinateurs, Sacha KRAKOWIAK, Dunod 1987
3) Introduction aux systèmes d'exploitation, C. J. THEAKER et G. J. BROOKES, Eyrolles 1987.
4) Systèmes d'exploitation des micro-ordinateurs, M. COURVOISIER et R. VALETTE, Dunod
1986
5) Systèmes d’exploitation, Andrew Tanenbaum, 3ème Edition Nouveaux Horizons 2008
Webographie
1) http://www.commentcamarche.net/contents/1092-systeme-d-exploitation
2) http://www.laurentbloch.org/Data/Livre-Systeme/index.html
3) fr.wikipedia.org/wiki/Ordinateur
4) http://pagesperso.lina.univ-nantes.fr/info/perso/permanents/bechet/L3-SE/
5) www.histoire-informatique.org
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 2
1. INTRODUCTION
Un système d'exploitation est une partie indispensable de presque tout système informatique. Un
système informatique peut être décrit approximativement en quatre composants selon la figure suivante :
L'objectif ultime de ce cours est d'amener l'apprenant(e) à découvrir et comprendre les concepts et
principes des systèmes d'exploitation afin de pouvoir maîtriser facilement et complètement des systèmes
informatiques, quelle qu'en soit la complexité.
Comme pré requis, une familiarité avec les sujets suivants serait un atout :
1) Composition d'un ordinateur [cf. cours ATO]
2) Utilisation de Windows/Linux et de commandes systèmes (MS-DOS et Shell [cf. cours de
progiciel]
3) Notions de logiciel, de programme, de fichier … [cf. cours de progiciel]
4) Notion de programmation [algorithme, compilation, linkage, tableaux, piles, files, listes arbres]
2. DEFINITION
Il n'existe pas aujourd'hui de définition universelle des systèmes d'exploitation : ils sont souvent plus
définis par ce qu'ils font que par ce qu'ils sont. Néanmoins, le système d'exploitation peut être défini comme
un logiciel qui œuvre comme un intermédiaire intelligible entre un utilisateur et les ressources physiques
d'un système informatique ; c'est "l'allocateur" des ressources dans un système informatique. Ainsi donc, le
premier but d'un système d'exploitation est d'offrir la commodité du système à l'utilisateur et le second but
est d'assumer l'efficience du système.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 4
3. HISTORIQUE
Les systèmes d'exploitation modernes sont en général très complexes. Il est certain que cet état de fait
est le fruit d'une évolution qui s'est étalée sur plusieurs décennies. Une remarque générale que l'on peut
faire d'emblée est que les évolutions du matériel et du logiciel ont été parallèles. En effet, un état donné du
matériel permettait d'implanter certains concepts dans les systèmes. Pour mettre en œuvre d'autres concepts,
plus évolués, il devenait nécessaire de modifier le matériel, ce nouvel état du matériel permettant alors de
poursuivre l'évolution du système (cf correspondance PC et DOS-WINDOWS).
La figure ci-après présente un résumé synoptique des évolutions du matériel et du logiciel de base.
Cet historique montre les éléments communs des différents types de système d'exploitation.
De l'évolution permanente des technologies et des techniques, il ressort trois générations pour le
matériel et quatre générations pour le logiciel de base.
1) Gros systèmes (mainframes) : apparus autour de 1947, leur matériel avait les caractéristiques suivantes
:
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 6
Ce tableau comparatif des vitesses de calcul7 permet de se rendre compte de l'avancée que
représente l'ENIAC par rapport aux moyens de calculs disponibles jusqu'alors.
(https://fr.wikipedia.org/wiki/ENIAC)
En comparaison, une ALU des années 2000 met respectivement 30 ns et 36 µs pour ces opérations
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 7
2) Mini-ordinateurs (mini computers) : apparus autour de 1959, leur matériel se caractérise par :
- mémoire à tores de ferrite
- transistors et circuits intégrés
- apparition et diversification des périphériques
- électromécaniques
- lecteurs / perforateurs de rubans
- imprimantes
- télétypes
- cartes, tambours et bandes magnétiques
- etc.
NB : Chercher figure pour PDP-11 (Programable Data Processor).
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 8
3) Micro-ordinateurs (Micro computer =>Personal Computer) : apparu autour de 1965, le matériel
connaît la miniaturisation des composants. Les transistors et les circuits électroniques laissent place aux
micromodules. Les ferrites diminuent en taille et le disque fait son apparition :
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 9
2) Deuxième génération : 1960-1970 / Traitement par lot (batch systems)
- travaux groupés en lots par un opérateur (le programmeur est utilisateur et non un opérateur)
- chargement de l'utilitaire nécessaire à un lot
- chargement du lot sur le lecteur de cartes
- lancement de l'exécution du lot
- etc.
Exemple : si l'opérateur reçoit successivement des travaux FORTRAN, COBOL et FORTRAN, il doit
(pour diminuer les montages, chargement, déchargement et démontage) regrouper tous les travaux
FORTRAN et les exécuter avant de passer aux travaux COBOL.
Ainsi les premiers systèmes d'exploitation se caractérisaient par les modules suivants :
- initialisation du système (logiciel et matériel)
- moniteur d'enchaînement des travaux avec Job Control Language
- sous-programmes d'entrées/sorties pour alléger la tâche au programmeur, partager les mémoires
secondaires, éviter les mauvais usages des périphériques.
- contrôle et gestion des temps d'exécution pour tuer les programmes trop longs et permettre la
facturation;
- protection mémoire pour éviter la destruction du système ; l'organisation de la mémoire dans ce cas
peut être représentée comme suit :
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 11
4. TYPOLOGIE DES SYSTEMES D'EXPLOITATION
En considérant tous les types de systèmes d'exploitation, sans se restreindre a priori à ceux qui sont
actuellement utilisés dans les micro-ordinateurs, il est possible de les classer selon deux critères : le mode
d'utilisation et le mode de fonctionnement.
Du point de vue du mode d'utilisation, on distingue des :
- systèmes destinés à la commande de procédés industriels ;
- systèmes destinés à la gestion des bases de données ;
- systèmes à usage général.
Du point de vue du mode de fonctionnement interne du processeur, on distingue :
- les systèmes «batch» ;
- les systèmes multitâches ;
- les systèmes multitraitements.
Dans la classification générale le mode d'utilisation dépend du mode de fonctionnement ; cela donne
plusieurs types comme décrits dans les sections suivantes.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 12
commun en s'échangeant des informations et en partageant des données. Le système d'exploitation doit
d'une manière générale gérer les ressources partagées (mémoire, fichiers, imprimante, etc.), veiller à la
cohérence de l'utilisation des données communes et au transfert des messages.
Suivant le domaine d'application retenu, des systèmes d'exploitation divers ont été développés à partir
de ce concept de base.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 13
4.2.3 Les systèmes transactionnels
Ces systèmes sont basés sur l'utilisation d'un programme commun par plusieurs utilisateurs
simultanément. Le domaine d'utilisation le plus connu concerne les systèmes transactionnels où se pose
le problème de l'accès simultané à une base de données commune. Dans de tels systèmes (systèmes de
réservation de places d'avion par exemple) le système d'exploitation du processeur doit assurer en
permanence la cohérence, l'intégrité et la sécurité de la base de données partagée.
Le bestiaire des SE
(http://pagesperso.lina.univ-nantes.fr/~bechet-d/L3-SE/L3-SE-2008-Cours-03-v1.0.pdf pages 18-25,
Systèmes d’exploitation, Andrew Tanenbaum, Nouveaux Horizons Pages 36-39 )
Mainframes ⊲
Serveurs ⊲
Systèmes multiprocesseurs ⊲
Systèmes personnels ⊲
Systèmes des assistants personnels
Systèmes temps réel ⊲
Systèmes embarqués ⊲
Systèmes des objets communicants
Smart cards ou cartes de crédit ⊲
Mainframes
Très gros système : un millier de disques — plusieurs téraoctets de mémoire au total
Gestion optimisée des ressources
Exemple : OS/390 d’IBM descendant de l’OS/360
Serveurs
Système avec d’importantes ressources utilisées en parallèle par de nombreux utilisateurs
SE spécialisés, en fait, optimisés pour cet usage: UNIX, Linux ou Windows XP Server
Exemples : Serveur de fichiers, serveur Web, serveur de courriels
Systèmes multiprocesseurs
Plusieurs CPU fonctionnent sur une même plateforme: ordinateurs parallèles, multi-ordinateurs ou
multiprocesseurs
SE spécialisés ou variantes plus ou moins optimisés pour la communication entre processus et les accès
concurrents aux ressources
Exemple : la Connection Machine, le Cray, les grappes de PC ou les PC bi-processeurs
Systèmes personnels
Un seul utilisateur
Interface conviviale
Orienté vers traitement de texte, le multimédia ou l’accès à internet
Exemple : Mac OS, Windows XP et Linux
Systèmes embarqués
Palmtops ou PDA (Personal Digital Assistant), téléphones portables, ordinateurs de machine à laver, etc.
Contrainte de taille (programmes et/ou données)
SE spécialisé: PalmOS, VRTX, Windows-CE
(Consumer Electronics), etc
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 15
5. FONCTIONS ET STRUCTURES DES SYSTEMES D'EXPLOITATION
Comme cela a été montré sur le schéma de description des composants d'un système informatique,
le système d'exploitation se trouve à l'interface entre le matériel et le logiciel de l'utilisateur. Pour que
l'utilisateur ait une vision simplifiée de la machine virtuelle et puisse utiliser les fonctionnalités les mieux
adaptées, les systèmes d'exploitation sont organisés en niveaux ou couches. Ceci est surtout vrai pour les
systèmes d'exploitation pour micro-ordinateurs car les microprocesseurs évoluent très vite et les
constructeurs peuvent facilement faire évoluer leurs produits en assurant une compatibilité ascendante.
Les systèmes d'exploitation modernes sont construits à partir d'un noyau (kernel en anglais) assurant
un certain nombre de fonctions de base. Le nombre de fonctions assurées par le noyau dépend du
découpage choisi par le concepteur.
Il peut être créé un système d'exploitation aussi large et aussi complexe que possible, seulement en
le partitionnant en de petits modules. Chaque module doit être une portion bien définie du système, avec
des entrées, des sorties et des fonctions. Manifestement tous les systèmes d'exploitation n'ont pas la même
structure. Cependant, beaucoup de systèmes d'exploitation modernes partagent plusieurs modules:
- la gestion des processus (chapitre développé plus loin)
- la gestion de la mémoire (chapitre développé plus loin)
- la gestion des entrées-sorties (cf. notion d'entrées-sorties)
- la gestion des fichiers (chapitre développé plus loin)
- la protection du système (sujet développé plus loin)
- la communication (entre processus et surtout dans un système distribué qui rassemble des
composants hétérogènes)
- l'interface utilisateur (interpréteur de commandes) : c'est l'un des modules très importants pour les
systèmes d'exploitation. Il est l'intermédiaire entre l'utilisateur et le système d'exploitation. Son rôle
est très simple : obtenir la prochaine commande et l'exécuter. Il est basé sur un langage de
commandes qui peut être exploité en mode graphique (exemple du bureau en Windows : système
de menus) ou en mode commande (mode invite commande). En mode graphique, toutes les
opérations sont guidées par des sélections parmi les choix proposés dans des menus ; tandis qu'en
mode commande, c'est le système d'exploitation qui, lorsqu'il est prêt, sollicite les commandes à
exécuter. Dans ce dernier mode l'utilisateur doit avoir préparé son travail à l'avance et prévu à quel
moment le système sera prêt à accepter des commandes (exemple du mode Commandes MS-DOS).
Un éditeur de lignes permet d'introduire les instructions et de les modifier en cas d'erreur.
CLI=Command Line Interface /Mode texte /Organisation de l’écran en lignes et colonnes
GUI=Graphical User Interface / Mode Graphique / Organisation de l’écran en pixels
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 16
La structure d'un système d'exploitation est la manière dont ces modules sont inter-reliés au
travers du noyau. Le noyau comporte, en général, au moins les deux premiers modules : la gestion des
processus et la gestion de la mémoire. On appelle encore le noyau moniteur. La structure et le noyau varient
d'un système d'exploitation à un autre comme le montrent les figures suivantes :
Pour des raisons de sécurité, un CPU fonctionne en plusieurs modes ou niveaux dont en général :
- Le mode « noyau » ou « superviseur » : pas de restriction ; accès aux registres spéciaux ; accès
direct à la RAM ; exécution des routines ; exécution des processus systèmes.
- Le mode « utilisateur » : restriction pour les accès aux ressources ; exécution des programmes
normaux ; exécution des processus utilisateur.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 17
6. NOTIONS D'ENTREES-SORTIES ET INTERRUPTION
Les systèmes d'exploitation modernes permettent de traiter les périphériques comme des unités logiques
dont les caractéristiques physiques ne sont pas transparentes à l'utilisateur. Les unités logiques sont décrites
de façon unifiée dans une table de descripteurs d'unités contenant leurs spécificités. L'utilisation de ces
unités s'effectue par un gestionnaire d'unités (handler en anglais), les utilisateurs se contentant d'effectuer
des demandes qui sont placées en file d'attente. Pour rendre très efficace le travail du handler, on lui adjoint
des tampons (buffers en anglais) pour mémoriser les demandes.
La figure ci-dessous (Figure 2.1 à la page 30 du livre 'OPERATING SYSTEM CONCEPTS' d'ABRAHAM
SILBERSCHATZ) montre que, de façon générale, un ordinateur consisterait en un CPU et un nombre de
contrôleurs qui sont connectés au travers d'un bus. Chaque contrôleur a la charge d'un périphérique
spécifique ; plusieurs périphériques peuvent être connectés à un seul contrôleur qui est responsable des
mouvements de données entre le(s) périphérique(s) qu'il contrôle et son buffer.
Pour une opération d'E/S donnée, le CPU charge les registres locaux du contrôleur concerné, lequel, en
scrutant ses registres, détermine l'action à effectuer : lecture (entrée) ou écriture (sortie). Dans le cas d'une
entrée (lecture), le contrôleur transfère les données du périphérique vers le buffer. Dans le cas d'une sortie
(écriture) le contrôleur transfère les données du buffer vers le périphérique. Une fois le transfert terminé, le
contrôleur informe le CPU qu'il a terminé. Cette communication entre les contrôleurs de périphériques et
le processeur s'effectue grâce aux interruptions (IRQ).
Une interruption est un mécanisme de commutation du contexte du processeur pour l'obliger à réagir à un
événement (notions de pilotes).
L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé informatique où
des données circulant de, ou vers, un périphérique (port de communication, disque dur) sont transférées directement par
un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour lancer
et conclure le transfert1 . La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés
par interruption.
On l'oppose ainsi à des techniques de polling où le microprocesseur doit attendre chaque
donnée. Le polling désigne une technique1 consistant à interroger une succession de clients (matériels ou logiciels) pour
déterminer le(s)quel(s) d'entre eux sont intéressés par un service (diffusion d'information, mises à jour, etc).
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 18
7. NOTION DE PROCESSUS
7.1 Concepts
Un processus est simplement un programme en cours d'exécution. L'exécution d'un processus se déroule
de façon séquentielle, c'est dire qu'à tout moment une instruction au plus en est exécutée. C’est l’unité
d’exécution des programmes modernes.
Un processus est plus que le code programme ; il inclut généralement l'activité courante représentée par le
compteur programme et le contenu des registres du processeur. Le compteur programme est l'indication à
la prochaine instruction à exécuter d'un programme.
Un processus peut, pendant son exécution, engendrer plusieurs autres processus. Ainsi, un système consiste
en une collection de processus : certains sont des processus système exécutant des codes système, d'autres
sont des processus utilisateur exécutant des codes utilisateur.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 19
7.3 Le Bloc de contrôle de processus
Chaque processus est représenté dans le système par un bloc de contrôle appelé PCB (Process
Control Block) décrivant le contexte du processus. Un PCB contient diverses informations relatives à un
processus spécifique, notamment :
- l'état du processus
- le compteur de programme (registre spécial)
- les registres du processeur
- des informations sur les files d'attente (priorité, pointeurs)
- des informations relatives à l’occupation de la mémoire
- des statistiques (temps CPU déjà consommé)
- des informations sur les Entrées-Sorties
- etc.(cf. gestionnaire des tâches de Windows)
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 20
Table de comparaison
Processus Thread
Un programme en cours d’exécution s’appelle
Définition Un thread est une petite partie d’un processus.
un processus.
La La communication entre deux processus est La communication entre deux threads est moins
communication coûteuse et limitée. coûteuse que celle du processus.
Le multitâche basé sur les processus permet à un Le multitâche basé sur les threads permet à un
Multitâche ordinateur d’exécuter deux ou plusieurs programme unique d’exécuter deux threads ou plus
programmes simultanément. simultanément.
Espace Chaque processus a son espace d’adressage Tous les threads d’un processus partagent le même
d’adressage distinct. espace d’adressage que celui d’un processus.
Tâche Les processus sont des tâche lourde. Les threads sont des tâches légères.
Vous imprimez un fichier à partir d’un éditeur de texte
Vous travaillez sur un éditeur de texte, il fait
Exemple tout en travaillant dessus, ce qui ressemble à l’exécution
référence à l’exécution d’un processus.
d’un thread dans le processus.
https://waytolearnx.com/2018/09/difference-entre-thread-et-processus-en-java.html
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 21
8. GESTION DE LA MEMOIRE CENTRALE
La mémoire utilisée par les applications dans un ordinateur pendant son fonctionnement se divise
en deux catégories (hormis les registres et les caches) :
- la mémoire principale (vive ou interne) : composée de circuits intégrés, elle est très rapide et
sert de stockage temporaire pour les programmes et les données ;
- les mémoires secondaires (auxiliaires) : composées de supports magnétiques (disque dur, bandes
magnétiques, etc.), elles sont beaucoup plus lentes et servent de stockage permanent pour les
données et programmes.
Le but principal d'un système d'exploitation est l'exécution des programmes. Ces programmes,
ensemble avec les données associées doivent être en mémoire principale du moins partiellement pendant
l'exécution car les accès mémoire principale sont des milliers de fois plus rapides que les accès mémoire
auxiliaire. Ainsi plus la quantité mémoire principale disponible est importante (dans les limites des
capacités du CPU), plus vite l'ordinateur réagit. Ceci est dû au fait que la mémoire centrale est seule
directement adressable par le CPU.
Or la mémoire principale est assez petite par rapport à la somme des tailles des programmes et données
mis en jeu lors d'un traitement. Cette situation d'insuffisance de mémoire principale se présente assez
souvent dans la mesure où cette mémoire doit être partagée d'une part entre les processus systèmes et les
processus utilisateurs, et d'autre part entre de nombreux processus utilisateurs.
Il s'agit donc pour le système d'exploitation d'organiser cette mémoire pour en tirer le maximum :
c'est le rôle du gestionnaire de mémoire. Ainsi lorsque la mémoire centrale vient à manquer, le gestionnaire
de mémoire transfère sur mémoire secondaire des processus et données non actifs, puis active d'autres
processus et données plus prioritaires en les ramenant en temps voulu dans la mémoire principale ; cette
technique de va-et-vient ou d'échange entre la mémoire principale et la mémoire secondaire est appelée
SWAPPING et engendre plusieurs politiques d'allocation de mémoire.
Le gestionnaire de mémoire doit dès lors assurer les fonctions suivantes :
- réaliser la correspondance entre adresses logiques et adresses physiques,
- permettre le partage de la mémoire,
- connaître les espaces libres,
- allouer de l'espace mémoire pour satisfaire une demande,
- récupérer l'espace mémoire utilisé par un processus qui s'est terminé,
- traiter les swapping,
- assurer la protection mutuelle des informations appartenant à des utilisateurs distincts,
- optimiser la quantité de mémoire disponible.
De toutes ces fonctions, ce sont l'allocation et l'optimisation qui déterminent la mise en œuvre des
autres et font, de ce fait, l'objet de plusieurs algorithmes à cause des difficultés de choix de la meilleure
politique d'allocation de mémoire et de son implémentation.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 22
Historiquement l'allocation de la mémoire centrale a été statique et contiguë : pour charger un
fichier exécutable, il fallait trouver une zone contiguë de mémoire ; dans certains systèmes d'exploitation
comme DOS, l'adresse de chargement était imposée et fixe. On parlait alors de partitions de mémoire.
Aujourd'hui, afin de permettre l'allocation dynamique de la mémoire centrale sans nécessité de
contiguïté, plusieurs mécanismes sont utilisés dans de nombreux systèmes d'exploitation pour découper la
mémoire, les programmes et les données. Deux de ces mécanismes sont la segmentation et la pagination
qui sont parfois combinés. Dans tous les cas, la conversion des adresses logiques générées par le CPU en
des adresses physiques s'effectue par un microprogramme appelé unité de gestion de mémoire (MMU =
Memory Management Unit) qui sert d'interface entre le CPU et la mémoire physique. La figure 8.3 p.256
du livre 'OPERATING SYSTEM CONCEPTS' d'ABRAHAM SILBERSCHATZ montre bien une bonne
illustration de MMU.
8.1 La segmentation
Dans ce contexte la mémoire centrale se présente pour un utilisateur comme une collection de
parcelles ayant des longueurs variables appelées segments.
Un segment est un ensemble d'informations considéré comme une unité logique (espace d’adressage
indépendant) et désigné par un nom ; sa représentation occupe un ensemble d'emplacements contigus. Il
peut avoir une taille variable. A l'intérieur d'un segment, les informations sont désignées par un déplacement
qui est une adresse relative par rapport au début du segment. Une information est donc désignée par un
couple (nom de segment, déplacement) que l'on appelle adresse segmentée (comme le montre la figue 6.12
p.231 du livre 'PRINCIPES DES SYSTEMES D'EXPLOITATION DES ORDINATEURS' de
S.KRAKOWIAK).
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 23
Il n'y a pas de dépendance ni physique ni logique entre les segments. Physiquement, un segment peut
être implanté à une adresse quelconque, à condition d'occuper des emplacements contigus. Logiquement,
les différents segments gérés par un système sont indépendants. Même si les noms de segments sont souvent
représentés par des numéros entiers consécutifs, il n'y a pas de relation de contiguïté entre le dernier
emplacement du segment i et le premier emplacement du segment i + 1 (cf. figure 8.24 p.286 du livre
'OPERATING SYSTEM CONCEPTS' d'ABRAHAM SILBERSCHATZ).
La fragmentation externe est l'éparpillement des bouts d'emplacements inutilisés à cause de leur
incommodité résultant des tailles inadéquates aux demandes de mémoire. C’est encore appelé phénomène du
damier (checkerboarding).
Plusieurs algorithmes ont été implémentés pour tenter de résoudre le problème de fragmentation
externe de la mémoire indue par l'allocation dynamique (segmentation). Parmi ces algorithmes, il y a FIRST-
FIT, BEST-FIT et WORST-FIT.
Avec l'algorithme FIRST-FIT, le gestionnaire de mémoire parcourt la table des segments à la recherche
de la première zone libre qui puisse satisfaire la demande. La zone trouvée est alors scindée en deux dont la
première est occupée pour satisfaire la demande et la seconde est inutilisée, sauf si la zone trouvée a exactement
la taille requise. Cet algorithme est rapide puisqu'il effectue très peu de recherche ; mais il occasionne un taux
de fragmentation élevé.
Avec l'algorithme BEST-FIT, le gestionnaire de mémoire recherche la plus petite zone libre qui
convient ; on évite ainsi de fractionner une grande zone dont on pourrait avoir besoin plus tard. Cet algorithme
est plus lent car il parcourt toute la table des segments et occasionne anormalement un taux de fragmentation
plus élevé que l'algorithme FIRST-FIT.
Avec l'algorithme WORST-FIT, le gestionnaire de mémoire recherche la plus grande zone libre qui
convient ; on fractionne ainsi une grande zone dont on pourrait avoir besoin plus tard. Cet algorithme est
également plus lent parce qu’il parcourt également toute la table des segments.
Puisque la segmentation implique naturellement une allocation dynamique, le compactage
(défragmentation ou optimisation) de la mémoire s'effectue à volonté du gestionnaire de mémoire. Mais
généralement, plus la moyenne des tailles de segment est petite, plus faible est le taux de fragmentation (externe
≠ interne).
Exercice 8.5 p.297 O.S. Concepts
Travail de recherche personnel : comment déterminer le taux de fragmentation ?
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 25
8.2 La pagination
Une solution au problème de la fragmentation externe est de permettre des emplacements non contigus,
occupant physiquement la mémoire partout où elle est disponible. La réalisation de cette solution se trouve
dans l'utilisation du mécanisme de la pagination.
A cause de ses avantages sur d'autres mécanismes, la pagination dans ses diverses formes est
communément employée dans plusieurs systèmes d'exploitation.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 26
8.2.2 Principes de base de la pagination
La mémoire virtuelle est divisée en blocs de taille fixe appelés pages qui servent d'unités d'allocation.
La mémoire physique correspondante est elle-même divisée en blocs de même taille que les pages appelés
cases (cf. figure 9.12 p.358 du livre 'PRINCIPES DES SYSTEMES D'EXPLOITATION DES
ORDINATEURS' de S.KRAKOWIAK).).
La taille des cases et des pages est imposée par le matériel et est une puissance de 2, allant de 512 à
65 536 octets (64 Ko). Les transferts entre la RAM et la mémoire secondaire se font toujours par pages entières.
Une adresse logique est alors construite par concaténation d'un numéro de page et d'un déplacement à
l'intérieur de la page. De même une adresse physique est la concaténation d'un numéro de case et d'un
déplacement dans la case. La correspondance entre les adresses des pages et les adresses des cases est assurée
au niveau de la MMU par la "fonction de pagination".
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 27
Exercice : quel est le rôle des registres par rapport à la mémoire centrale. Donnez des exemples.
La Table des pages est indexée par numéro de page virtuelle et chacune de ses entrées contient les
informations suivantes :
- un numéro de case (ncase) ;
- un indicateur de présence ;
- un indicateur de modification ;
- le mode d'accès autorisé ;
- etc.
La mémoire associative a une taille réduite (quelques dizaines ou centaines d'entrées) où sont conservés
les couples (npage, ncase) les plus récemment référencés. Lors d'un accès à la mémoire, la mémoire associative
est d'abord consultée. Ce n'est qu'en cas d'échec de la page recherchée (il y a alors défaut de page) que la table
des pages est explorée ; la mémoire associative est alors mise à jour : le couple (npage, ncase) courant remplace
l'entrée la plus anciennement référencée.
La fragmentation interne ?
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 28
3) provoquer le chargement de la page manquante avec mise à jour des informations.
L'étape 1 nécessite d'avoir pour chaque mémoire virtuelle une description d'implantation. Sa forme la
plus simple est celle d'une table qui indique pour chaque page virtuelle son adresse en mémoire secondaire : la
localisation d'une page virtuelle en mémoire secondaire est alors déterminée en consultant la table
d'implantation.
L'étape 2 met en œuvre un algorithme de remplacement. Elle nécessite de conserver une table
d'occupation de la mémoire physique, qui indique pour toute case occupée l'identité de la page virtuelle qui
l'occupe ainsi que des renseignements complémentaires (protection, partage...).
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 29
Ces deux bits R et M permettent de construire l'algorithme de pagination suivant. Au lancement
d'un processus, le système d'exploitation met à 0 les bits de toutes ses pages. Périodiquement, le bit R est
remis à 0 pour différencier les pages qui n'ont pas été récemment référencées des autres.
Lorsqu'un défaut de pages se produit le système d'exploitation parcourt toutes les pages et les répartit dans
les quatre catégories suivantes en fonction des différentes valeurs des bits R et M.
Catégorie 0 : Non référencée, non modifiée
Catégorie 1 : Non référencée, modifiée
Catégorie 2 : Référencée, non modifiée
Catégorie 3 : Référencée, modifiée
L'algorithme de la page non récemment utilisée ou NRU (Not Recently Used) retire une page au hasard
de la catégorie non vide qui a le plus petit numéro. L'algorithme NRU est facile à comprendre, relativement
efficace et fournit des performances qui sont suffisantes même si elles ne sont pas optimales.
8.2.5.3 ALGORITHME DE REMPLACEMENT DE PAGE PREMIER ENTRE, PREMIER SORTI
Un deuxième algorithme qui requiert peu de temps processeur est l'algorithme premier entré premier
sorti ou FIFO (First In First Out). Le système d'exploitation mémorise une liste de toutes les pages en
mémoire, la première page étant la plus ancienne et la dernière, la plus récente. Lorsqu'il se produit un
défaut de page, on retire la première page de la liste et on place la nouvelle à la fin de cette liste.
Cet algorithme, présente l'inconvénient de pouvoir retirer une page ancienne mais très utilisée.
Une modification simple de l'algorithme FIFO (appelée algorithme de la seconde chance) consiste
à examiner les bits R et M de la page la plus ancienne. Si cette page appartient à la catégorie 0 (non
référencée, non modifiée) elle est supprimée ; sinon on teste la page un peu moins ancienne et ainsi de suite.
S'il n'y pas de page dans la catégorie 0, on applique cet algorithme aux catégories 1, 2 puis 3.
8.2.5.4 ALGORITHME DE REMPLACEMENT DE LA PAGE LA MOINS RECEMMENT UTILISEE
Une bonne approximation de l'algorithme optimal se fonde sur l'observation suivante : les pages les
plus référencées au cours des dernières instructions seront probablement très utilisées au cours des
prochaines instructions. De même, les pages qui n'ont pas été référencées pendant un long moment ne seront
probablement pas demandées pendant un certain temps. Cette observation suggère l'algorithme suivant :
lorsqu'il se produit un défaut de page, il faut supprimer la page qui est restée inutilisée pendant le plus de
temps.
Cette stratégie est celle de la page la moins récemment utilisée ou pagination LRU (least recently
used) .L'algorithme LRU est théoriquement réalisable mais il est très coûteux. Il faut en effet mémoriser
une liste chaînée de toutes les pages en mémoire. La page la plus utilisée étant en tête et la moins utilisée
en queue de liste. La difficulté naît du fait que cette liste doit être mise à jour chaque fois que la mémoire
est adressée.
Exercice (Exemple p.317)
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 30
9. LA GESTION DES FICHIERS
La gestion des fichiers est assurée dans le système d'exploitation par un module dénommé Système de
Gestion des Fichiers (SGF). Le SGF est la partie d'un système d'exploitation qui assure la conservation des
données et qui réalise les fonctions d'accès aux données. Pour la majorité des utilisateurs, c'est la partie visible
d'un système d’exploitation. Il fournit les mécanismes de conservation et d'accès aux données et programmes
appartenant au système d'exploitation et aux utilisateurs du système informatique.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 31
9.1.2 Les opérations sur les fichiers
Un fichier est un type de données abstrait. Alors pour définir correctement un fichier, il faut considérer
les opérations qu’on peut effectuer sur les fichiers. Les systèmes d'exploitation fournissent des routines (appels
systèmes) pour six opérations de base que nous allons examiner :
- Création d'un fichier : deux étapes sont nécessaires. Premièrement, trouver de place pour le fichier
(allocation) et deuxièmement insérer dans le catalogue les informations du nouveau fichier ;
- Écriture dans un fichier : deux paramètres sont nécessaires à la routine ; ce sont le nom du fichier et
l'information à écrire dans le fichier. Étant donné un nom de fichier, le système cherche dans le catalogue
l'emplacement du fichier. Le système garde un pointeur d'écriture vers la position où aura lieu la prochaine
écriture.
- Lecture dans un fichier : il faut spécifier à la routine le nom du fichier et l'endroit en mémoire RAM
où sera copiée les données à lire. A nouveau le système cherche dans le catalogue l'emplacement du fichier et
garde un pointeur vers la position de la prochaine lecture. Ce pointeur est mis à jour après chaque lecture.
- Déplacement à l'intérieur d'un fichier : le catalogue est fouillé pour trouver l'entrée correspondant au
ficher et le pointeur est remis à une valeur donnée. Cela n'implique aucune opération d'E/S.
- Destruction d'un fichier : le répertoire est fouillé pour déterminer le fichier concerné. Lorsque l'entrée
associée est obtenue, celle-ci est effacée et l'espace du fichier est libéré de manière à être réutilisé par d'autres
fichiers.
- Troncation d'un fichier : Cette routine modifie seulement la taille parmi les attributs du fichier qui
demeurent inchangés. C'est une opération utile pour certaines occasions.
Ces six opérations de base comprennent l'ensemble minimum des opérations nécessaires à la
manipulation des fichiers. D'autres opérations communes dépendent de l'organisation du SGF et sont des
combinaisons de ces routines. Ce sont par exemple :
- l'ajout à la fin d'un fichier existant
- la copie de fichiers
- consultation des attributs de fichier
- la modification des attributs de fichier
Deux autres fonctions sont fondamentales :
- ouverture d'un fichier : permettre l'accès au contenu du fichier
- fermeture d'un fichier : interdire tout accès ultérieur au contenu du fichier.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 33
9.2 Fonctions d'un système de gestion de fichiers
Les principales fonctions assumées par un SGF correspondent aux diverses opérations de base sur les
fichiers. Ces fonctions sont présentes dans tout SGF.
La conservation des fichiers et la réalisation des fonctions d'accès impliquent la prise en charge par le
SGF de :
- la gestion des supports physiques de données, en masquant à l'utilisateur les détails de l'organisation
physique de ses fichiers,
- la sécurité des fichiers (garantie de leur intégrité en cas d'incident ou de malveillance),
- et la protection des fichiers (le respect des règles d'utilisation fixées : droits d'accès, conditions de
partage).
Ces charges montrent que le SGF joue un rôle central entre les utilisateurs et le système d'exploitation
lui-même, puisque le SGF doit gérer les données appartenant aux deux.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 34
9.3.1 Accès séquentiel
C'est la méthode la plus simple. Dans une organisation à accès séquentiel (organisation séquentielle),
les enregistrements dans les fichiers sont ordonnés les uns après les autres. Seule la fonction "successeur" est
fondamentale pour les opérations d'écriture et de lecture qui sont mutuellement exclusives (cf. mode
d'ouverture) : ‘lire suivant’ et ‘écrire suivant’. La fonction ‘prédécesseur’ est dès fois implémentée dans certains
systèmes.
L'organisation séquentielle est de loin la plus commune ; elle est souvent adoptée pour les éditeurs et
les compilateurs, peu importe le support qui les héberge. C'est le mode d'utilisation naturel des fichiers
sauvegardés sur des bandes magnétiques qui ne permettent que l'accès séquentiel.
Quoique simple, cette organisation présente de sérieux inconvénients :
- Le temps de recherche est long puisque pour accéder à un enregistrement de rang n, il est nécessaire
de lire les n-1 enregistrements qui le précèdent.
- Dans les systèmes où les enregistrements sont de longueur variable, la taille de l'enregistrement est
indiquée en tête de celui-ci pour réduire le temps de recherche ; mais il est délicat de remplacer un
enregistrement dans le fichier (pourquoi ?).
Exercice écrire une fonction de fusion de deux fichiers séquentiels dont les enregistrements sont déjà
triés.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 35
des fichiers était différente ; aujourd'hui encore, en dehors de leur contenu et de la marque de fin de fichier,
les octets n'ont pas la même signification (fin d'enregistrement, fin de page, etc.).
Alors que l'utilisateur voit un fichier comme une suite de données successives, les données appartenant
à un fichier sont le plus souvent dispersées sur la surface du support et c'est le système d'exploitation qui établit
le lien entre elles.
Ces deux réalités sont fonction de l'organisation physique des supports et de la méthode d'allocation.
9.4.1 Organisation physique d'un support magnétique
Un disque est constitué de plusieurs plateaux (un seul pour une disquette).
Un plateau a deux faces, avec une tête de lecture pour chaque face utile.
Une face est divisée en plusieurs pistes.
Une piste est divisée en plusieurs secteurs, donnant l'unité physique de lecture ou écriture (entre 32 et
4096 octets, habituellement 512 octets).
Les pistes de même position constituent un cylindre ; l'utilisation des cylindres est facilitée par le fait
que les têtes de lecture - écriture sont solidaires, permettant un accès simultané à toutes les pistes d'une même
position.
Pour améliorer l'efficacité des E/S, les transferts entre mémoire et disque s'effectuent par bloc (cluster),
un bloc étant constitué d'un ou de plusieurs secteurs.
Les disques ont deux caractéristiques avantageuses :
- ils peuvent être réécrits en un endroit : lecture et écriture après modification ;
- ils permettent l'accès direct aux données et peuvent simuler l'accès séquentiel.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 36
9.4.2 Méthodes d'allocation
L'organisation des disques permettant l'accès direct donne une souplesse à l'organisation physique des
fichiers. Dans la plus part des cas, plusieurs fichiers peuvent être stockés sur un même disque. Le problème
principal est l'allocation de l'espace aux fichiers de manière que, le disque étant utilisé réellement, les fichiers
soient accédés rapidement. Trois grandes méthodes d'allocation sont courantes : l'allocation contiguë,
l'allocation chaînée et l'allocation indexée.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 37
Cette méthode est bien adaptée à l'accès séquentiel. En effet on ne peut accéder à un bloc qu'en
suivant le chaînage ; comme chaque lecture d'un pointeur nécessite un accès au disque, l'accès direct est
coûteux. L'usage de l'allocation chaînée est limité aux petits systèmes, notamment pour l'organisation des
fichiers sur disquettes.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 38
9.5 ADRESSAGE LOGIQUE DANS UN FICHIER
Le SGF réalise la correspondance entre organisation logique et organisation physique des fichiers.
L'organisation logique, seule connue des utilisateurs, est déterminée par des considérations de commodité et
de généralité ; l'organisation physique, liée aux caractéristiques des supports de mémoire utilisée, est
déterminée par des considérations d'économie de place et d'efficacité d'accès. Ces deux organisations sont
généralement différentes, et chacune d'elles est définie par des structures de données propres gérées par le SGF.
Il est donc naturel de construire le SGF selon une structure hiérarchique, comportant au moins les deux
niveaux correspondant aux deux organisations ci-dessus : toute action définie au niveau logique est interprétée
par un ensemble d'actions au niveau physique. Des niveaux intermédiaires peuvent être définis pour faciliter
la conception ou répondre à des besoins spécifiques (portabilité).
Pour séparer l'organisation logique d'un fichier de son organisation physique, il est commode
d'introduire une organisation intermédiaire qui joue le rôle d'interface. Cette organisation intermédiaire est
simplement une suite d'emplacements désignés par des entiers consécutifs appelés adresses logiques. On peut
alors séparer en deux étapes la mise en correspondance entre organisation logique et organisation physique
d'un fichier :
1 - traduction en adresses logiques des noms spécifiés par les fonctions d'accès au fichier (un tel nom
désigne un enregistrement ou un champ dans un enregistrement).
2 - traduction des adresses logiques en adresses physiques.
Fonctions d'accès -> désignation d'article -> adresse logique -> adresse physique.
Les répertoires sont organisés avec des structures de données permettant d'insérer, de détruire, de
chercher le nom d'un fichier donné, et même de lister toutes les entrées. On rencontre le plus souvent trois
structures de répertoire : structure à un niveau, structure à deux niveaux, structure arborescente.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 39
9.6.1 Structure à un seul niveau
Cette structure n'existe pratiquement plus. Tous les noms sont traités au même et unique niveau. Cette
structure occasionne des conflits d'homonyme et n'est pas utilisée en dehors des systèmes mono-utilisateur.
On désigne par sécurité, l'ensemble des méthodes visant à assurer que toutes les opérations réalisées
sur un fichier se déroulent conformément à leurs spécifications, même en cas de défaillance au cours de
l'exécution, et que les données contenues dans un fichier ne sont pas altérées si aucune opération n'est effectuée
sur lui. Ces méthodes sont fondées sur la redondance interne et la sauvegarde des données.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 40
On désigne sous le terme protection, l'ensemble des méthodes visant à spécifier des règles
d'utilisation et à garantir que ces règles sont respectées. Ces dernières méthodes reposent sur la notion de droits
d'accès et sur l'existence de mécanismes permettant de garantir la conformité des opérations aux droits d'accès.
Unix définit un système de contrôle qui est employé dans toutes les circonstances. Cette notion, bien
qu'existante sous Windows, est très mal employée. Ceci provient de l'histoire de ce système. DOS et
Windows, jusqu'à la version 98 comprise, ignorait complètement la notion d'usager et de protection. Elle
fut introduite dans Windows NT, dans le système de fichiers NTFS (New Technology File System) mais
les mauvaises habitudes étaient prises et très peu de logiciels ont été conçus pour être installés correctement
et fonctionner sans les privilèges de l'administrateur, c'est à dire le droit de faire n'importe quoi.
9.9.1 Définition
Un système de fichiers (file system en anglais) est une structure de données permettant de stocker les
informations et de les organiser dans des fichiers sur ce que l'on appelle des mémoires secondaires
(disque dur, disquette, CD-ROM, clé USB, disques SSD, etc.). Une telle gestion des fichiers permet de
traiter, de conserver des quantités importantes de données ainsi que de les partager entre plusieurs
programmes informatiques. Il offre à l'utilisateur une vue abstraite sur ses données et permet de les
localiser à partir d'un chemin d'accès.
Il existe d'autres façons d'organiser les données, par exemple les systèmes de gestion de base de données
(notamment base de données relationnelle) et les fichiers indexés.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 41
10/ GESTION DES PROCESSUS
Tout ordinateur moderne (multiprogrammation), aussi modeste soit-il, doit gérer plusieurs activités
simultanément ou parallèlement (gestion de l'horloge en même temps que le programme de l'utilisateur). Le
déroulement de ces activités sur le CPU crée des processus. Ces processus peuvent s'exécuter compétitivement,
coopérer et/ou échanger des données. Pour ce faire, ils ont besoin d'être ordonnancés. L'ordonnancement est
une fonction fondamentale dans un système d’exploitation. Presque toutes les ressources d'un système
informatique sont planifiées avant d'être utilisées. Le CPU est bien entendu une des ressources primaires d'un
système informatique. Ainsi, sa planification est centrale à la conception d'un système d’exploitation.
Le système d'exploitation est responsable des opérations relatives à la gestion des processus :
- la création et la destruction aussi bien des processus système que des processus utilisateur
- l'ordonnancement des processus
- la synchronisation des processus
- la communication entre processus
- etc.
Ces diverses opérations relatives aux processus trouvent leur réalisation dans les modules suivants du
système d'exploitation :
- la planification des ressources (processeurs)
- la synchronisation des processus
- la gestion des inter-blocages.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 42
L'ordonnanceur (scheduler) : est la partie du système d'exploitation qui gère la file d’attente des
processus prêts et qui en sélectionne un pour lui allouer le CPU lorsque celui-ci devient disponible. Il faut noter
que la file des processus prêts n'est pas nécessairement organisée en FIFO. En considérant les algorithmes
d'ordonnancement, la file d’attente des processus prêts peut être organisée en FIFO, avec priorité, en arbre, ou
simplement non ordonné. On distingue trois types d'ordonnanceur :
- ordonnanceur à court terme (ordonnanceur) : l'ordonnanceur des processus prêts
- ordonnanceur à long terme : l'ordonnanceur des travaux
- ordonnanceur à moyen terme : swapping.
La préemption (la réquisition) : c'est le fait de suspendre un processus en état de Running et le placer
en l'état de Ready pour exécuter un autre processus plus prioritaire. Cela crée plusieurs situations qu'il faut
gérer :
1 - un processus passe de l'état Running à l'état Waiting
2 - un processus passe de l'état Running à l'état Ready (interruption)
3 - un processus passe de l'état Waiting à l'état Ready
4 - un processus se trouve dans l'état Terminated (exécution terminée)
Plusieurs raisons motivent la création d'un environnement qui permette la coopération des processus :
- le partage des données
- l'accélération des traitements (threads)
- la modularité des programmes
- la commodité de la multiprogrammation (POO)
Des mécanismes ont été développés pour assurer la synchronisation des processus coopérants afin de
garantir une exécution distincte et la consistance des données.
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 44
10.2.1. Les problèmes classiques de synchronisation
Différents problèmes de synchronisation ont été recensés et classés en échantillon pour servir à tester
toute nouvelle proposition de solution.
10.2.1.1 - Le problème du producteur et du consommateur
Un processus "producteur" produit des articles qui sont consommés par un processus "consommateur".
Par exemple un programme d'impression et le contrôleur d'imprimante. Ces processus partagent un buffer
commun. Ce tampon, limité en capacité, peut-être rempli par le producteur (le programme d’impression) et
peut être vidé par le consommateur (le contrôleur d’imprimante). Le producteur et le consommateur doivent
être synchronisés de manière que le consommateur ne tente de consommer un article non encore produit. Ainsi
le consommateur doit attendre si le tampon est vide et le producteur doit attendre si le tampon est plein.
On considère cinq philosophes qui passent leurs vies à penser et à manger. Les philosophes partagent
une commune table ronde entourée de cinq chaises, chacune appartement à un philosophe. Au milieu de la
table, il y a une cuvette de riz et la table est configurée avec cinq assiettes et cinq fourchettes (cf. figure). Un
serveur surveille et remplit au besoin la cuvette. Quand un philosophe est en train de penser, il ne dialogue pas
avec ses collègues. De temps en temps, un philosophe a faim, et tente de s'emparer des fourchettes qui sont
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021
Théories des systèmes d'exploitation /Page 45
entre lui et ses voisins de gauche et de droite, l'une après l'autre et l'ordre n'importe pas. Un philosophe ne
doit ramasser qu'une fourchette à la fois. Trivialement, il ne peut pas ramasser la fourchette qui est déjà dans
la main d'un voisin. Lorsqu'un philosophe affamé dispose de deux fourchettes en même temps, il mange sans
déposer les fourchettes. Lorsqu’il est rassasié, il dépose les deux fourchettes et recommence par penser.
Question : pouvez-vous écrire un algorithme qui permette à chaque philosophe de se livrer à ses
activités sans jamais être bloqué ?
Ce problème désigné par "le problème des philosophes dînant" est considéré comme un problème
classique de synchronisation, non à cause de son importance pratique, mais à cause de ce qu'il est un échantillon
représentatif pour les problèmes de simultanéité de contrôle.
Vos observations et suggestions sur le support et sur les interventions seront les bienvenues à
fakakpo@univ-lome.tg ou fakakpo01@gmail.com
***
Notes de cours compilées par Monsieur AKAKPO (fakakpo@univ-lome.tg) Version Décembre 2021