Synthèse et Exercices Systèmes d'Exploitation
Synthèse et Exercices Systèmes d'Exploitation
Système d'exploitation
Synthèse des cours et recueil d 'exercices corrigés
pour le module du système d'exploitation 1
GUIDE DE L 'ÉTUDIANT
Présenté Par :
Dr. Abdelkader OUARED
Ces trois dernièrs mois ont été pour moi l’occasion de rédiger mon premier livre autour du module
système d’exploitation en cette période difficile de propagation du Covid-19 . Je n’aurai jamais pu
mener cette première experience à terme sans l’appui moral et scientifique de mes chers amis qui m’ont
aidé à m’aménager beaucoup de "parenthèses". Au terme de cette periode de rédaction de livre, je
tiens tout d’abord à exprimer toute ma profonde gratitude aux personnes suivantes :
Ladjel Bellatreche qui n’a ménagé aucun effort en voulant me faire partager sa grande passion de la
recherche. Merci pour son génie qui fait de lui une vraie machine à idées pas toujours facile à suivre -.
J’ai appris beaucoup de choses de lui, et grace a lui je suis passionné par la recherche ,....
Un merci pour M. Abdelhafid chadlipour tous ses efforts afin de me corriger minutieusement le livres
et m’apprendre à les rédiger, pour sa rigueur, la clarté de ses idées ainsi que ses conseils avisés. J’ai
beaucoup appris aux côtés de mes colleagues tant sur le plan humain que scientifiques.
Un merci tout particulier à Yassine Mohammedi, mon adorable "colleague" qui, par son énergie, sa
gentillesse et son humour, m’a toujours redonné espoir et motivation, et ce depuis le premier jour de
mon arrivée à l’UIK.
Mes pensées vont d’abord à mes chers collègues pour leur soutien amical et pour leur professionnalisme :
— "‘Les Colleagues"’ : du département mathématiques et informatique.
— "‘Les Amis"’ : Tayeb, Madjid, Benaouda, Mohamed, Noureddine,Youcef, Amine et Djamel.
Merci au destin de m’avoir permis de croiser les chemins de : Kamel Boukhlfa, Abdelmalek, Selma
Bouarare, Selma Khouri, Amine Roukh, Sabrina, Lahcen, Farsi Mohamed, Soumia Benkrid et Fatima
Zohra pour leur esprit perspicace et généreux dont j’ai beaucoup appris...
Enfin et surtout, j’aimerais remercier ma famille : Ma mère, mon Père Mes frères, Mes soeurs.
Je clos ces remerciements par une pensée à tous ceux qui me sont chers. Que tous ceux et celles que je
n’ai pas mentionnés n’en reçoivent pas moins ma gratitude.
iii
Table des matières
Partie I Introduction 1
Introduction générale 3
v
Table des matières
vi
4.2.10 Les thread et le parallélisme . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.3.6 Exercice n°6 : Diviser pour calculer plus vite . . . . . . . . . . . . . . . . . 55
4.3.7 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.8 Exercice n°8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
vii
Table des matières
6.2.3 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.4 Adressage Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.5 Gestionnaire de la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.6 Comment implémenter la mémoire virtuelle ? . . . . . . . . . . . . . . . . 81
6.2.6.1 La pagination de la mémoire ? . . . . . . . . . . . . . . . . . . . 81
6.2.7 Gestion de la mémoire virtuelle : La pagination à la demande . . . . . . . . 83
6.2.8 Représentation des espaces virtuels des processus et de l’espace physique . 84
6.2.9 Détection et traitement d’un défaut de page . . . . . . . . . . . . . . . . . . 85
6.2.10 Remplacement de pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.11 Les algorithmes de remplacement . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.11.1 Algorithme FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.2.11.2 L’algorithme optimal (OPT) . . . . . . . . . . . . . . . . . . . . . 86
6.2.11.3 Algorithme LRU (Least Recently Used) . . . . . . . . . . . . . . . 87
6.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.7 Exercice n°7 (Algorithme de l’horloge : liste circulaire) : . . . . . . . . . . 89
6.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
viii
DMA 121
3.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.1.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.1.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.1.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.1.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.1.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.1.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Bibliographie 159
ix
Liste des figures
1 Fichiers comme une abstraction des propriétés physiques des dispositifs de stockage . . 20
2 Bibliothèque standard d’E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Organisations physiques des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4 Stockage des données structurées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5 Composantes du SGF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6 Allocation contiguë . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7 Allocation chainée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8 Structure de i-node (Exemple : Unix) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1 Programme vs Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2 Contexte d’un processus (Process Image) . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3 Relation entre les processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4 Modes d’exécution des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5 Modes d’exécution des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Le Process Control Block (PCB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7 Example : PCB de MS Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8 Exemple de la commande ps (process status) . . . . . . . . . . . . . . . . . . . . . . . . 50
9 Fork and Join Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
10 Les transitions d’un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11 Graphes des précédences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
12 L’algorithme Merge Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
xi
Liste des figures
1 SE : Modèle en couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2 Architecture Unix/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3 Appels systèmes (User mode vs. Kernel mode) . . . . . . . . . . . . . . . . . . . . . . . 99
4 La commande strace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
xii
5 Traitement par lots (E/S tamponnées) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6 Organigramme des problèmes de démarrage du système d’exploitation . . . . . . . . . 102
1 FCFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2 RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3 SJF non préemptif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4 Diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5 Le calcule le temps d’attente et le temps de résidence. . . . . . . . . . . . . . . . . . . . 144
6 Diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
xiii
Liste des tableaux
xiv
Première partie
Introduction
1
Introduction générale
Préface
Ce cahier est un recueil d’exercices sous forme d’un guide destiné aux étudiants de L2 informatique. Il
regroupe, des questions, exercices et QCM proposés durant les travaux dirigés, les travaux pratiques et
les examens antérieurs pour permettre à l’étudiant de mieux comprendre les notions de bases pendant
ses cours du système d’exploitation. C’est aussi un support utile à nos étudiants en L2-Info pour bien
préparer leurs contrôles continus et examens du Semestre 2.
Faut-il Être connaisseur en système d’exploitation pour être un bon développeur des applications informatique.
? Pourquoi il faut avoir des cours du système d’exploitation ? , j’ai envie de se spécialiser seuelement en
programmation, à été les questions fréquentes de mes étudiants dans les séances de cours et de TD du
module Système d’Exploitation.
Il faut savoir que d’être un bon programmuer, exige de connaitre les concepts fondamentaux des systèmes
exploitations [11] : Processes and Process Management, Threads and Concurrency, Scheduling, Memory
Management, Inter-Process Communication, I/O Management, Virtualization, Distributed File Systems,
Distributed Shared Memory et Cloud Computing.
D’abord, définissons ce qu’est un système d’exploitation. J’ai pris la définition de Richard Stallman, le
« père » du projet GNU [18] et mouvement du logiciel libre (OpenSource) qui a définit un système
d’exploitation (OS) comme un ensemble de logiciels qui gère le matériel informatique et fournit des
services pour les programmes. Ce système masque la complexité matérielle, gère les ressources de calcul
et assure la synchronisation et coopération entre processus, la fiabilité, la protection et la sécurité [1] [3].
Vous devez le connaître le fonctionnement des systèmes d’exploitation en tant que développeur 1 comme :
(1) les abstractions (processus, thread, fichier, socket, mémoire), (2) les mécanismes (créer, planifier,
ouvrir, écrire, allouer) et (3) les politiques du Job (LRU, LFU ) etc. Un développeur doit savoir plus que
les fondamentaux pour avoir une bonne exécution de leur programme et même à sa structure et à son
flux 2 . Lorsque vous écrivez un programme et qu’il s’exécute trop lentement, mais que vous ne voyez
rien de mal avec votre code, où allez-vous chercher une solution ? Comment pourrez-vous déboguer
le problème si vous ne savez pas comment fonctionne le système d’exploitation ? Accédez-vous à trop
de fichiers ? Manque de mémoire et d’échange est très utilisé ? Mais vous ne savez même pas ce qu’est
le swap ! Ou le blocage des E/S ?. Le coeur du cours comprend la programmation simultanée (threads
et synchronisation), la communication inter-processus et une introduction aux systèmes d’exploitation
1. http://www.cs.jhu.edu/~yairamir/cs418/os4/sld013.htm
2. http://en.wikipedia.org/wiki/Deadlock
3
Introduction générale
distribués.
Assurez-vous de lire la section récapitulative de chaque chapitre de mes cours 3 . Aprés regardez également
les exercices à la fin de chaque chapitre.
NB : j’ai pris certains exercices à partir des sources suivantes [6, 9, 5]. Un nombre de ces questions de
révision sont tirées du manuel du Silbershatz Galvin, Operating System Concepts, Addison-Wesley [17].
——————————————————————–
Copyright 2019-2020 : Université Ibn Khaldoun de Tiaret (Algérie).
Tous les droits sont réservés.
3. http://moodle.univ-tiaret.dz/course/view.php?id=77
4
Deuxième partie
5
Chapitre
1
Introduction aux Systèmes d’Exploitation
Sommaire
1.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Relation entre matériel et logiciel . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Système d’exploitation : Principe . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Appels Système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.4 Evolution des systèmes d’exploitation . . . . . . . . . . . . . . . . . . . . 9
1.2.5 Classification des SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.5 Exercice n°5 : Ex : Systèmes Multi-utilisateurs (« time-sharing ») . . . . 12
1.3.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.7 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.8 Exercice n°8 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1 Objectif
Le but de ces exercices est de mettre en évidence, l’influence de l’évolution historique des systèmes
d’exploitation sur quelques grandeurs caractéristiques de leurs performances.
7
Chapitre 1. Introduction aux Systèmes d’Exploitation
Le matériel represente l’ensemble des composants physiques. Ce matériel (hardware en anglais) est com-
mandé par un programme (logiciel = software). Le "‘software"’ et le "‘hardware"’ sont complémentaires :
— Le "‘hardware"’ a besoin du « software » pour être piloté.
— Le "‘software"’ a besoin du hardware pour être exécuté.
Pour combler l’écart entre les constructions d’un langage et l’interface de la machine physique, il faut
donc non pas une, mais deux couches intermédiaires de logiciel. Le système d’exploitation, au contact
de la machine physique, transforme celle-ci en une machine idéale (virtuelle) fournissant à la couche
supérieure les services d’intendance jugés adéquats. C’est ce que résume la figure ci-dessous (voir
Figure 1).
A quoi ca sert ? – à simplifier la vie des utilisateurs et des programmeurs – à gérer les ressources de la
machine d’une manière efficace. Autrement dit, cacher la complexité des machines pour l’utilisateur
afin d’utiliser la machine sans savoir ce qui est derrière Abstraction du terme « Machine » selon Coy [8]
— Machine Réelle = Unité centrale + Périphériques (CPU, Mémoire, I/O)
— Machine Abstraite = Machine Réelle + Système d’exploitation
— Machine Utilisable = Machine Abstraite + Application
8
1.2. Synthèse du cours
Interfaces aux services offerts par le système d’exploitation, souvent écrits en C/C++. Ces services sont
généralement accessible a travers des bibliothèques de haut-niveau (API 4 ). Les API les plus utilisées :
Win32 API et Java API etc.
L’implémentation d’appels système peut se réalise a travees le passage de paramètres aux appels système
(c-à-d : passage de mode utilisateur vers le mode noyau) à travers de Registres, Blocks de mémoire ou des
Piles (Figure 3).
Un système d’exploitation s’évoluera au fil du temps pour des raisons : (i) Mise à niveau du matériel (p.ex.
évolution de support de stockage), (ii) Nouveau type de matériel (p.ex. nouveau dispositif de traitement
-> FPGA (field-programmable gate array) ) et (iii) Nouveau service (p.ex. la multiprogrammation).
— 1945 - 55 : tubes et interrupteurs ( ↑ Ni langage ni système d’exploitation (utilisant des relais
mécaniques )
— 1955 - 65 : transistors, cartes perforées
— Traitement par lots
4. API est un acronyme pour Applications Programming Interface, est un ensemble de définitions et de protocoles qui
facilite la création et l’intégration de logiciels d’applications
9
Chapitre 1. Introduction aux Systèmes d’Exploitation
— Traitement par lots : Batch Processing System ou système de traitements par lots. c’est le premier
véritable système d’exploitation. Ce système est un programme résident en mémoire centrale.
Les travaux successifs sont regroupés en un seul paquet de cartes inséré dans le lecteur de cartes
par l’opérateur.
— Systèmes Multi-tâche : c’est un système qui assure l’éxécution de plusieurs programmes/appli-
cations en même temps (c-à-d. plusieurs processus). Par conséquent, nous somme tombé dans une
situation concurrente, ou chaque processus a besoin du processeur. Dans cette situation, on parle
de concept de la Multi-programmation. Ce dernier signifier la présence simultanée en mémoire
principale de plusieurs programmes. Cette technique exige une politique dans l’affectation de
processeur (ou scheduler), c-à-d que le processeur pourrait changer d’affectation avant la fin d’un
travail pour satisfaire des contraintes de temps de réponse. La multiprogrammation nécessite
certains mécanismes comme : La protection de la mémoire, le système d’interruption, la gestion et
le partage des ressources,..etc.
— Systèmes Multi-utilisateurs : Permettre a différentes personnes de travailler avec un ordinateur
en même temps connexion par via le terminal de l’ordinateur lui-même à distance (telnet, ssh, ftp,
...) de telle sorte il donner l’impression à chaque utilisateur qu’il est seul. Ce système exige une
gestion des droits de fichiers (pour éviter la destruction des fichiers etc.) de processus. La technique
du Systèmes Multi-utilisateurs ( ou temps partagé) consiste à offrir à chaque utilisateur l’équivalent
d’une machine individuelle, tout en faisant bénéficier des services communs. Il est évident que la
présence de plusieurs utilisateurs dans le système implique aussi la multiprogrammation.
— Systèmes Multi-processeurs : Système avec plusieurs processeurs Parallèle (2 CPU en Mini-
mum), est un système Vrai multi-tâche qui doit assurer qu’il y a l’éxecution d’autant de processus
que processeurs en même temps. Contrairement au système avec un seul processeur qui assure
10
1.3. La liste des exercices
une exécution en mode quasi-parallèle (pipeline 5 ). Ce mode d’exécution doit arrêter et reprendre
les différentes processus avec la gestion d’ordonnancement des processus "‘scheduler".
— Systèmes temps réel : Sert pour le pilotage et le contrôle des déroulements externes (p.ex.
centrale électrique, systèmes de pilotage des réacteurs nucléaires, systèmes de défense du territoire
). doit garantir des temps de réactions données pour des signaux extérieur urgents Les systèmes
temps réel souples ont des contraintes temporelles moins strictes et ils ne supportent pas le
scheduling d’échéances
— Systèmes distribués (répartie) : Un système reparti est un ensemble de processeurs ne parta-
geant pas de mémoire ou d’horloge. doit permettre l’éxecution d’un seul programme sur plusieurs
machines. Ce système permet de distribuer les processus et les remettre ensemble pour gros
calculs, p.ex. inversion de grandes matrices.
— Les années 80 ont vu le développement de deux technologies : (i) L’apparition des mi-
croprocesseurs et l’accroissement de leurs performances, qui permet de disposer d’une grande
puissance de calcul à des coûts de plus en plus faibles, et (ii) Le développement des techniques
de transmission de données (téléinformatique) et l’intégration progressive de la fonction de
communication dans les systèmes informatiques.
Les questions suivantes vous donneront une idée sur l’évolution des systèmes d’exploitation (operating
system). Testez vos connaissances en répondant aux questions de la théorie.
11
Chapitre 1. Introduction aux Systèmes d’Exploitation
Le travail demandé dans cet exercice consiste à créer un organigramme de démarrage d’un PC pour
comprendre du processus de démarrage du système d’exploitaton.
↪ voir correction (Section 1.1.3 [page 101]).
Considérons un système en temps partage servant 100 utilisateurs ; admettons que le temps de réflexion
soit en moyenne 9 fois plus long que le temps d’attente. Celui-ci représente alors 10% du temps total, et
12
1.3. La liste des exercices
Catégorie
Lunix, Windows, MAC OS, Solaris Système d’exploitation
Contient des instructions, Tâche, Aspect Dynamique d’un Programme
Thread, Programmation Concurrente, Paralléliser les Traitements
Accès Unifié, Fonctionnement Transparent, Gestionnaire d’Accès
Mode Protégé, Interfaces aux Services, Lien entre Mode Utilisateur
et Mode Noyau
Ordinateur à Programme non Enregistré, Séparation entre le Stockage
et le Processeur est Explicite, Programme en Mémoire
Gestion de Mémoire, Gestion de Processus, Gestion de Fichiers et es E/S
il y a donc en moyenne 10 utilisateurs "‘ actifs "‘. En supposant que l’UC est allouée toutes les 50 ms
(qui est donc le quantum) et qu’une requête élémentaire exige un quantum au plus, calculer le temps de
réponse.
↪ voir correction (Section 1.1.5 [page 103]).
Chaque groupe de mots ci-dessous appartient à une catégorie. A vous de trouver la catégorie en essayant
d’être le plus précis que possible. La première ligne est un exemple (voir le Tableau 2).
↪ voir correction (Section 1.1.6 [page 103]).
13
Chapitre 1. Introduction aux Systèmes d’Exploitation
On considère un ordinateur dont les organes périphériques sont un lecteur de cartes (1000 cartes /
minutes) et une imprimante (1000 lignes / minutes). Un travail moyen est ainsi défini : lire 300 cartes,
utiliser le processeur pendant une minute, imprimer 500 lignes.
On suppose que tous les travaux soumis par les usagers ont des caractéristiques identiques à celles de ce
travail moyen. On définit deux mesures des performances du système :
2. le rendement r de l’unité centrale : fraction du temps total d’utilisation de l’unité centrale pendant
lequel elle exécute du travail utile (autre que la gestion des périphériques).
On suppose que les périphériques sont gérés par l’unité centrale. Calculer r et D dans les hypothèses de
fonctionnement suivantes :
1. Le système est exploité en porte ouverte ; la durée d’une session est limitée à 15 mn. On suppose
qu’un usager a besoin de 4 mn pour corriger son programme au vu des résultats, et faire une
nouvelle soumission.
Un lot est composé de 50 travaux, que pour simplifier, on suppose tous constitués de 3 phases :
Lecture des cartes (20 secondes), calcul (15 secondes), impression des résultats (5 secondes). Le temps
mis pour passer d’un travail à un autre est négligeable.
Calculer le temps de traitement total du lot et le taux d’utilisation de l’unité centrale pour le calcul dans
les deux cas suivants :
1.4 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
14
1.4. QCM
Question no 1 Dans les années 80, à quelle société Microsoft proposa t-il son système d’exploitation
PC-DOS qui allait ensuite devenir MS-DOS ?
a. IBM
b. Amiga
c. Apple
Question no 2 Que signifie l’acronyme GNU ?
Question no 3 Quelles sont les deux grandes branches de système UNIX ? (Plusieurs réponses possibles)
a. FreeBSD
b. System V
c. AIX
d. Linux
a. 16 ans
b. 21 ans
c. 31 ans
d. 48 ans
a. System V
b. Linux
c. iOS
d. BSD
15
Chapitre 1. Introduction aux Systèmes d’Exploitation
Question no 7 Dans le fichier /etc/passwd, quel(s) shell(s) ne permet(tent) pas d’interpréter des com-
mandes ? (plusieurs réponses sont possibles)
a. /bin/bash
b. /bin/false
c. /sbin/nologin
d. /bin/zsh
a. cp
b. scp
c. sftp
d. ssh
a. Multitâche
b. À temps complet
c. Multi-utilisateur
d. À temps partagé
a. Suspendre son exécution au profit d’un autre processus / une autre tâche.
b. Arrêter définitivement son exécution au profit d’un autre processus / une autre tâche.
c. Geler le processus / la tâche pour un temps indéterminé (fini).
d. Transférer le processus / la tâche en zone de swap
16
Chapitre
2
Système de Gestion des Fichiers (SGF)
Sommaire
2.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.1 Notion des Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.2 Organisations physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.3 C’est quoi un SGF ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.4 Techniques d’allocation des blocs physiques . . . . . . . . . . . . . . . . 22
2.3 Les performances d’un SGF . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Objectif
Le but de ces exercices est de s’assurer que les étudiants ont bien appris la partie la plus visible d’un
système d’exploitation : le système de gestion de fichiers (SGF) est qui se charge de gérer le stockage et la
manipulation de fichiers (sur une unité de stockage : partition, disque, CD, disquette. Un SGF a pour
principal rôle de gérer les fichiers et d’offrir les primitives pour manipuler ces fichiers.
Un fichier est une unité de stockage logique de l’information de différents types, en particulier : texte
,son, image et vidéos. Comme illustre la Figure 1, cette entité est une abstraction des propriétés physiques
19
Chapitre 2. Système de Gestion des Fichiers (SGF)
des dispositifs de stockage. Les fichiers sont utilisés pour représenter des données sur des dispositifs de
stockage (HDD, SSD, Disque USB, DVD/CD etc. ).
Figure 1 – Fichiers comme une abstraction des propriétés physiques des dispositifs de stockage
Cette abstraction facilite la vie des utilisateurs et des programmeurs. Par exemple, si vous êtes un
programmeur en langage C, la bibliothèque standard (stdio) des d’E/S gère des appels système liés aux
intructions d’entrées/sorties (par ex. fopen, fclose) (voir Figure 2).
D’un point de vue logique, le Système de Gestion des Fichiers (SGF) est vue comme une arborescence de
dossiers/ fichiers. La question qui se pose : Comment représenter ces fichiers sur un élément hardware ?
L’unité d’allocation sur le disque dur est le bloc physique. Un bloc physique est composé de 1 à n secteurs.
Par exemple : 1 bloc = 2 secteurs de 512 octets soit 1 kB.
Les opérations de lecture et d’écriture du SGF se font bloc par bloc.
Chargement d’un bloc b :
— si le bloc b est dans le cache, retourner son numéro de slot.
— sinon s’il y a un slot libre dans le cache, chargé le bloc du disque
— sinon choisir un slot à vider (l’écrire sur disque) et le remplacer par b par des stratégies de
remplacement comme LRU (Least Recently Used), FIFO First In First Out, etc (voir Figure 3).
20
2.2. Synthèse du cours
Dans le cas des données structurées, chaque bloc peut contenir un ensemble d’enregistrements, le
Facteur de blockage représente le nombre enregistrement par bloc. L’identification d’un
enregistrment est basé sur la notion de tuple identfier (TID :[N° Bloc , Offset] ). La Figure 4 illustre
le stockage des données structurées dans le support de stockage. Cette technique est utilisée dans
les Système de Gestion de Base de Données (SGBD) [4].
Un Système de gestion de fichiers abrégé FS (File System) est une structure qui permet de stocker,
d’organiser des données sur un support : Disque magnétique (HDD) , SSD, RAM, USB, DVD,...
Un SGF fournit une métode d’organisation des fichiers et des repertoires d’un volume (Il découpe le
volume en blocs (clusters). Exemple des SGFs : SGF de MS Windows ( FAT file allocation table (table
d’allocation de fichiers), FAT16, FAT32, NTFS (new technology file system), SGF de Linux (EXT2 (second
extended file system), EXT3, Ext4), SGF de macOS (HFS (Hierarchical File System), HFS+).
Les tâches d’un SGF peut se résumer aux points suivants :
— Interface conviviale pour manipuler les fichiers.
— Le stockage des fichiers dans le disque dur.
— La gestion d’espace libres sur le disque dur.
— La gestions des fichiers dans un environnement muti-utilisateur.
— Les données d’utilitaire pour le diagnostic, la récupération en cas d’erreurs, l’organisation des
fichiers.
La Figure 5 illustre les composantes du SGF qui sont organisés sous forme des couches :
1. Méthode d’accès : représente modes d’accès aux fichiers : séquentiel, indexé, etc.
21
Chapitre 2. Système de Gestion des Fichiers (SGF)
2. E/S logique : realise un mapping entre les demandes E/S des utilisateurs avec un vocabulaire
physique ( inodes, files, directories, superblocks (partitions) etc.).
4. Système de fichiers de base : son rôle est l’ordonnancement des E/S et l’ allocation du buffer.
5. Pilote de périphérique de disque : son rôle est est de communiquer directement avec le support
de stockage.
Dans ce type d’allocation, les fichiers stockés par blocs contigus sur le disque. Par conséquent, le temps
de positionnement des têtes est minimal. L’entrée du répertoire permet d’associer au nom du fichier
(nom externe au SGF) les informations stockées en interne par le SGF. Comme illustré la Figure 6, l’entrée
de répertoire indique l’adresse du premier bloc et longueur (en nombre de blocs). Donc, l’accès direct
et séquentiel facile à implémenter, il suffit de mémoriser l’adresse du premier bloc. Cette technique
necessite la gestion de l’espace libre on utilisant des techniques comme la Fragmentation externe, BitMap,
Compactage etc. Cette approche est utilisée pour les supports en lecture seule (CD-ROM, DVD-R, etc.).
22
2.2. Synthèse du cours
Elle consiste à allouer des blocs chainés pour représenter un fichier. Chaque bloc se termine par un
pointeur sur le bloc suivant et une entrée de répertoire contient un pointeur sur le premier bloc. Dans
cette situation, le fichier peut désormis être éparpillé sur le disque puisque chaque bloc permet de
retrouver le bloc suivant. Le principe de cette approche est illutré dans la Figure 7.
Les avantages de l’allocation chainée est la gestion dynamique de l’espace, par conséquent, pas de limite
de taille et pas de fragmentation externe puisque tous les blocs peuvent être alloués. L’inconvénient
de cette approche réside dans l’accès au fichier est séquentiel : on commence le parcours à partir du
début du fichier même si on a récemment chargé les blocs , et la fiabilité, c-à-d que une perte de
23
Chapitre 2. Système de Gestion des Fichiers (SGF)
pointeur critique implique on se retrouve dans une autre zone mémoire → la solution est l’usage des
listes doublement chaînées, reproduction du nom de fichier et numéro de bloc dans chaque bloc etc.
Mais d’un autre côté, cette technique coûte très cher en terme de maintenance et de mise a jours des
sources d’information.
L’ i-node (Index NODE ou noeud d’index en Français) est un concept très ancien (année 50) qui a été
appliqué dans tous les SGF. Un i-node est une structure représentant : a) un processus, b) un espace
d’adressage, c) un fichier, d) une partition, e) un système de fichiers et f) un périphérique.
Le i-node represente un fichier en deux partie : les Métadonnées et le contenu. Les Métadonnées
represente les attributs de fichiers comme le type (le type du fichier, un entier dont la valeur est 0 pour
un fichier et 1 pour un répertoire, Le nombre de liens (voir après), UID (User Identification) : numéro
d’utilisateur du propriétaire, GID (Group Identification) : numéro du groupe propriétaire, Taille du
fichier en octets, Adresses des blocs de données (qui contiennent le fichier), Droits du fichier – Date du
dernier accès, date de la dernière modification, date de création. La Figure 8 illustre la strcture de i-node.
Les performances d’un système de gestion de fichiers dépendent du compromis entre l’algorithme
d’allocation et la fragmentation que l’on permet (optimisation physique / optimisation logique).
La fiabilité est le résultat direct d’une bonne consistance du système de gestion des fichiers. Il faut
vérifier de temps en temps. Sous UNIX/Linux, la commande fsck permet de :
— Verifier les blocs
— Verifier la consistances des fichiers
La journalisation est une forme d’optmisation qui consiste à retarder dans le temps les opérations,
longues, en modification du systeme de fichiers, car :
— Les disques durs sont trés lents.
24
2.4. La liste des exercices
— Les mémoires vives (RAM) permettent de stocker beaucoup plus d’information, en quantité et en
temps.
— Les écritures, souvent en petite quantité, prennent énormement de temps en comparaison des
capacités de traitement des machines actuelles
25
Chapitre 2. Système de Gestion des Fichiers (SGF)
On considère un système de fichiers tel que l’information concernant les blocs de données de chaque
fichier est donc accessible à partir du i-noeud de celui-ci (comme dans UNIX). On supposera que :
— Le système de fichiers utilise des blocs de données de taille fixe 1K (1024 octets) ;
— L’i-noeud de chaque fichier (ou répertoire) contient 12 pointeurs directs sur des blocs de données,
1 pointeur indirect simple, 1 pointeur indirect double et 1 pointeur indirect triple.
— Chaque pointeur (numéro de bloc) est représenté sur 4 octets.
1. Quelle est la plus grande taille de fichier que ce système de fichiers peut supporter ?
2. On considère un fichier contenant 100,000 octets. Combien de blocs de données sont-ils nécessaires
(au total) pour représenter ce fichier sur disque ?
On considère un système disposant d’un système de fichiers similaire à celui d’UNIX avec une taille
de blocs de données de 4K (4096 octets) et des pointeurs (numéros de blocs) définies sur 4 octets. On
supposera que le i-noeud de chaque fichier compte 12 pointeurs directs, 1 pointeur indirect simple, 1
pointeur indirect double et 1 pointeur indirect triple. On désire créer un fichier contenant un total de
20.000.000 (vingt millions) de caractères (caractères de fin de ligne et de fin de fichier compris).
— Quelle est la fragmentation interne totale sur le disque résultant de la création de ce fichier.
↪ voir correction (Section 2.1.4 [page 113]).
Soit un fichier stocké dans le disque sous forme de 12 blocs nommés : 1, 2, ..., 12. Les demandes d’E/S
sont représentées comme suit :
26
2.5. QCM
— D1= 1, 2, 5, 8, 3, 7, 9, 4, 10 ;
— D2= 1, 2, 5, 8 ;
— D3= 1, 2, 5, 8, 3, 7, 9, 4, 10 ;
— D4= 2, 5, 3, 6, 11, 4, 12 ;
— D5= 2, 5, 3, 6, 11.
On suppose que le buffer peut contenir 6 blocs.
a) On utilise une politique de remplacement FIFO (First-In, First-Out), calculer le nombre des E/S de ces
demandes dans l’ordre : D1→D2→D3→D4→D5. Le tableau suivant représente le nombre de références
et la fréquence de chaque bloc dans la charge de demande.
Blocs 1 2 3 4 5 6 7 8 9 10 11 12
Fréquence 3 5 5 3 5 2 2 3 2 2 2 1
b) Calculer le nombre des E/S de ces demandes dans l’ordre précédent, si on utilise l’algorithme LFU.
L’algorithme LFU (Least Frequently Used) se déroule comme suit :
— Remplacer le bloc qui a été référencé le moins souvent,
— pour chaque bloc de la chaîne de référence, nous devons conserver un nombre de références.
— Les références des blocs sont incrémentées à chaque fois qu’un bloc est référencé.
↪ voir correction (Section 2.1.5 [page 114]).
2.5 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
Question no 1 Dans le fichier /etc/passwd, quel(s) shell(s) ne permet(tent) pas d’interprter des com-
mandes ? (plusieurs rponses sont possibles)
a. /bin/bash
b. /bin/false
c. /sbin/nologin
d. /bin/zsh
a. des fichiers
b. des options
c. des rpertoires
d. des arguments
27
Chapitre 2. Système de Gestion des Fichiers (SGF)
Question no 3 On veut renommer pour notre session la commande kill -9 avec le nom stop_signal.
La commande effectuer est :
Question no 7 Chaque utilisateur UNIX possède un répertoire qui porte son nom de login. Comment
l’appelle t’on ? :
a. perso
b. home
c. directory
d. user
28
2.5. QCM
a. pass
b. passwd
c. password
d. newpass
Question no 10 Quel alias permet de revenir dans le répertoire personnel et d’en lister le contenu ?
a. rn oui non
b. cp oui non
c. mv oui non
d. mp oui non
a. oui
b. non
c. cela dépend de la version du noyau UNIX
d. non, mais il est possible d’utiliser des chiffres
29
Chapitre 2. Système de Gestion des Fichiers (SGF)
Question no 15 Propriétaire du fichier essai.html, quelle commande dois-je utiliser pour pour retirer
les droits en exécution à tout le monde. ? (Plusieurs réponses possibles)
a. chmod u+ressai.html
Question no 16 La notation octale 724 pour la gestion des droits d’accés correspond à la notation
symbolique :
a. rwx -w- r-
d. r- -w- rwx
a. 0
b. 1
c. true
d. vrai
↪ voir correction (Section 2.2 [page 114]).
30
Chapitre
3
Gestion des périphériques : Interruption,
Attente Active, et DMA
Sommaire
3.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1 Les interruptions en informatique . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2 Gestion des Entrées Sorties (E/S) . . . . . . . . . . . . . . . . . . . . . . 34
3.2.3 Type d’interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.4 Déroulement d’une interruption . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.5 Attente Active (Polling) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.6 Accès Direct à la Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.7 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
"Le bruit est la plus importante des formes d’interruption. C’est non seulement une interruption, mais aussi
une rupture de la pensée".
- rthur Schopenhauer
3.1 Objectif
est de comprendre comment le CPU (Central Processing Unit) communique avec les périphériques
d’entrée-sortie de la machine afin de traiter les interruptions (p.ex. quand l’utilisateur appuie sur une
touche du clavier ;. quand il clique avec la souris ).
33
Chapitre 3. Gestion des périphériques : Interruption, Attente Active, et DMA
Sur une machine, le processeur exécute les programmes chargés en mémoire (ou processus). Une autre
composante peut demander à l’interrompre pour faire temporairement autre chose. Par exemple :
— Périphérique : un paquet réseau arrive, mouvement de la souris
— Gestion d’erreur : erreur arithmétique, instruction invalide ,
— Ô⇒ Il faut donc introduire un mécanisme matériel qui indique au processeur d’arrêter le
traitement courant.
Ce mécanisme s’appelle une interruption
On désigne par E/S tout transfert d’information depuis ou vers l’ensemble Processeur/Mémoire centrale.
On distingue le transfert d’information entre divers niveaux de la hiérarchie de la mémoire : registres,
mémoire centrale, disques magnétiques et transfert d’information depuis ou vers le monde extérieur :
périphériques, autres ordinateurs. Dans l’organisation des E/S, nous distinguons 3 types d’organes (voir
Figure 2) : (i) Les périphériques, (ii) Les contrôleurs CTRL (processeur primaire) et (iii) Les canaux (UE).
— Les périphériques : sont les organes qui assurent les opérations d’Entrées et de Sorties (en
abrégé E/S, ou I/O en anglais)
— Un contrôleur : (on dit parfois coupleur) est un dispositif adapté à chaque type de périphérique.
Il se connecte à plusieurs périphériques de même type (mais un seul périphérique peut transférer
à la fois). Il assure les fonctions logiques des E/S. Concrètement, un contrôleur est un processeur
primaire comprenant une petite mémoire (dite tampon ou buffer) et quelques registres spécialisés
— Un canal : Appelé parfois unité d’échange (Direct Memory Access DMA), c’est un processeur
spécialisé dans les opérations d’E/S. Il ne peut pas être lancé que par un processeur central. Il
peut interrompre l’UC. et son rôle est de commander les contrôleurs et les périphériques.
34
3.2. Synthèse du cours
L’adresse d’un périphérique (memory-mapped I/O (MMIO)) comprend 3 parties : numéro du canal
relié à la mémoire centrale, numéro du contrôleur attaché au canal et numéro du périphérique
attaché au contrôleur.
Nous commencons par definir les concepts clés dans ce processus de déroulement des interruptions.
Le Mot d’Etat du Processeur (Processor Status Word, PSW) est l’ensemble des données qui caractérisent
cet état à un instant donné. Il s’agit du contenu de ses registres. Ce dernier Il comporte généralement :
— Informations sur l’état du processeur : État d’exécution : Actif/Attente, Mode d’exécution :
Maître/Esclave, Masque (informations) sur les interruptions.
— Informations sur les données accessibles et les droits : Table des segments, Protection mé-
moire.
— Informations sur le déroulement de l’activité en cours : Compteur ordinal (CO).
35
Chapitre 3. Gestion des périphériques : Interruption, Attente Active, et DMA
Remarque : Le processeur a deux états : attente (Interruption externe) ou actif (éxecution d’une instruc-
tion).
Le vecteur d’interruption (VI) est une table qui contient les adresses des routines d’interruption. Les
interruptions sont numérotées et ces numéros (allant de 0 à 255 dans un PC) servent d’index pour
rechercher dans le vecteur d’interruption l’adresse de la routine à exécuter.
Une alternative au système des interruptions est le polling. Chaque élément est testé périodiquement
(CPU cycles) pour vérifier s’il demande un service particulier. L’attente active, ou polling est une
technique de programmation que les processus utilisent lorsqu’ils vérifient de façon répétée si une
condition est vraie, comme l’attente d’une entrée ou encore la libération d’un verrou.
Algorithme de scrutation
1. Lorsqu’un périphérique a une commande à exécuter par la CPU, celui-ci vérifie en permanence le bit
occupé de la CPU jusqu’à ce qu’il soit effacé (0).
36
3.2. Synthèse du cours
2. Lorsque le bit occupé est effacé, le périphérique définit le bit d’écriture dans son registre de commande et
écrit un octet dans le registre de sortie de données.
4. Lorsque la CPU vérifie le bit de commande prêt du périphérique et la trouve définie (1), elle définit (1) son
bit occupé.
6. Après exécution de la commande, la CPU efface (0) le bit de commande prêt, le bit d’erreur du périphérique
pour indiquer l’exécution réussie de la commande du périphérique, puis efface (0) son bit occupé pour
indiquer également que la CPU est libre de s’exécuter. la commande d’un autre appareil.
Les étapes de l’échange à la base DMA est illustrée dans la Figure 4 : (1) Le processeur initialise les
registres du DMA en lui envoyant une adresse mémoire et le nombre d’octets à transférer, (2) Le DMA
transfert les données entre un disque et la mémoire, pendant ce temps, l’UC travaille autre tache. Le
DMA doit être le maître du bus, (3) Une fois le transfert terminé, il y a une génération d’une interruption.
37
Chapitre 3. Gestion des périphériques : Interruption, Attente Active, et DMA
38
3.3. La liste des exercices
14. Expliquer pourquoi les interruptions ne sont pas appropriées pour implémenter des primitives de
synchronisation dans les systèmes multiprocesseurs.
15. Expliquez pourquoi les interruptions et la répartition du temps de latence doit être délimitée dans
un système dur en temps réel.
On considère un ordinateur qui lit ou écrit un mot mémoire de 4 octets en 10 ns. On suppose que lors
d’une IT, il faut recopier les 32 registres du processeur plus le compteur ordinal et le pointeur de pile du
processus. Si l’ordinateur ne traite que des instructions, quel nombre maximal d’ITs peut-il traiter en 1
ms ?
↪ voir correction (Section 3.1.2 [page 123]).
On suppose qu’une page de texte contient 50 lignes de 80 caractères chacune. On considère une
imprimante qui imprime 6 page/mn. Le temps d’écriture d’un caractère dans le registre de sortie de
l’imprimante étant très court, il est ignoré. Cette impression est gérée par des entrées/ sorties avec IT à
chaque caractère.
Quel est le pourcentage d’occupation du processeur par les ITs si chaque interruption prend 50 µs ?.
↪ voir correction (Section 3.1.3 [page 123]).
On considère une horloge qui s’exécute à 60 Hz (60 tops par seconde) et on suppose que le gestionnaire
d’IT de l’horloge requiert 2ms par top, y compris le temps de basculement de processus. Quelle est le
pourcentage d’utilisation du processeur réservé à l’horloge ?
↪ voir correction (Section 3.1.4 [page 124]).
Le temps d’accès d’une mémoire cache est de 120 ns et celle de la mémoire principale 900 ns. On estime
que 80% des demandes de mémoire représentent la lecture et restent 20% pour l’écriture. Le taux de
réussite pour l’accès en lecture est seulement 0,9. Une procédure d’écriture est utilisée.
1. Quel est le temps d’accès moyen du système considéré seulement des cycles réels de mémoire ?
2. Quel est le taux de réussite en tenant compte du cycle d’écriture ?
3. Quel est le temps d’accès moyen du système pour les requêtes de lecture et d’écriture.
↪ voir correction (Section 3.1.5 [page 124]).
39
Chapitre 3. Gestion des périphériques : Interruption, Attente Active, et DMA
Attente
DMA IT
Active
Lorsque le CPU n’est pas complètement chargé,
laquelle des méthodes suivantes de transfert de données est préférée
Le processeur lit le registre d’état du dispositif et vérifie si un indicateur
(ou flag) "terminé" a été défini par le dispositif.
Notifier un processeur lorsqu’un périphérique d’E/S nécessite une attention.
Une plus grande efficacité lorsque le périphérique d’E/S génère beaucoup
de trafic
Le processeur n’a pas besoin de dépenser des cycles interrogeant le dispositif
Il est considéré comme efficace car il supprime le CPU d’être responsable
du transfert de données
Le processeur envoie la commande d’E/S au driver du disque.
Le driver détaille la commande et la traduit au contrôleur.
Il peut y avoir moins de latence entre le moment où le dispositif
est prêt et les données sont transférées.
Déplacer de grandes quantités de données entre les périphériques
d’E/S et la MC.
Peu efficace car "context switching" couteux
Sur un ordinateur à base de processeurs Intel x86, cinq périphériques sont reliés aux contrôleurs
d’interruption (PIC) de la manière suivante :
— Périphérique1 relié à l’IRQ1, Périphérique2 relié à l’IRQ3, Périphérique3 relié à l’IRQ8,
— Périphérique4 relié à l’IRQ9, Périphérique5 relié à l’IRQ12.
Ces cinq périphériques transmettent, simultanément, des demandes d’interruption aux contrôleurs
d’interruption.
— a) Donner l’ordre de traitement de ces demandes.
— b) Donner le nombre maximum de périphériques que l’on peut connecter sur une machine ayant
deux contrôleurs d’interruption. Justifier votre réponse.
— c) Donner les différents types d’interruptions des processeurs Intel 80x86.
Considérons la procédure de traitement d’une interruption du clavier suivante :
Procédure traiter_it_clavier
Sauvegarde du contexte ;
40
3.4. QCM
3.4 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
a. Disque
b. Mémoire RAM
c. Cycle CPU
a. overflow
b. erreur d’adressage
c. code opération inexistant
d. problème de parité
e. mouvement de la souris
f. division par zéro
41
Chapitre 3. Gestion des périphériques : Interruption, Attente Active, et DMA
Question no 5 La commande strace intercepte et affiche les appels systèmes d’un programme ?
a. overflow
b. erreur d’adressage
c. code opération inexistant
d. problème de parité
e. mouvement de la souris
f. division par zéro
Question no 6 La commande qui intercepte et affiche les appels systèmes d’un programme ?
a. strace
b. tcpdump
c. netstat
d. swapon
e. nicstat
f. pidstat
Question no 7 Le mot d’état du processeur (Processor Status Word, PSW), il comporte généralement : ?
42
Chapitre
4
Gestion des Processus (primitives fork/join)
Sommaire
4.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.1 Notion de Processus : Qu’est ce qu’un Processus ? . . . . . . . . . . . . . 46
4.2.2 Tables de Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.3 Contexte d’un processus (Process Image) . . . . . . . . . . . . . . . . . . 47
4.2.4 Modes d’exécution des processus . . . . . . . . . . . . . . . . . . . . . . 47
4.2.5 Etats des processus : Cycle de vie d’un processus . . . . . . . . . . . . . 48
4.2.6 Implémentation des processus . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.7 Opérations sur les processus . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.8 Destruction de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.9 Processus suspendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.10 Les thread et le parallélisme . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.3.6 Exercice n°6 : Diviser pour calculer plus vite . . . . . . . . . . . . . . . . 55
4.3.7 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.8 Exercice n°8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.1 Objectif
L’approche fork/join a pour objet de traiter de très grandes quantités de données, dans de très nombreuses
tâches, tout en conservant le principe qu’une tâche doit effectuer un « petit » traitement. L’objectif de
ce TD est de transformé des graphes de dépendances sou forme d’un algorithme parallèle.
45
Chapitre 4. Gestion des Processus (primitives fork/join)
Le terme processus a été introduit dans les années 60 pour généraliser "‘job concept"’. Le processus
est une instance de programme binaire Différents processus peuvent exécuter différentes instances du
même programme. Au minimum, l’exécution du processus nécessite les ressources suivantes : Mémoire
pour contenir le code de programme et les données. Un ensemble de registres CPU pour supporter
l’exécution.
Remarque : Unité de base d’éxecution dans le système d’exploitation (thread).
La pile (ou Stack) est utilisé pour l’allocation de mémoire statique et le tas (ou Heap) pour l’allocation de
mémoire dynamique, les deux se trouvent dans la RAM de l’ordinateur (voir Figure 1).
Le système d’exploitation gère gère l’utilisation des resources de processus (processor cycles, main
memory, I/O devices).
La table de ressource contient trois type d’information : Tables de mémoire, Tables d’E/S et Tables de
fichiers.
— Tables de mémoire :
Garder une trace de la mémoire physique et de la mémoire virtuelle par processus Allocation de
l’espace de permutation aux processus Attributs de protection
— Tables d’E/S :
État de l’opération d’E/S en cours Emplacement de mémoire utilisé comme source ou destination
de l’opération
— Tables de fichiers :
Les informations sur l’emplacement et les attributs des fichiers peuvent être gérées par le noyau
Toutes les tables de ressources du SE sont également sujettes à la gestion de la mémoire
46
4.2. Synthèse du cours
La ? ? présente un exemple de trois processus P1, P2 et P3. Dans cet exemple, P1 utilise la rassource E/S
(I/O), le processeur (CPU) et la mémoire centrale. Donc, in peut dire que P1 est en cours d’éxecution. P2
est une processus en bloquées, il demande une ressource E/S (p.ex lire des données à partir de clavier).
Pn est une processus qui utlise seulement la ressource de la mémoire, donc Pn est élu à l’éxecution.
C’est l’ensemble des informations que les actions du processus peuvent consulter ou modifier (voir
la Figure 2). Ces informations sont : 1. Contexte du processeur (mot d’état et registres généraux) ; 2.
Contexte du mémoire : c’est l’espace de travail qui comprend : (Les segments procédures, Les segments
données, Les piles d’exécution) et 3. Ensembles d’attributs du processus : (Nom : nom interne désignant
le bloc de contrôle de processus ou PCB (de l’anglais process control block) du processus, qui sera discuté
plus tard, Priorité : en fonction du scheduling et Droits : opérations permises par le processus.
47
Chapitre 4. Gestion des Processus (primitives fork/join)
Afin d’exécuter des programmes, il faut mettre à leur disposition les ressources nécessaires à leur
exécution : le processeur , l’espace mémoire et les données nécessaires. La relations entre processus
peuvent être selon trois type d’interaction sur les ressources (Figure 3) : (i) chaque processus dispose de
son propre espace mémoire, (ii) ne pas perturber les autres (sécurité) et (iii) différents flots d’exécution
partagent les même ressources des processus.
Cette intéraction engendre trois mode execution, comme illustre la Figure 5 : séquentiel, pseudo-
parallélisme et parallélisme réel (respectivement schéma 1, 2, 3 de la Figure 5).
Les états standards se retrouvent dans la majorité des systèmes d’exploitation récents : "‘initialisation"’
est le tout premier état d’un processus. Il passe ensuite en "‘Prêt"’ ou "‘En attente"’ s’il doit être exécuté
ou non par le processeur. En fonction du nombre de processeurs équipés sur un ordinateur, de nombreux
processus peuvent être en attente (les processus prêts à être exécutés sont rangés dans une "‘file"’).
Lorsqu’ils sont en cours d’exécution, les processus sont considérés en "‘élu"’ ou "‘en exécution"’ et
"‘Endormi"’ ou "‘Bloqué "‘ si ce n’est pas le cas. Si le processus est terminé, il est simplement dit comme
étant "’Terminé"’ (voir Figure 5).
48
4.2. Synthèse du cours
Le Process Control Block (PCB) est une structure de de données qui contient toutes les informations
nécessaires à la bonne exécution du processus. Les PCB sont stockés dans une table des processus (voir
la Figure 6).
En bref, le PCB sert simplement de référentiel pour toute information pouvant varier d’un processus à
l’autre.
— État du processus : L’état peut être nouveau, prêt à fonctionner, en attente, arrêté, etc.
— Compteur de programme : Le compteur indique l’adresse de la prochaine instruction à exécuter
pour ce processus.
— Registres du processeur : Les registres varient en nombre et en type, selon l’architecture de
l’ordinateur. Ils comprennent des accumulateurs, des registres d’index, des pointeurs de pile et des
registres à usage général, ainsi que toutes les informations de code de condition. Avec le compteur
de programme, ces informations d’état doivent être sauvegardées lorsqu’une interruption se
produit, pour permettre au processus de se poursuivre correctement par la suite.
— Informations de planification du processeur : Ces informations incluent une priorité de
processus, des pointeurs vers des files d’attente de planification et tout autre paramètre de
planification.
— Informations sur la gestion de la mémoire : Ces informations peuvent inclure des informa-
49
Chapitre 4. Gestion des Processus (primitives fork/join)
tions telles que la valeur des registres de base et de limite, les tables de pages ou les tables de
segments, selon le système de mémoire utilisé par le système d’exploitation.
— Informations sur l’état des E/S : ses informations incluent la liste des périphériques d’E/S
alloués au processus, une liste des fichiers ouverts, etc.
Un processus est vu comme un objet par le système d’exploitation qui possède un identificateur unique
(PID). Les opérations qui peuvent s’appliquer les processus sont : Création, Destruction, Blocage, Réveil,
Activation, Désactivation et Suspension. Un noyau de système se compose de toutes ces opérations.
Cette opération consiste à : (1) Allouer un descripteur à un processus (PCB), (2) Affecter un identificateur
unique au processus (PID) et (3)Initialiser le descripteur (PCB) (programme à exécuter, pile d’exécution,
mémoire centrale utilisé par le programme et les données du processus, état du processus, priorité du
processus, autres ressources, etc.). La Figure 8 illustre une exemple de la commande ps (abréviation de «
process status ») affiche les processus machines en cours d’exécution.
50
4.2. Synthèse du cours
La destruction d’un processus ne peut être effectuée que par le processus père ou un processus système.
Cette opération consiste à : Libérer les ressources occupées par le processus, Détruire ou non la descen-
dance du processus (Unix ne détruit pas les processus fils), Libérer son descripteur (PCB), qui pourra
être réutilisé et le PID est supprimé mais ne peut plus être réutilisé.
Les causes de la destruction de processus peuvent être : Arrêt volontaire, Erreur ou Erreur fatale.
Le processeur est plus rapide que I/O, alors tous les processus puissent attendre le périphérique d’E /S.
Échangez ces processus sur disque (Swap) pour libérer plus de mémoire et utiliser le processeur sur plus
de processus. L’état bloqué devient l’état de suspension quand il est échangé sur le disque.
Deux nouveaux états peuvent être considéré : Blocked/Suspend et Ready/Suspend. Les raisons est
suite à des evenement comme le Swapping (L’SE doit libérer de l’espace Pour exécuter le processus
(état prêt)) ou bien causes du système d’exploitation (Le système d’exploitation suspendue le processus
défectueux ou à cause d’un problème).
Un thread (appelée aussi processus léger ou activité) est un fil d’instructions (un chemin d’exécution) à
l’intérieur d’un processus. Un thread est donc une portion de code capable de s’exécuter en parallèle à
d’autres traitements. Les threads nessisite une commutation de contexte moins coûteuse. La commutation
de contexte ne nécessite pas un travail de gestion mémoire (on utilise le même espace d’adresses du
processus qui contient le thread).
Les mécanismes pour effectuer plusieurs tâches de façon concurrente, appelé fork et join. Plusieurs
librairies implémentent cette idée : (Intel Thread Building Blocks [19], Microsoft Task Parallel Library 6 ,
Java 7 ForkJoin [12]).
Nous pouvons maintenant poser des questions de nature plus algorithmique :
Le principe du Framework Fork and Join consiste à décomposer une tâche en sous tâches, suivant le
paradigme diviser pour régner. Cette technique aussi utilisé par MapReduce 7 . Ce framework permet
d’obtenir un gain de performance et une contraintes de dépendances entre tâches (voir la Figure 9).
6. https://www.microsoftpressstore.com/articles/article.aspx?p=2224038&seqNum=7
7. MapReduce est un patron d’architecture de développement informatique, inventé par Google, dans lequel sont effectués
des calculs parallèles, et souvent distribués, de données potentiellement très volumineuses, typiquement supérieures en taille à
1 téraoctet.
51
Chapitre 4. Gestion des Processus (primitives fork/join)
Le code Liste 4.1 illuste le programme parallèle de la figure (a) présenté dans l’exercice de la section
4.2.3 du chapitre 4.
1
2 N1=2, n2=3 ;
3 S1 ;
4 Fork L1 ;
5 S2 ;
6 S5 ;
7 Fork L3 ;
8 S7 ;
9 Goto L4
10 L1 : fork L 2 ;
11 S3 ;
12 L3 : join n1 ;
13 S6 ;
14 Goto L4 ;
15 L2 : S4 ;
16 L4 : join n2 ;
17 S8 ;
Le framework Fork/Join a été introduit dans Java 1.7 pour implémenter facilement les algorithmes de
division et de conquête avec la prise en charge de processeurs multi-cœur. L’Algorithme 4.1 illustre le
principe de calcule de suite de fibonacci par un programme de Nested fork-join.
si n < 2 alors
retourner n ;
a=fork FIB(n-1) ;
b=fork FIB(n-2) ;
join ;
retourner (a+b) ;
L’Algorithme 4.1 illustre le principe de calcule de suite de fibonacci par un programme de Nested fork-join.
52
4.3. La liste des exercices
5 int num ;
6 Fibonacci(int n){
7 num = n ;
8 }
9
10 @Override
11 protected Integer compute() {
12 if(num <= 1)
13 return num ;
14
Listing 4.2 – Programme JAVA montre l’usage des primitives fork() et pipe()
53
Chapitre 4. Gestion des Processus (primitives fork/join)
Complétez le schéma suivant (voir Figure 10) décrivant les transitions d’un processus, en commentant les
étiquettes 1, 2, 3, 4, 5, 6 et en précisant quels sont les événements qui provoquent chacune des transitions.
Donner le programme parallèle en utilisant les primitives (Fork/Join) pour les deux graphes des précé-
dences suivants ( voir Figure 11) :
54
4.3. La liste des exercices
(a) (b)
Programmer en langage C, à l’aide des fonctions C fork et pipe (ou bien Java 7 : fork/join ), le graphe de
parallélisation maximale G permettant de calcluer la suite de Fibonacci.
55
Chapitre 4. Gestion des Processus (primitives fork/join)
Ce problème est à l’origine de la suite dont le nième terme correspond au nombre de paires de lapins au
nième mois. En notant Fn le nombre de couples de lapin au début du mois n et en posant F 1 = F 2 = 1,
Fibonacci déduit ainsi la relation de récurrence suivante :
F1 = 1
F2 = 1
...
Fn = Fn−2 + Fn−1
On considère l’algorithme tri par fusion (Sort-Merge) pour expliquer les concepts du Fork/Join, qui est
un algorithme Divide and Conquer (diviser pour régner). Diviser pour régner est une technique qui
consiste à diviser un problème en son sous-ensemble de problèmes jusqu’à ce que nous atteignions la
56
4.4. QCM
forme la plus simple de ce problème. Ensuite, le problème sera résolu récursivement en résolvant d’abord
les sous-problèmes. Par exemple, pour trier un tableau 38, 27, 43, 3, 9, 82, 10, nous le divisons d’abord
en deux morceaux 38, 27, 43, 3 et 9, 82, 10 ( Figure 12). Divisez-le ensuite pour obtenir quatre tableaux
avec deux éléments sur chacun d’eux. Continuez le même processus jusqu’à ce que vous obteniez des
tableaux avec des éléments uniques. Une fois que vous obtenez ces tableaux, commencez à fusionner en
comparant les éléments des tableaux adjacents.
Ecrire un programme avec le framework fork/join en Java pour un problème tri par fusion qui peut être
divisé en parties plus petites et résolu en parallèle.
4.4 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
57
Chapitre 4. Gestion des Processus (primitives fork/join)
a. bg
b. fg
c. &
d. ap
Question no 3 On veut renommer pour notre session la commande kill -9 avec le nom stop_signal.
La commande effectuer est :
a. ps -dyn
b. vs -p
c. top
d. ps -d
a. 0
b. 1
c. true
d. vrai
Question no 7 Quelle commande pemet de tuer le processus ayant pour identifiant le numro 5023 ?
a. stop 5023
b. ps -s 5023
c. kill -9 5023
d. stop -9 5023
58
4.4. QCM
59
Chapitre
5
Ordonnancement des processus (scheduling de
l’UC)
Sommaire
5.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.1 Rappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.2 CPU Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.3 Allocateur (dispatcher) vs Planificateur (scheduler) . . . . . . . . . . . . 62
5.2.4 Les critères de scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2.5 Scheduling Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.7 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
"Spending time with God is the key to our strength and success in all areas of life. Be sure that you never try
to work God into your schedule, but always work your schedule around Him".
- Joyce Meyer
5.1 Objectif
Le but de ces exercices est d’examiné quelques algorithmes d’ordonnancement : premier arrivé, premier
servi (First Come, First Served), l’algorithme du travail le plus court d’abord (Shortest Job First), l’al-
gorithme avec priorité et l’algorithme du tourniquet (Round Robin) suivant des critères de scheduling
comme : Utilisation CPU, Débit (throughput), Temps de retournement (Restitution), Temps d’attente et
Temps de réponse (response time).
61
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
En informatique, l’ordonnancement est la méthode par laquelle les threads, les processus ou les flux
de données ont accès aux ressources du système (par exemple, le temps du processeur (cycle CPU), la
bande passante des communications). Cela se fait habituellement pour atteindre une qualité de service
(QoS) cible.
5.2.1 Rappel
Dans un système uniprocessus, un seul processus est exécuté à la fois, d’autres processus doivent attendre
le temps de CPU L’exécution d’un processus consiste en des cycles d’utilisation CPU et d’attente sur
E/S (I/O). Comment continuer à exécuter des processus tout le temps ? pour une utilisation maximale
de l’UC Solution : Multi programmation La présence simultanée, en mémoire principale, de plusieurs
programmes. Affectation de processeur
La multiprogrammation nécessite le mécanisme d’ordonnancement.
Le système d’exploitation gère une collection de processus. Si un système a plus de processus et un seul
CPU il faut diviser le temps CPU entre différents processus. C’est ce qu’on appelle CPU Scheduling.
Le scheduling de l’UC permet de décider quel processus dans la file d’attente des processus prêts
doit être alloué à l’UC.
Le Planificateur (scheduler) gère la file d’attente. Il analyse les demandes qui arrivent et les place dans
la file. L’Allocateur (dispatcher) suit l’activité du processeur, il choisit la requête à traiter et l’extrait
62
5.2. Synthèse du cours
On peut classer l’ordonnancement en deux type : non préemptif et préemptif. Dans l’ordonnancement
non préemptif, un processus conservait le contrôle de l’UC jusqu’à ce qu’il se bloque ou qu’il se termine.
correspond parfaitement aux systèmes de traitements par lots. Dans l’ordonnancement préemptif,
l’ordonnanceur (dispatcher de ordonnancement) peut préempter (interrompre) un processus avant qu’il
se bloque ou se termine, afin d’attribuer l’UC à un autre processus.
Les algorithmes classiques proposés pour résoudre les problèmes d’ordonnancement sont :
— Premier arrivé, premier servi (First Come, First Served)
— Algorithme du travail le plus court d’abord (Shortest Job First)
— Algorithme avec priorité
— Algorithme du tourniquet (Round Robin)
— Algorithme temps restant le plus court (SRT : Shortest Remaining Time)
63
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
5.2.5.1 Algorithme du premier arrivé, premier servi (First come, first served ou FCFS)
Si les processus arrivent dans l’ordre p1, p2, p3, on obtient le diagramme de Gantt suivant :
64
5.2. Synthèse du cours
5.2.5.2 Algorithme du travail le plus court d’abord (Shortest Job First ou SJF)
On associe à chaque processus la longueur de son prochain cycle d’UC. Quand l’UC est libre, on l’assigne
au processus qui possède le prochain cycle d’UC le plus petit. Si deux processus on la même longueur, le
scheduling FCFS est utilisé pour trancher.
Exemple : On considère l’ensemble suivant de processus arrivant au temps 0 avec les cycles suivants
Si les processus arrivent dans l’ordre p1, p2, p3, on obtient le diagramme de Gantt suivant :
L’algorithme SJF offre un temps d’attente minimal pour un ensemble de processus donné.
L’algorithme SJF est un cas particulier d’une famille d’algorithme avec des priorités. On associe à chaque
processus un priorité et l’UC est allouée au processus de plus haute priorité. Les processus ayant la
même priorité sont schedulés dans un ordre FCFS.
Un algorithme SJF est simplement un algorithme avec des priorités. Plus le cycle d’UC est grand, plus la
priorité est petite et vice-versa.
En général, les priorités s’étalent sur un nombre de numéros (de 0 à 7 ou de 0 à 4095). Les priorités
hautes ont des numéros bas, en général (comme c’est le cas dans le système UNIX). D’autres systèmes
utilisent les numéros bas pour les priorités basses.
Exemple :
65
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
Il a été conçu pour les systèmes en temps partagé. Il ressemble à l’algorithme FCFS mais on peut
réquisitionner pour commuter entre les processus. On définit une unité de temps, le quantum (entre 10 et
100 ms). La file d’attente des processus prêts est traitée comme un file circulaire. Le scheduleur parcourt
la file d’attente en allouant l’UC à chaque processus pendant un intervalle de temps allant jusqu’à un
quantum (ou tranche de temps). La file d’attente est gérée comme une file FIFO. Le scheduleur de l’UC
sort le premier processus de la file, configure une horloge pour qu’elle interrompe après 1 quantum et
expédie le processus.
Exemple :
Si le quantum = 4 ms, alors le premier processus obtient les 4 premières ms. Puisqu’il demande 20 ms
supplémentaires, il est interrompu après la première tranche de temps et l’UC est allouée au processus
p2. puisque p2 n’a pas besoin de 4 ms, il part avant l’expiration du quantum. L’UC est ensuite allouée à
66
5.2. Synthèse du cours
p3. une fois que chaque processus a reçu 1 tranche de temps, l’UC est renvoyée au processus p1. On
obtient le diagramme de Gantt suivant :
5.2.5.5 Algorithme SRT : temps restant le plus court (Shortest Remaining Time)
Une version préemptive de l’algorithme SJF s’appelle algorithme SRT (Shortest Remaining Time, temps
restant le plus court) : chaque fois qu’un nouveau processus est introduit dans la file de processus à
scheduler, le scheduleur compare la valeur estimée de temps de traitement restant à celle du processus
en cours de scheduling. Si le temps de traitement du nouveau processus est inférieur, le processus en
cours de scheduling est préempté.
L’algorithme SRT favorise les processus courts.
67
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
On définit des classes de processus et on associe à chacune des classes une priorité et une stratégie
d’ordonnancement. Le processeur est alloué aux processus de la classe la plus prioritaire. On ne change
de file que si la file la plus prioritaire est vide. Un processus ne peut pas changer de classe.
Ce type de scheduling est intéressant dans le cas où les processus ne sont pas tous identiques et ont des
besoins en ressources différents (par exemple : les processus système, les processus utilisateurs, ...etc).
5.2.5.7 Algorithme avec files multiniveaux avec recyclage (MFQ, Multilevel Feedback
Queues)
Dans un scheduling multiniveau et feedback, un processus peut changer de file. Il est intéressant d’utiliser
le feedback dans le cas où on doit suivre le comportement des processus et décider si on doit changer le
niveau d’un processus soit à la baisse , soit à la hausse, en fonction de l’utilisation des ressources. Par
exemple, il est recommandé de "dégrader" un processus qui utilise trop longtemps le processeur pour
éviter qu’il pénalise le reste des processus. MM.png
68
5.3. La liste des exercices
Figure 16 – Algorithme avec Algorithme avec files multiniveaux avec recyclage (MFQ, Multilevel
Feedback Queues)
Les éléments mentionnés ci-dessus sont les différentes CPU scheduling utilisées dans le présent.
Ces algorithmes sont hérités en fonction de l’exigence du processeur.
69
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
Envisager l’ensemble suivant de processus, avec la durée du cycle d’UC donnée en millisecondes.
Une commutation de contexte prend c unités et la durée moyenne de la phase de calcul d’un processus
est p unités de temps.
1. Calculer le taux d’utilisation du processeur en fonction de c, p et de la valeur q du quantum (p>q),
lorsque l’algorithme d’ordonnancement round-robin est utilisé.
2. Etudier en particulier les cas où q tend vers l’infini et q tend vers 0 (zéro).
↪ voir correction (Section 5.2.3 [page 143]).
Considérons un système d’exploitation ayant 2 classes de processus. Les processus de la classe1 sont
plus prioritaires que les processus de la classe2. Chaque classe de processus a son propre algorithme
d’ordonnancement du processeur.
70
5.3. La liste des exercices
A tout instant un processus moins prioritaire peut être interrompu par un autre processus plus prioritaire
que lui. Le processus interrompu (processus qui était actif) est inséré en tête de sa file. A la fin d’une
opération d’entrée/sortie :
1. Le processus interrompu est inséré en tête de sa file.
2. Le processus concerné par l’opération d’entrée/sortie est inséré en tête de sa file.
3. L’ordonnanceur choisit le processus le plus prioritaire.
Une opération d’entrée/sortie dure en moyenne 10 ms. On dispose de 2 périphériques (F0 et F1) qui
peuvent être partagés par les différents processus. Sur un périphérique donné, les opérations d’entrées/-
sorties sont effectuées séquentiellement.
Tenez compte des informations suivantes ( Figure 19) et tracez le diagramme de synchronisation (Gantt)
pour le processeur et le serveur d’E/S à l’aide de l’algorithme FCFS pour la planification du processeur.
↪ voir correction (Section 5.2.5 [page 144]).
Considérez un système d’exploitation qui ordonnance les processus selon l’algorithme du tourniquet
(RR). La file des processus prêts contient des pointeurs vers les entrées de la table des processus (les
descripteurs des processus).
71
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
Supposez que le système d’exploitation est composé de deux unités de contrôle (deux processeurs
CPU1 et CPU2) et d’une unité d’E/S. Chaque processeur exécute l’algorithme du tourniquet avec un
quantum de trois unités de temps (qt = 3). Tous les processus prêts sont dans une même file d’attente. La
commutation de contexte est supposée de durée nulle. Considérez trois processus A, B et C décrits dans
le tableau suivant :
La première ligne signifie que le processus A arrive dans le système à l’instant 0, son exécution nécessite
dans l’ordre 4 unités de temps CPU, 2 unités de temps d’E/S et 2 unités de temps CPU. Au départ le
processus A est élu par le processeur CPU1. Si plusieurs événements surviennent en même temps, vous
supposerez les priorités suivantes :
— Le CPU1 a la priorité d’accès à la file des processus prêts par rapport au CPU2.
— A la fin d’un quantum, le processus non terminé en cours est suspendu uniquement si la file des
processus prêts n’est pas vide. Le traitement réalisé à la fin d’un quantum est plus prioritaire que
celui d’une fin d’E/S qui, à son tour, est plus prioritaire que l’arrivée de nouveaux processus dans
le système.
a) Donnez les diagrammes de Gantt montrant l’allocation des deux processeurs, de l’unité d’E/S et
l’évolution des états des files d’attente (celle des processus prêts et celle des processus en attente de
l’unité d’E/S).
b) Calculez le temps moyen de séjour.
Ecrire un algorithme (pseudocode) pour de l’ordonnancement Round Robin (RR). On supprose que le
quantum est fixée à 2 secondes pour chaque processus utilisateur avant le prochain processus utilisateur,
prenez le contrôle du CPU. La préemption (lorsque le processus change d’état) est ajoutée entre les
processus. Si un processus utilisateur dépasse le quantum qu’il est préempté et remis sur la file d’attente
Ready. Si la tranche de temps est trop grande - dégénère en FCFS (premier arrivé, premier servi) et peut
entraîner l’effet de convoi où un processus conserve le CPU jusqu’à il libère ; moins de changement de
contexte. Si la tranche de temps est trop petite - plus de changement de contexte pour / vers de nouveaux
processus
↪ voir correction (Section 5.2.6 [page 145]).
72
5.4. QCM
5.4 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
Question no 1 Quelle méthode correspond mode de traitement des éléments d’une file d’attente (calculs
d’un ordinateur, stocks) ?
a. FOFI
b. FIFE
c. FIFO
Question no 2 Dans quel(s) état(s) peut se retrouver un processus juste après une préemption ?
a. bloqué
b. éligible
c. élu
Question no 3 Dans quel(s) état(s) peut se retrouver un processus juste après une préemption ?
a. bloqué
b. éligible
c. élu
Question no 5 Dans un ordonnanceur Multilevel Feedback, dans quelle condition un processus vatil
descendre d’un niveau ?
a. Vrai
b. Faux
73
Chapitre 5. Ordonnancement des processus (scheduling de l’UC)
Question no 8 Algorithme du tourniquet (Round-Robin ou RR), Il a été conçu pour les systèmes en
temps partagé ?
a. Vrai
b. Faux
Question no 11 Quels sont les états de processus qui peuvent être en mémoire secondaire ?
a. Élu
b. Prêt
c. Bloqué
d. Terminer
e. Nouveau
↪ voir correction (Section 5.3 [page 146]).
74
Chapitre
6
Pagination à la demande
Sommaire
6.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2 Synthèse du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.2.1 Execution des programmes informatique . . . . . . . . . . . . . . . . . . 78
6.2.2 La Gestion de Mémoire (Pourquoi ?) . . . . . . . . . . . . . . . . . . . . 79
6.2.3 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.4 Adressage Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.5 Gestionnaire de la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.6 Comment implémenter la mémoire virtuelle ? . . . . . . . . . . . . . . . 81
6.2.7 Gestion de la mémoire virtuelle : La pagination à la demande . . . . . . . 83
6.2.8 Représentation des espaces virtuels des processus et de l’espace physique 84
6.2.9 Détection et traitement d’un défaut de page . . . . . . . . . . . . . . . . 85
6.2.10 Remplacement de pages . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.11 Les algorithmes de remplacement . . . . . . . . . . . . . . . . . . . . . . 85
6.3 La liste des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.7 Exercice n°7 (Algorithme de l’horloge : liste circulaire) : . . . . . . . . . 89
6.4 QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
"Il est difficile de remédier à notre propre tristesse parce que nous en sommes complices. Il est difficile de
remédier à celle des autres parce que nous en sommes captifs".
- Jean Baudrillard (1980-1985)
6.1 Objectif
77
Chapitre 6. Pagination à la demande
Dans une éxecution des programmes informatique, le cycle d’exécution d’une instruction typique se
déroule comme suit :
Le Code Source ou le Programme est écrit dans un langage de programmation (par ex. C, C++, Java etc.).
La compilation de ce programe génère un Module Object, qui est des fichiers non exécutable. On charge
les les modules Objet et les Bibl. dans la mémoire centrale (MC). Aprés le chargement, le systèle assure
la fonction de l’allocation et l’adressage. Durant l’éxecution de programme, on peux faire appel ainsi
que les fichiers des bibliothèques dynamiques DLLs (Dynamic Link Library ). Le sortie de ce processus
est un fichier executable (voir la Figure 2).
Il existe plusieurs techniques de gestion de la mémoire. Selon l’architecture de la machine.
78
6.2. Synthèse du cours
La mémoire aujourd’hui et devient moins chère, mais les applications exigent plus et plus de mémoire. La
gestion de mémoire (Memory Management) est une module qui assure l’échange des blocs de données
de la mémoire secondaire vers la mémoire centrale (voir la Figure 3). Notez que les E/S de mémoire
sont lentes par rapport au CPU. Donc le système d’exploitation doit Maximiser l’efficacité de la CPU et
Minimiser le temps d’échange.
6.2.2.1 Problèmes :
79
Chapitre 6. Pagination à la demande
Figure 5).
Idées Générales : un espace de mémoire virtuelle par processus, @ Virtuelles et @ Physiques, et l’échanges
transparents avec le disque.
6.2.3 Swapping
Le swapping ou échange consiste à déplacer temporairement des processus entre la mémoire centrale et
la mémoire auxiliaire (disques). L’objectif visé étant soit de libérer de l’espace mémoire pour de nouveaux
processus, soit de réduire le taux de multiprogrammation.
Un espace swap (zone d’échange) est donc créé sur le disque. Unix : (/swap). Windows (pagefile.sys).
80
6.2. Synthèse du cours
Figure 6 – Swapping
Une adresse générée par l’UC est dite adresse logique (relative). La conversion entre une adresse
virtuelle (logique) en une adresse réelle (physique) est réalisée par la MMU (Memory Management Unit),
ou unité de gestion mémoire. Notez que le MMU est un dispositif matériel.
Figure 7 – Adressage Mémoire : adresses virtuelles et physiques traduites par un IOMMU et un MMU
C’est un module système dont la fonction est de gérer la mémoire principale. Les principales fonctions
d’un gestionnaire de la mémoire sont les suivantes : Allouer / libérer l’espace de la mémoire principale,
Charger / décharger(sauvegarder) les programmes des processus, Protéger les programmes et les données
des processus, Partager des programmes et/ou des données entre plusieurs processus
La mémoire virtuelle est un terme utilisé pour décrire comment les systèmes d’exploitation gèrent la
RAM disponible :
La Gestion de Mémoire est assurée par deux techniques : 1) la Pagination et 2) la Segmentation.
Principe de la pagination :
La pagination consiste à diviser l’espace d’adressage logique en unités ou blocs appelés pages. La
mémoire physique est également découpée en blocs ou unités de même taille que les pages, appelés
cases ou cadres de page (pages frames). Les pages, des processus (espaces virtuels), qui ne sont pas
81
Chapitre 6. Pagination à la demande
chargées dans des cases de mémoire physique sont stockées en mémoire secondaire (disque). La partie
du disque (mémoire secondaire) réservée à la pagination est découpée en blocs de même taille que les
pages (certains systèmes charge toutes les pages du programme en mémoire secondaire).
Frames = blocs physiques, Pages = blocs logiques.
La taille des Frames et des Pages est définie par le matériel (puissance de 2 pour faciliter les calculs)
Traduction des adresses virtuelles en adresses physiques : Il est à rappeler que la traduction d’une
adresse virtuelle en adresse physique est réalisée par un dispositif matériel appelé "unité de gestion
mémoire" (MMU). Dans un système à mémoire paginée l’adresse virtuelle est composée de : Un numéro
de page virtuelle (p bits de poids forts : gauche), Un déplacement à l’intérieur de la page (d bits de poids
faibles : droite).
Taille de la page = 2d ; Chaque adresse générée par l’UC (sur m bits) est structurée comme suit :
le Principe de la pagination consiste à établir la correspondance entre <page virtuelle> et <page physique>
(ou case) On utilise une table que l’on appelle table de pages. Contient le numéro de case (adresse
physique)
82
6.2. Synthèse du cours
Processus de pagination : le système dispose d’une table de cadres de page qui indique l’état (libre ou
occupé) du cadre de page, occupé par quelle page, de quel processus.
Dans cette section, nous présentons la stratégie de chargement c-à-d : quand le système charge-t-il les
pages en mémoire principale ?, et nous présentons aussi la stratégie de remplacement qui répond aux
questions suivantes : Comment le système choisit-il les pages qui doivent être retirées de la mémoire
principale, lorsque aucune case n’est plus disponible ? Pour le choix d’une page, on peut tenir compte
des informations sur l’utilisation passée des pages présentes en mémoire principale.
83
Chapitre 6. Pagination à la demande
L’espace virtuel d’un processus est défini par : la table de pages, la table auxiliaire ou secondaire et la
Mémoire secondaire ou zone de swap.
84
6.2. Synthèse du cours
bits de protection peuvent être utilisés comme "‘Bit de validité "‘ : page utilisée ou pas par le processus
(un processus utilise une partie seulement de l’espace virtuel) ; "‘Bit de présence"’ : page chargée en
mémoire centrale ou non ; "‘Bit de Modification"’ : page modifiée ou non depuis le dernier chargement ;
"‘Bit de référence"’ : page référencée ou non.
Lorsqu’un défaut de pages se produit, le système doit charger la page correspondante depuis la mémoire
secondaire (disque) dans une case de la mémoire principale. Il doit donc disposer d’une table que l’on
appelle table auxiliaire qui décrit l’image disque de l’espace virtuel d’un processus. On peut ajouter une
adresse disque par entrée (page) de la table de pages.
b) La table auxiliaire ou secondaire : Elle contient autant d’entrées qu’il y a de pages dans l’espace
virtuel considéré. Chaque entrée de cette table donne l’adresse de la page en mémoire secondaire réservée
à la pagination (adresse disque). Cette table est également utilisée lorsque l’on doit recopier une case
contenant une page modifiée. A un instant donné, il y a autant de couples (table de pages, table auxiliaire)
que d’espaces virtuels définis. Un seul de ces espaces est accessible au processeur (U.C.) : l’espace du
processus actif.
c) Mémoire secondaire ou zone de swap ( ou disque de pagination) : Elle est découpée en blocs
de même taille que les pages et contenant l’image de l’espace virtuel (programmes, les données, piles)
des processus.
Quand il y a un défaut de page, on doit allouer une case pour charger la page référencée. S’il n’existe
pas de page, on choisit une parmi celles qui sont présentes en mémoire et on affecte sa case à la page
référencée. La page sélectionnée au moyen d’un algorithme de remplacement est appelée "page victime".
85
Chapitre 6. Pagination à la demande
C’est l’algorithme de remplacement le plus simple. Quand on veut remplacer une page, on choisit la
page la plus ancienne Implémentation Chaque fois que l’on charge une page en mémoire centrale, on
met (on enfile) le numéro de cette page dans une file gérée en FIFO (premier entré premier sorti).
Un algorithme de remplacement optimal minimise le taux de défauts de page. Cet algorithme choisit la
page qui ne sera plus utilisée ou la page qui sera utilisée le plus tard possible. Cet algorithme suppose
une connaissance de l’ensemble de la chaîne de références ; il est donc irréalisable en temps réel. Il
permet d’évaluer, par comparaison, les autres algorithmes.
86
6.3. La liste des exercices
L’algorithme LRU (moins récemment utilisée) choisit la page qui n’a pas été utilisée depuis longtemps
(ou la page ayant fait l’objet d’une référence la plus tardive). Cette classe d’algorithme est appelée
algorithme à pile ou "‘stack algorithms"’.
LRU choisit la page qui n’a pas été référencée depuis longtemps. OPT choisit la page qui ne sera
pas référencée pendant longtemps (qui sera référencée le plus tard possible).
En général, on utilise une pile. Une approche consiste à garder les numéros de pages référencées
dans une pile.
Implémentation de la pile. La pile est implémentée à l’aide d’une liste avec double chaînage. On
utilise deux pointeurs : Un pointeur « sommet » pour empiler et un pointeur « base » pour retirer
un élément de la base
Nous pouvons citer d’autre algorithmes de remplacement :
— L’algorithme de l’horloge
— LFU (ou NFU) : Least Frequently Used/moins fréquemment utilisée
— L’algorithme du vieillissement (Aging)
— Les algorithmes de remplacement Algorithme de seconde chance
87
Chapitre 6. Pagination à la demande
Dans un système de pagination à la demande on dispose de 4 cases mémoire (pages réelles ou physiques)
initialement vides et on utilise le remplacement local. Parmi ces algorithmes de remplacement de pages :
FIFO, LRU (moins récemment utilisée), OPT (optimal) et Horloge ; quel est l’algorithme qui provoque
8 défauts de pages, après son exécution avec la chaîne de références mémoires suivante : 7, 0, 1, 2 , 0
, 3, 0, 4, 2, 3 , 0 , 3 ,2 , 1, 2, 0 , 1, 7 , 0, 1. Justifier votre réponse en donnant l’état de la mémoire après
l’exécution de cet algorithme.
↪ voir correction (Section 6.1.2 [page 153]).
Un processus a un espace virtuel de 1024 mots. Ce processus référence les adresses virtuelles suivantes
de son espace virtuel : 901, 050, 127, 128, 129, 130, 150, 260, 261, 263, 060, 061, 062, 403, 404, 068, 524,
525, 526, 300, 301, 400, 404, 68, 450, 383, 255, 380, 127, 255, 1023, 120, 200.
1. Donner la chaîne de références, sachant que la taille de page est de 128 mots.
2. Le processus dispose de 384 mots en mémoire centrale. Calculer le nombre de défauts de pages,
pour la chaîne de références précédente, en utilisant l’algorithme de seconde chance. Les cases
mémoires sont initialement vides.
88
6.3. La liste des exercices
Considérer le tableau à deux dimensions suivant : Var A : array[1..100, 1..100] of integer ; On dispose
d’une mémoire paginée, avec des tailles de page de 200 mots. Le programme (le code) manipulant la
matrice se trouve dans la page 0. Le tableau A est stocké en mémoire ligne par ligne. Un entier occupe un
mot. Pour 3 cases, combien de défauts de pages sont générés avec les boucles suivantes d’initialisation
du tableau, en utilisant l’algorithme de remplacement LRU et en supposant que le programme se trouve
dans la première case et les deux autres cases sont initialement vides. La page 0 ne peut pas être choisie
lors d’un remplacement de page.
Initialisation (a) Initialisation (b)
For j := 1 to 100 do For i := 1 to 100 do
For i := 1 to 100 do For j := 1 to 100 do
A[i,j] := 0 ; A[i,j] := 0 ;
(a) (b)
Peut être vue comme une queue circulaire où on avance sur les pages qui ont le bit à 1 (en le positionnant
à zéro) jusqu’à ce que l’on trouve une page avec le bit d’utilisation à zéro. Ceci est connu sous le nom de
l’algorithme de l’horloge. Dans cet algorithme , les pages en mémoire sont mémorisées dans une liste
circulaire en forme d’horloge (figure 1). Un indicateur pointe sur la page la plus ancienne. Lorsqu’un
89
Chapitre 6. Pagination à la demande
Figure 18 – Algorithme de l’horloge. Si la valeur de R=0 on tue la page et une nouvelle page est insérée,
sinon on met R=0 et on avance un tour.
défaut de page se produit, la page pointée par l’indicateur est examinée. Si le bit R de la page pointée par
l’indicateur est à 0, la page est retirée, la nouvelle page est insérée à sa place et l’indicateur avance d’une
position. Sinon, il est mis à 0 et l’indicateur avance d’une position. Cette opération est répétée jusqu’à
ce qu’une page ayant R égal à 0 soit trouvée. À noter que lorsqu’une page est ajoutée, on met son bit de
référence à 1 Cet algorithme est aussi appelé algorithme de la seconde chance. On remarquera qu’il a
pour effet de donner une seconde chance aux pages qui ont été référencées depuis la dernière exécution
de l’algorithme. Ce n’est que si toutes les pages ont été référencées que l’on revient à la première page
pour l’expulser.
La Figure 18 illustre l’Algorithme de l’horloge. Si la valeur de R=0 on tue la page et une nouvelle page
est insérée, sinon on met R=0 et on avance un tour.
6.4 QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
a. de gérer une partie de l’espace disque (mémoire secondaire) comme s’il s’agissait de mémoire
principale.
b. d’exécuter des tâches qui ne peuvent physiquement tenir complètement en mémoire principale.
c. d’utiliser efficacement les caches mémoires L1 et L2.
d. d’augmenter la vitesse de commutation lors de la préemption des tâches
90
6.4. QCM
Question no 3 La conversion entre une adresse virtuelle (logique) en une adresse réelle (physique) est
réalisée par ?
a. la table de pages.
b. la table auxiliaire ou secondaire.
c. la Mémoire secondaire ou zone de swap.
Question no 5 L’algorithme LRU choisit la page qui n’a pas été référencée depuis longtemp ?
a. Vrai.
b. Faux.
Question no 6 L’algorithme OPT choisit la page qui ne sera pas référencée pendant longtemps (qui
sera référencée le plus tard possible) ?
a. Vrai.
b. Faux.
a. File.
b. Pile.
a. le disque.
b. la Mémoire principale.
91
Troisième partie
93
Chapitre
1
Correction : Introduction aux Systèmes
d’Exploitation
Sommaire
1.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
1.1.1 Corrigé Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
1.1.2 Corrigé Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1.3 Corrigé Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1.4 Corrigé Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1.5 Corrigé Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.6 Corrigé Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.7 Corrigé Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.8 Corrigé Exercice n°8 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8. www.dicofr.com
97
Chapitre 1. Correction : Introduction aux Systèmes d’Exploitation
Un noyau de système d’exploitation, ou simplement noyau, ou kernel en anglais, est une des parties
fondamentales de certains systèmes ”exploitation. Il gère les ressources de l’ordinateur et permet aux
différents composants matériels et logiciels de communiquer entre eux.
4. Qu’est-ce qu’une machine virtuelle ?
Un SE c’est l’Abstraction de la machine physique (Abstraction du terme « Machine » selon Coy 9 .
— Machine réelle = Unité centrale + périphériques (CPU, Mémoire, I/O)
— Machine abstraite = machine réelle + système d’exploitation
— Machine utilisable = machine abstraite + application
5. La notion du système d’exploitation peut se présenter comme une coquille ?
Le noyau du SE est un ensemble de modules : Gestion des processus, Gestion des fichiers, Gestion de la
mémoire et Gestion des périphériques (entrées/sorties). La figure Figure 1 illustre le SE sous forme par
un modèle en couches.
9. http://www.fsg.rnu.tn/imgsite/cours/Syst%C3%A9meExploitation-Chap1.pdf)
98
1.1. Le corrigé des exercices
— la sécurité des données car le noyau interdira à un utilisateur d’ouvrir les fichiers auxquels il n’a
pas accès.
— l’intégrité des données sur le disque. Un utilisateur ne peut pas par mégarde effacer un secteur
du disque ou modifier son contenu. Les appels système peuvent être vus comme les portes d’une
discothèque. Un gardien se trouve à l’intérieur de la maison et vérifie systématiquement les
laissez-passer avant d’ouvrir.
9. Comment peut-on être sûr qu’aucun programme ne peut contourner le mécanisme des
appels systèmes ?
La commande strace intercepte et affiche les appels systèmes d’un programme. Strace est un outil de
débogage sous Linux pour surveiller les appels système utilisés par un programme (voir Figure 4) .
10. Quels sont les avantages de développer un système d’exploitation comme une série de
couches ?
99
Chapitre 1. Correction : Introduction aux Systèmes d’Exploitation
Les avantages de développer un système d’exploitation comme une série de couche sont : (i) Il rend le
débogage plus facile et (ii) aide à obtenir la conception correcte pour une évolution future.
11. Comment peut-on améliorer le traitement par lot ?
En 1956, IBM a introduit le premier disque dur (HDD). L’arrivée sur le marché des unités de disques est
introduit dans Traitement par lots la notion des E/S tamponnées (voir figure Figure 5) qui consiste a
stocker dans le disque les programmes et leur résultats. Les jobs sont lus et stockés sur disque au fur et à
mesure de leur soumission aux opérateurs : C’est la notion de SPOOLING [20] (Simulatneous Peripheral
Operation On-Line). Le SPOOL consiste à créer des fichiers-disque qui correspondent aux jobs soumis et
qui sont utilisés par le moniteur au moment de l’exécution, à la place des supports d’informations lents.
12. Quelle est la différence entre un système multi-programmé et un système multi-
processeurs ?
Un système d’exploitation multi-programmé (ou multitâche) est capable d’exécuter plusieurs programmes
100
1.1. Le corrigé des exercices
Les fonctions principales de système d’exploitation (SE) est présenté dans le tableau suivant :
P : Processus, IT : interruption, MC : Mémoire Centrale, FIFO : First In, First Out, RR : Round-robin,
SJF :Shortest Job First, DMA : Direct memory access, UC : L’unité centrale, CPU : Central Processing
Unit.
Le démarrage, qui est l’abréviation de bootstrap, fait référence au processus de chargement d’une image
du système d’exploitation dans la mémoire de l’ordinateur et de démarrage du système d’exploitation.
Chaque PC a un programme BIOS (Basic Input Output System) stocké dans la ROM (Read Only Memory).
Après la mise sous tension ou après une réinitialisation, le processeur du PC commence à exécuter le
BIOS. Tout d’abord, le BIOS effectue un POST (Power-on Self Test) pour vérifier le bon fonctionnement
du matériel du système. Il recherche ensuite un périphérique à démarrer. La Figure 6 présente un
Organigramme des problèmes de démarrage du système d’exploitation.
101
Chapitre 1. Correction : Introduction aux Systèmes d’Exploitation
102
1.1. Le corrigé des exercices
Dans le tableau 1, nous indiquons le type de système dans chaque situation : Traitement par lots
(TL), Systèmes Multi-tâche (MT), Systèmes Multi-utilisateurs (temps partagé) (MU), Systèmes Multi-
processeurs (MP), Systèmes temps réel (TR), Systèmes distribués (répartie) (D).
Chaque groupe de mots ci-dessous appartient à une catégorie. A vous de trouver la catégorie en essayant
d’être le plus précis que possible. La première ligne est un exemple (voir le Tableau ? ?).
A.1 - Le système est exploité avec en porte ouverte (pour l’economie d’energie).
Il faut 0,3 mn et 0,5 mn pour lire 300 cartes et imprimer 500 lignes. Le temps pour un passage est :
0,3+1+0,5=1,8 mn.
Comme entre deux passages l’usager a besoin de 4mn pour corriger, le nombre de passage n satisfait :
1,8.n + 4.(n-1) ≤ 15 ⇒ n=3 d’où r=1*3/15=0,2 et D=3.4=12 job/S (r=traitement/temps_global)
On peux servir 3 utilisateurs dans 15m/ 3/ (15=1/4) [echelle c’est la munite]
A.2 - Le système est exploité avec un moniteur d’enchaînement séquentiel des travaux.
103
Chapitre 1. Correction : Introduction aux Systèmes d’Exploitation
Catégorie
Lunix, Windows, MAC OS, Solaris Système d’exploitation
Contient des instructions, Tâche, Aspect Dynamique d’un Programme Processus
Thread, Programmation Concurrente, Paralléliser les Traitements Multi-Programmation
Accès Unifié, Fonctionnement Transparent, Gestionnaire d’Accès Middleware
Mode Protégé, Interfaces aux Services, Lien entre Mode Utilisateur
Appel au superviseur
et Mode Noyau
Ordinateur à Programme non Enregistré, Séparation entre le Stockage
Arch. de Von Neumann
et le Processeur est Explicite, Programme en Mémoire
Gestion de Fichiers, Gestion des E/S, Gestion de Mémoire, Gestion de Processus Fonctions du SE
104
1.2. Correction de QCM
Le temps de passage est le même sans attente entre deux passages ⇒ D = 60/1,8 = 33 et r = 33/60 = 0,55
Durée du traitement = 20+15+5 = 40 s. r = 15/40=0,375.
2°) Les périphériques sont autonomes et disposent d’un accès direct à la mémoire.
Durée du traitement = 20 (le temps le plus long puisque temps transfert en mémoire =0), r = 15/20 = 0,75.
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
Question no 1 Dans les années 80, à quelle société Microsoft proposa t-il son système d’exploitation
PC-DOS qui allait ensuite devenir MS-DOS ?
a. IBM
b. Amiga
c. Apple
Question no 2 Que signifie l’acronyme GNU ?
Question no 3 Quelles sont les deux grandes branches de système UNIX ? (Plusieurs réponses possibles)
a. FreeBSD
b. System V
c. AIX
d. Linux
105
Chapitre 1. Correction : Introduction aux Systèmes d’Exploitation
a. 16 ans
b. 21 ans
c. 31 ans
d. 48 ans
a. System V
b. Linux
c. iOS
d. BSD
Question no 7 Dans le fichier /etc/passwd, quel(s) shell(s) ne permet(tent) pas d’interpréter des com-
mandes ? (plusieurs réponses sont possibles)
a. /bin/bash
b. /bin/false
c. /sbin/nologin
d. /bin/zsh
a. cp
b. scp
c. sftp
d. ssh
106
1.2. Correction de QCM
a. Multitâche
b. À temps complet
c. Multi-utilisateur
d. À temps partagé
a. Suspendre son exécution au profit d’un autre processus / une autre tâche.
b. Arrêter définitivement son exécution au profit d’un autre processus / une autre tâche.
c. Geler le processus / la tâche pour un temps indéterminé (fini).
d. Transférer le processus / la tâche en zone de swap
107
Chapitre
2
Correction : Système de gestion des fichiers
(SGF)
Sommaire
2.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.1.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.1.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.1.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.1.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.1.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
109
Chapitre 2. Correction : Système de gestion des fichiers (SGF)
10. MS-DOS (abréviation de Microsoft Disk Operating System) est le système d’exploitation de type DOS développé par
Microsoft pour l’IBM PC d’abord, puis pour les compatibles PC. Il s’agit d’un système fonctionnant en mode réel, monotâche
et mono-utilisateur, et équipé par défaut d’une interface en ligne de commande
110
2.1. Le corrigé des exercices
111
Chapitre 2. Correction : Système de gestion des fichiers (SGF)
11. Hadoop est un framework libre et open source écrit en Java destiné à faciliter la création d’applications distribuées (au
niveau du stockage des données et de leur traitement) et échelonnables (scalables) permettant aux applications de travailler
avec des milliers de nœuds et des pétaoctets de données.
112
2.1. Le corrigé des exercices
Combien de bloc a-t-on besoin au minimum pour stocker tout le fichier si la taille de bloc est 32 KO.
Taille du fichier : T aille f = Nbr Enr * T aille Enr = 6000*1= 6000.
T aill e f
Nombre du blocs : Nbr Blocs = T aill eb = 6000
32 ≃ 188, avec T ailleb : Taille du bloc.
Définission d’une fonction d’hachage :
Soit h une fonction qui retourne le numéro du bloc qui coresspond à une clé d’entrée n :
h : E Ð→ F
On propose une fonction de hachage sous forme factorielle h(n)=n !. Cette fonction calcul de la factorielle
d’un entier naturel dont la valeur est comprise dans l’intervalle 0 ≤ h(n) ≤ 187.
a) Chaque bloc de données peut contenir 256 pointeurs (numéros de blocs). Il faut : - (12 * 1k) pour
direct,
- (256 * 1K) pour ind. simple,
- (256 *256 * 1K) pour ind. double,
- (256 * 256 * 256 * 1K) pour ind. Triple
Taille = (12 * 1K) + (256 * 1K) + (256 * 256 * 1K) + (256 * 256 *256 * 1K) = (12 + 256 + 256*256 + 256*256*256)
K = 16,843,020 K octets.
b) Si on considère un fichier contenant 100,000 octets, on voit que :
100,000 = 97 * 1024 + 672. Il faudra donc 98 blocs pour conserver les données de ce fichier.
L’i-noeud ne dispose que de 12 pointeurs directs, il va donc falloir utiliser des blocs supplémentaires
(98-12=86) pour conserver le reste des données. Comme 86<256, ces blocs de données seront accessibles
à partir du pointeur indirect simple du i-noeud.
Une partie d’un bloc sera nécessaire pour conserver les 86 pointeurs sur des blocs de données. Le nombre
total de blocs utilisés est donc 98+1 = 99.
Notre fichier compte 20,000,000 = 4882 * 4096 + 3328 octets. Il faudra donc 4883 blocs pour conserver
les données de ce fichier. Il faudra aussi leur ajouter des blocs qui vont être utilisés pour stocker des
pointeurs vers ces blocs de données. On effectue donc le calcul suivant (sur les blocs) :
— Le fichier compte 4883 blocs de données.
— Les pointeurs directs de l’i-noeud permettent d’accéder à 12 de ces blocs. Il reste donc 4871 blocs
de données pour lesquels l’accès se fera à travers l’un des liens indirects.
113
Chapitre 2. Correction : Système de gestion des fichiers (SGF)
— Le pointeur de lien indirect simple pointe sur un bloc qui contient 1024 numéros de blocs (pointeurs
vers des blocs de données). Nous avons donc ajouté 1 bloc de pointeurs, et il reste 4871 - 1024 =
3847 blocs à traiter.
— Le pointeur de lien indirect double permet d’accéder à 1024*1024 blocs, ce qui est plus que suffisant.
Il suffit d’utiliser 4 blocs de données pour stocker les 3847 pointeurs de blocs permettant d’accéder
aux données restantes.
Fragmentation interne :
— L’espace alloué mais non utilisé :
— 4 octets sur l’i-noeud (indirection triple non utilisé)
— (1024-4)*4 = 4080 octets dans le bloc sur lequel pointe le pointeur indirect double.
— ( 4096-3847)*4 = 996 octets dans le dernier bloc de pointeurs alloué.
— Finalement, 768 octets dans le dernier bloc de données. La fragmentation interne totale sur le
disque est donc de 5848 octets.
Pour cet exercice, je vous donne des directives pour calculer le nombre des E/S avec les deux algorithmes
FIFO et LFU. Un fichier est un ensemble de blocs, pour le chargement d’un bloc b : si le bloc b est dans
le cache, retourner son numéro de slot. sinon s’il y a un slot libre dans le cache, chargé le bloc du
disque, sinon choisir un slot à vider (l’écrire sur disque) et le remplacer par b selon une Stratégies de
remplacement (par ex. FIFO). La Figure 2 montre une illustration de remplacement des pages du buffer.
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
114
2.2. Correction de QCM
Question no 1 Dans le fichier /etc/passwd, quel(s) shell(s) ne permet(tent) pas d’interprter des com-
mandes ? (plusieurs réponses sont possibles)
a. /bin/bash
b. /bin/false
c. /sbin/nologin
d. /bin/zsh
a. des fichiers
b. des options
c. des rpertoires
d. des arguments
Question no 3 On veut renommer pour notre session la commande kill -9 avec le nom stop_signal.
La commande effectuer est :
115
Chapitre 2. Correction : Système de gestion des fichiers (SGF)
Question no 7 Chaque utilisateur UNIX possède un répertoire qui porte son nom de login. Comment
l’appelle t’on ? :
a. perso
b. home
c. directory
d. user
a. pass
b. passwd
c. password
d. newpass
Question no 10 Quel alias permet de revenir dans le répertoire personnel et d’en lister le contenu ?
116
2.2. Correction de QCM
a. rn oui non
b. cp oui non
c. mv oui non
d. mp oui non
a. oui
b. non
c. cela dépend de la version du noyau UNIX
d. non, mais il est possible d’utiliser des chiffres
Question no 15 Propriétaire du fichier essai.html, quelle commande dois-je utiliser pour pour retirer
les droits en exécution à tout le monde. ? (Plusieurs réponses possibles)
a. chmod u+ressai.html
Question no 16 La notation octale 724 pour la gestion des droits d’accés correspond à la notation
symbolique :
a. rwx -w- r-
d. r- -w- rwx
117
Chapitre 2. Correction : Système de gestion des fichiers (SGF)
a. 0
b. 1
c. true
d. vrai
118
Chapitre
3
Corrigé : Gestion des périphériques : Attente
Active, Interruption et DMA
Sommaire
3.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.1.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.1.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.1.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.1.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.1.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.1.6 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
"Le bruit est la plus importante des formes d’interruption. C’est non seulement une interruption, mais aussi
une rupture de la pensée".
- rthur Schopenhauer
121
Chapitre 3. Corrigé : Gestion des périphériques : Attente Active, Interruption et DMA
122
3.1. Le corrigé des exercices
12. Décrivez brièvement comment se fait le transfert d’un bloc de disque vers la mémoire,
si le système dispose d’un DMA ?
Le processeur envoie la commande d’E/S au driver du disque. Le driver détaille la commande et la
traduit au contrôleur. Le contrôleur prépare les données en copiant les données du disque vers le
buffer du disque. Le dispos itif DMA envoie les données prépare directement vers la mémoire (sa
ns passer par le processeur). A la fin du transfert , une interruption est générée pour informer le
processeur que le transfer t est terminé.
Calcul du nombre pourcentage d’occupation du processeur par les ITs si chaque interruption prend 50
µs.
Pour 6 pages Ð→ le temps d’interruption (IT) : T emps IT = 50*80*50*106 Secondes (s) =1,2 s.
1,2
Pourcentage d’occupation (le taux d’occupation) : Occ IT = 60 = 0,02 = 2%.
123
Chapitre 3. Corrigé : Gestion des périphériques : Attente Active, Interruption et DMA
Attente
DMA IT
Active
Lorsque le CPU n’est pas complètement chargé,
X
laquelle des méthodes suivantes de transfert de données est préférée
Le processeur lit le registre d’état du dispositif et vérifie si un indicateur
X
(ou flag) "terminé" a été défini par le dispositif.
Notifier un processeur lorsqu’un périphérique d’E/S nécessite une attention. X
Une plus grande efficacité lorsque le périphérique d’E/S génère beaucoup
X
de trafic
Le processeur n’a pas besoin de dépenser des cycles interrogeant le dispositif X
Il est considéré comme efficace car il supprime le CPU d’être responsable
X
du transfert de données
Le processeur envoie la commande d’E/S au driver du disque.
X
Le driver détaille la commande et la traduit au contrôleur.
Il peut y avoir moins de latence entre le moment où le dispositif
X
est prêt et les données sont transférées.
Déplacer de grandes quantités de données entre les périphériques
X
d’E/S et la MC.
Peu efficace car "context switching" couteux X
60 T Ð→ 1 Seconds (sec)
Calcule du T emps IT T empsC PU =?
60∗2
On a : 1 top =2ms Ð→ 60 TOP/sec= 1000 = 12% .
L’interprétation du résultat : L’horloge doit fournir un signal régulier pour synchroniser tout le
fonctionnement du processeur. Le taux d’utilisation de CPU par l’horloge est signifiable (12%).
— Quel est le temps d’accès moyen du système considéré seulement des cycles réels de mémoire ?
— 0.9 x 120 + 0.1 x 11000 = 108 + 110 = 218 nsec.
— Quel est le taux de réussite en tenant compte du cycle d’écriture ?
— cache access memory access= 0.2 x 900 + 0.8 x 200 = 180 + 100 = 280 nsec..
— Quel est le temps d’accès moyen du système pour les requêtes de lecture et d’écriture.
— write access = Hit ratio = 0.8 x 0.9 = 0.72
124
3.2. Correction de QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
a. Disque
b. Mémoire RAM
c. Cycle CPU
a. overflow
b. erreur d’adressage
c. code opération inexistant
d. problème de parité
e. mouvement de la souris
f. division par zéro
Question no 5 La commande strace intercepte et affiche les appels systèmes d’un programme ?
a. overflow
b. erreur d’adressage
c. code opération inexistant
d. problème de parité
e. mouvement de la souris
f. division par zéro
125
Chapitre 3. Corrigé : Gestion des périphériques : Attente Active, Interruption et DMA
Question no 6 La commande qui intercepte et affiche les appels systèmes d’un programme ?
a. strace (voir ? ?)
b. tcpdump
c. netstat
d. swapon
e. nicstat
f. pidstat
Question no 7 Le mot d’état du processeur (Processor Status Word, PSW), il comporte généralement : ?
126
Chapitre
4
Corrigé : Gestion des Processus (primitives
fork/join)
Sommaire
4.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.1.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.1.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.1.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.1.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.1.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.1.6 Exercice n°6 : Diviser pour calculer plus vite . . . . . . . . . . . . . . . . 132
4.1.7 Exercice n°8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
129
Chapitre 4. Corrigé : Gestion des Processus (primitives fork/join)
Les threads fonctionnent comme les processus : ils ont des états (bloqué, prêt, en exécution), se partagent
l’UC et un seul thread est actif (en exécution) à la fois. Chaque thread dans un processus possède son
propre compteur d’instructions et sa propre pile. Les threads peuvent créer des fils. Si un thread est
bloqué, un autre peut s’exécuter.
Décrivez les 3 modèles multithreads : plusieurs à un, un à un, plusieurs à plusieurs.
Le modèle un à un mappe chacun des threads utilisateur sur un thread du noyau. Cela signifie que
de nombreux threads peuvent s’exécuter en parallèle sur des multiprocesseurs et que d’autres threads
peuvent s’exécuter lorsqu’un thread effectue un appel système bloquant. Le modèle plusieurs à un
mappe de nombreux threads utilisateur à un seul thread noyau. Ce modèle est assez efficace car l’espace
utilisateur gère la gestion des threads. Le modèle plusieurs à plusieurs mappe de nombreux threads
utilisateur à un nombre égal ou inférieur de threads du noyau. Le nombre de threads du noyau dépend
de l’application ou de la machine.
Nous décrivant les transitions d’un processus, en commentant les étiquettes 1, 2, 3, 4, 5, 6 et en précisant
quels sont les événements qui provoquent chacune des transitions :
4. En Attente Ð→ Prêt : Fin d’opération d’E/S qui implique la restauration du contexte du processus
chargé
130
4.1. Le corrigé des exercices
La Figure 2 présente le graphe de précédence et le pseudo code qui correspond à la formule suivante :
Le code Liste 4.1 illuste le programme parallèle de la figure (a) présenté dans l’exercice de la section
4.2.3 du chapitre 4.
1
2 N1=2, n2=3 ;
3 S1 ;
4 Fork L1 ;
5 S2 ;
6 S5 ;
7 Fork L3 ;
8 S7 ;
9 Goto L4
10 L1 : fork L 2 ;
11 S3 ;
12 L3 : join n1 ;
13 S6 ;
14 Goto L4 ;
15 L2 : S4 ;
16 L4 : join n2 ;
17 S8 ;
Le code Liste 4.2 illuste le programme parallèle de la figure (b) présenté dans l’exercice de la section
4.2.3 du chapitre 4.
1 S1 ;
2 count := 3 ;
3 FORK L1 ;
131
Chapitre 4. Corrigé : Gestion des Processus (primitives fork/join)
4 S2 ;
5 S4 ;
6 FORK L2 ;
7 S5 ;
8 GO TO L3 ;
9 L2 : S6 ;
10 GO TO L3 ;
11 L1 : S3 ;
12 L3 : JOIN count ;
13 S7 ;
Note : statement "L1 : S3" is not necessary GOTO L3 since L3 comes next step count := 3 (in degree of 3)
at S7
Le framework Fork/Join a été introduit dans Java 1.7 pour implémenter facilement les algorithmes de
division et de conquête avec la prise en charge de processeurs multicœurs. L’Algorithme 4.1 illustre le
principe de calcule de suite de fibonacci par un programme de Nested fork-join.
1 import static java.time.temporal.ChronoUnit.MILLIS ;
2
132
4.1. Le corrigé des exercices
si n < 2 alors
retourner n ;
a=fork FIB(n-1) ;
b=fork FIB(n-2) ;
join ;
retourner (a+b) ;
5 int num ;
6 Fibonacci(int n){
7 num = n ;
8 }
9
10 @Override
11 protected Integer compute() {
12 if(num <= 1)
13 return num ;
14
Listing 4.3 – Programme JAVA montre l’usage des primitives fork() et pipe()
133
Chapitre 4. Corrigé : Gestion des Processus (primitives fork/join)
L’Algorithme 4.1 illustre le principe du tri par fusion pour un tableau avec 100 000 000 entiers aléatoires.
Listing 4.4 – Programme JAVA de tri par fusion avec l’usage des primitives fork() et pipe()
134
4.2. Correction de QCM
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
Question no 2 Quelle commande permet de passer en arrire-plan une commande déjà lancée ?
a. bg
b. fg
c. &
d. ap
Question no 3 On veut renommer pour notre session la commande kill -9 avec le nom stop_signal.
La commande effectuer est :
a. ps -dyn
b. vs -p
c. top
d. ps -d
135
Chapitre 4. Corrigé : Gestion des Processus (primitives fork/join)
a. 0
b. 1
c. true
d. vrai
Question no 7 Quelle commande pemet de tuer le processus ayant pour identifiant le numro 5023 ?
a. stop 5023
b. ps -s 5023
c. kill -9 5023
d. stop -9 5023
136
Chapitre
5
Corrigé : Ordonnancement des processus
(scheduling de l’UC)
Sommaire
5.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.2.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.2.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.2.5 Exercice n°5 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.2.6 Exercice n°7 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.3 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
"Spending time with God is the key to our strength and success in all areas of life. Be sure that you never try
to work God into your schedule, but always work your schedule around Him".
- Joyce Meyer
5.1 Objectif
Le but de ces exercices est de mettre en évidence, sur un système simplifié à l’extrême, l’influence
de l’évolution historique des systèmes d’exploitation sur quelques grandeurs caractéristiques de leurs
performances.
139
Chapitre 5. Corrigé : Ordonnancement des processus (scheduling de l’UC)
140
5.2. Le corrigé des exercices
141
Chapitre 5. Corrigé : Ordonnancement des processus (scheduling de l’UC)
dans un scheduling multiniveau et feedback, un processus peut changer de file. Il est intéressant d’utiliser
le feedback dans le cas où on doit suivre le comportement des processus et décider si on doit changer le
niveau d’un processus soit à la baisse , soit à la hausse, en fonction de l’utilisation des ressources. Par
exemple, il est recommandé de "dégrader" un processus qui utilise trop longtemps le processeur pour
éviter qu’il pénalise le reste des processus
Figure 1 – FCFS
Figure 2 – RR
142
5.2. Le corrigé des exercices
Taux d’utilisation du processeur : taux Taux = (temps utilisé par les processus utilisateur)/ temps total
a) La commutation du temps consommé par le système pour l’activation d’un processus
b) Algorithme sans réquisition ou algorithme avec réquisition et p>= q : on fait une seule commutation
:
Taux = p/(c+p)
c) Algorithme avec réquisition (ex : Round Robin) avec q<p
Nombre de quanta : n = p/q
Pour chaque quantum de temps on fait une commutation (c)
Temps total = nc + p
Taux = p /(nc +p)
p = nq : on remplace p par sa valeur Ð→ taux = nq/(nc +nq) Ð→
Taux = q/(c+q)
— Si q tend vers 0 Ð→ taux tend 0 : mauvaise utilisation du processeur, le système passe son temps
à faire des commutations.
— Si q tend vers l’infini Ð→ taux vend vers 1 ; on fait une seule commutation équivalent à algorithme
sans réquisition (ex : FIFO).
Conclusion : Il faut bien choisir le quantum de temps.
143
Chapitre 5. Corrigé : Ordonnancement des processus (scheduling de l’UC)
2) La Figure 5 présente le calcule le temps d’attente et le temps de résidence de chacun des processus et
le taux d’utilisation du processeur dans l’intervalle de temps [t0, fin du dernier processus].
144
5.2. Le corrigé des exercices
J’arrive avec une liste de processus et j’applique l’algorithme d’ordonnancement Round-robin (RR) :
Je vérifie si un processus est déjà en cours d’exécution (si le CPUQ = 1) ? Sinon, je suppose que le CPU
est inactif et mèttre un processus sur le CPUQ et décrémenter le compteur de temps (Temps du Cycle).
Ensuite, je vérifie si un processus est terminé ? Si c’est le cas, je retire le processus du CPUQ et émets un
nouveau traiter et décrémenter le compteur de temps (Temps du Cycle).
Sinon
— Si le processus n’est PAS terminé, je vérifie si le temps est écoulé ? Si c’est le cas et que le READYQ
(la file d’attente Ready) est supérieur à zéro, je (1) supprime le processus du CPUQ et le réinsère
sur le READYQ, (2) réinitialiser le compteur quantique de temps, (3) émettre le prochain processus
disponible sur le CPUQ et (4) la valeur du compteur est décrémenté.
Sinon
— Si le processus n’est PAS terminé et qu’il n’y a aucun processus sur le READYQ, je (1)
réinitialise le quantum temporel, (2) exécute et (3) la valeur du compteur est décrémenté.
— Sinon
— Enfin, si son quantum n’a pas expiré, je (1) exécuter et (2) la valeur du compteur est
145
Chapitre 5. Corrigé : Ordonnancement des processus (scheduling de l’UC)
décrémenté.
On reviens et exécute jusqu’à ce qu’il n’y ait plus de processus.
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
146
5.3. Correction de QCM
Question no 1 Quelle méthode correspond mode de traitement des éléments d’une file d’attente (calculs
d’un ordinateur, stocks) ?
a. FOFI
b. FIFE
c. FIFO
Question no 2 Dans quel(s) état(s) peut se retrouver un processus juste après une préemption ?
a. bloqué
b. éligible
c. élu
Question no 3 Dans quel(s) état(s) peut se retrouver un processus juste après une préemption ?
a. bloqué
b. éligible
c. élu
Question no 5 Dans un ordonnanceur Multilevel Feedback, dans quelle condition un processus vatil
descendre d’un niveau ?
a. Vrai
b. Faux
147
Chapitre 5. Corrigé : Ordonnancement des processus (scheduling de l’UC)
Question no 8 Algorithme du tourniquet (Round-Robin ou RR), Il a été conçu pour les systèmes en
temps partagé ?
a. Vrai
b. Faux
Question no 11 Quels sont les états de processus qui peuvent être en mémoire secondaire ?
a. Élu
b. Prêt
c. Bloqué
d. Terminer
e. Nouveau
148
Chapitre
6
Corrigé : Pagination à la demande
Sommaire
6.1 Le corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1.1 Exercice n°1 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1.2 Exercice n°2 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.1.3 Exercice n°3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.1.4 Exercice n°4 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.1.5 Exercice n°6 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2 Correction de QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
151
Chapitre 6. Corrigé : Pagination à la demande
152
6.1. Le corrigé des exercices
mémoire (MMU) dans le but d’accélérer la traduction des adresses virtuelles en adresses physiques.
19 : Qu’est-ce que la segmentation ?
La segmentation est une technique de découpage de la mémoire. Elle est gérée par l’unité de segmentation
de l’unité de gestion mémoire (dite MMU, Memory Management Unit), utilisée sur les systèmes d’exploi-
tation modernes, qui divise la mémoire physique ou la mémoire virtuelle en segments caractérisés par
leur adresse de début et leur taille.
20 :Qu’est-ce que espace d’adressage logique ?
L’espace virtuel d’un processus est défini par : la table de pages, la table auxiliaire ou secondaire et la
Mémoire secondaire ou zone de swap
21 : Qu’est-ce que espace d’adressage physique ?
Elle est découpée en blocs de même taille que les pages et contenant l’image de l’espace virtuel (pro-
grammes, les données, piles) des processus.
23 : La pagination et la segmentation peuvent-elles être combinées dans un seul système d’ex-
ploitation ? Énumérez deux façons ?
Oui.
Un algorithme de remplacement optimal minimise le taux de défauts de page. Cet algorithme choisit la
page qui ne sera plus utilisée ou la page qui sera utilisée le plus tard possible. Cet algorithme suppose
une connaissance de l’ensemble de la chaîne de références ; il est donc irréalisable en temps réel. Il
permet d’évaluer, par comparaison, les autres algorithmes.
L’algorithme LRU (moins récemment utilisée) choisit la page qui n’a pas été utilisée depuis longtemps
153
Chapitre 6. Corrigé : Pagination à la demande
(ou la page ayant fait l’objet d’une référence la plus tardive). Cette classe d’algorithme est appelée
algorithme à pile ou «stack algorithms ».
Algorithme de l’horloge :
— *la couleur rouge indique la position du pointeur.
— Le nombre de défauts de pages est : 14
154
6.2. Correction de QCM
A[i,j] := 0 ; A[i,j] := 0 ;
Cet exercice est un questionnaire à choix multiples (QCM). Pour chacune des questions suivantes, cocher
la bonne réponse.
a. de gérer une partie de l’espace disque (mémoire secondaire) comme s’il s’agissait de mémoire
principale.
b. d’exécuter des tâches qui ne peuvent physiquement tenir complètement en mémoire principale.
c. d’utiliser efficacement les caches mémoires L1 et L2.
d. d’augmenter la vitesse de commutation lors de la préemption des tâches
155
Chapitre 6. Corrigé : Pagination à la demande
156
6.2. Correction de QCM
Question no 3 La conversion entre une adresse virtuelle (logique) en une adresse réelle (physique) est
réalisée par ?
a. la table de pages.
b. la table auxiliaire ou secondaire.
c. la Mémoire secondaire ou zone de swap.
Question no 5 L’algorithme LRU choisit la page qui n’a pas été référencée depuis longtemp ?
a. Vrai.
b. Faux.
Question no 6 L’algorithme OPT choisit la page qui ne sera pas référencée pendant longtemps (qui
sera référencée le plus tard possible) ?
a. Vrai.
b. Faux.
a. File.
b. Pile.
a. le disque.
b. la Mémoire principale.
157
Bibliographie
[1] A. Bensoussan, C. T. Clingen et R. C. Daley. « The Multics virtual memory : concepts and design ». In :
Communications of the ACM 15.5 (1972), p. 308–318 (cf. p. 3).
[2] J Berthelin et B Cousin. « Manuel d’utilisation de l’environnement pour le pseudo-parallèlisme (version
1.0) ». In : Paris, Octobre (1988) (cf. p. 101).
[3] A. D. Birrell et B. J. Nelson. « Implementing remote procedure calls ». In : Proceedings of the ninth ACM
symposium on Operating systems principles. 1983, p. 3 (cf. p. 3).
[4] M. W. Blasgen et K. P. Eswaran. « Storage and access in relational data bases ». In : IBM Systems Journal
16.4 (1977), p. 363–377 (cf. p. 21).
[5] P. Borne, P. Vanheeghe et E. Duflos. Automatisation des processus dans l’espace d’état : Cours et exercices
corrigés. T. 19. Editions Technip, 2007 (cf. p. 4).
[6] S. Bouzefrane. LES SYSTEMES D’EXPLOITATION : COURS ET EXERCICES CORRIGES UNIX, LINUX et
WINDOWS XP avec C et JAVA. 2003 (cf. p. 4).
[7] C.-W. Chou. Housing assembly for extractable redundant array of independent disks. US Patent 6,392,884.
2002 (cf. p. 112).
[8] W. Coy. « Soft Engines—Mass-Produced Software for Working People ? » In : Software development and
reality construction. Springer, 1992, p. 269–279 (cf. p. 8).
[9] J. Delacroix. Linux-4e éd. : Programmation système et réseau-Cours et exercices corrigés. Dunod, 2016
(cf. p. 4).
[10] Z. Ebrahim. Method and apparatus for implementing hardware protection domains in a system with no
memory management unit (MMU). US Patent 5,987,557. 1999 (cf. p. 157).
[11] G. C. Hunt, G. Cermak et R. J. Stets Jr. Operating system application programming interfaces and methods
of using operating systems. US Patent 7,334,235. 2008 (cf. p. 3).
[12] D. Lea. « A java fork/join framework ». In : Proceedings of the ACM 2000 conference on Java Grande. 2000,
p. 36–43 (cf. p. 51).
[13] M. K. McKusick et al. « A fast file system for UNIX ». In : ACM Transactions on Computer Systems (TOCS)
2.3 (1984), p. 181–197 (cf. p. 112).
[14] S. Patel et Y. N. Gopalan. Transaction-safe FAT file system improvements. US Patent 7,363,540. 2008 (cf.
p. 111).
[15] T. Petazzoni. « Gestion des interruptions ». In : (2008) (cf. p. 122).
[16] A. P. U. Siahaan. « Comparison analysis of CPU scheduling : FCFS, SJF and Round Robin ». In : Interna-
tional Journal of Engineering Development and Research 4.3 (2016), p. 124–132 (cf. p. 70).
[17] A. Silberschatz, P. B. Galvin et G. Gagne. Operating system concepts essentials. John Wiley & Sons, Inc.,
2014 (cf. p. 4).
[18] R. M. Stallman. « Le système d’exploitation du projet GNU et le mouvement du logiciel libre ». In :
Behlendorf et alii 1999 (1999), p. 61–82 (cf. p. 3).
[19] B. D. Veerasamy et G. Nasira. « Java Native Intel Thread Building Blocks for Win32 Platform ». In : Asian
Journal of Information Technology 13.8 (2014), p. 431–437 (cf. p. 51).
[20] Z. Wang et al. Print job spooling and distribution system. US Patent 7,593,125. 2009 (cf. p. 100).
159
BIBLIOGRAPHIE
1. https://www.baeldung.com/java-fork-join
2. https://www.javahelps.com/2015/01/forkjoin-framework.html
3. https://stackoverflow.com/questions/2814838/how-do-i-write-tasks-parallel-code
4. https://www.whoishostingthis.com/resources/os-development/
160