Page 1 sur 270
AVANT PROPOS
Ce syllabus a été conçu pour les étudiants du niveau MASTER de la faculté des
Sciences Informatiques de l’Université Catholique du Congo (UCC).
L'esprit de ce cours présente une indépendance aux implémentations tant hardware
que software des systèmes existants dans l’environnement professionnel. Nous ne
cherchons pas à apprendre aux apprenants à utiliser les systemes d’exploitation,
mais les amèner à être capable d’abord de comprendre les fonctions de base d’un
système d’explotation quelle que soit son domaine d’application (bureautique,
industriel,…) :
- Gestion de processus;
- Gestion de la mémoire ;
- Gestion du système de fichiers ;
- Gestion des entrées/sorties .
Afin que l’apprenant ne puisse pas nager dans l’abstraction, dans le cadre des
travaux pratiques, nous avions choisi de travailler avec un système d’exploitation du
monde des logiciels ouverts, LINUX, qui va aussi permettre à l’apprenant de vérifier,
de vivre les fonctions de base susmentionnées. Contrairement à des systèmes
d’explotation très vendus comme Windows, dont les composants architecturaux sont
des boîtes noires, pour les utilisateurs, avec LINUX, les apprenants sont capables
d’obtenir le code source de différents composants, de les modifier, voire de les
enrichir. C’est vraiment un système qui peut aider à comprendre non seulement le
«comment «, mais aussi le «pourquoi«. Il est par excellence un Système
d’explotation du milieu academique.
A la fin de ce cours l’apprenant aura :
© Kasengedia motumbe pierre 1
Page 2 sur 270
- beaucoup de facilité pour aborder, exploiter n’importe quel système
d’exploitation ;
- de facilité pour ecrire des scrits, s’initier à programmation systèmes sous
LINUX (la majorité de serveurs fonctionnant sur Internet sont de la famille
POSIX, UNIX, LINUX,.. ) ;
- Pourrait être facilement initiè pour concevoir, des modules à integrer dans
un système d’exploitation.
Enfin c’est un cours pilier de la formation d’un informaticien, qui va lui permettre de
comprendre d’autres domaines tels que la programmation parallèle, l’informatique
temps réel,…
Je tiens à remercier tous ceux qui ont apporter leur pierre pour l’élaboration de ce
syllabus, particulièrement mes eminents Assistants de la mention Math – Statistiques
– Informatique, de la faculté des Sciences et Technologies de l’UNIKIN : Doctorand
Kaningine Neto Junior, Doctorand Amisi Fataki Clement , Master CMayombo
Jacques.
Ce syllabus est une version draft d’un livre que je suis en train d’écrire sur «les
bases conceptuelles d’un système d’exploitatiion d’ordinateurs ». Je vous serais très
reconnaissant pour toute critique, remarque, obsevation que vous pourriez formuler
pour l’enrichir.
Pour rappel : Ce support de cours a pour seule vocation d’être utilisé par les
étudiants dans le cadre de leurs cursus au sein de l’UCC. Aucun autre usage ni
diffusion ne pourrait être faits, sans l’autorisation de l’auteur.
© Kasengedia motumbe pierre 2
Page 3 sur 270
TABLE DES MATIÈRES
AVANT PROPOS......................................................................................................... i
PREMIÈRE PARTIE : LES CONCEPTS
FONDAMENTAUX ......................................vi
CHAP.1. CONCEPTS GENERAUX ............................................................................1
1.1 DEFINITION ...................................................................................................... 1
1.2 STRUCTURE INTERNE D‟UN ORDINATEUR ................................................. 1
1.2.1. Introduction................................................................................................. 1
1.2.2. Histoire de l‟ordinateur et du système
d‟exploitation...................................1
1.2.3. Système à microprocesseur ......................................................................
2
1.2.3.1. Microprocesseurs .................................................................................
2 1.2.3.2. Les opérations d‟entrée
/sorties ..............................................................5
1.3. ORGANISATION EN COUCHES ET SYSTEMES D‟EXPLOITATION ............10
1.4. FONCTIONS DE BASE D‟UN SYSTEME D‟EXPLOITATION ......................... 11
I. 4.1. Définition formelle .....................................................................................
10
1.4.2. Types de système d‟exploitation ..............................................................
11
1.4.2. 1. Systèmes d‟exploitation temps réels ...................................................
11
1.4.2. 2. Traitement par lot ..................................................................................
15
1.4.2. 3. Système monolithique ..........................................................................
16
© Kasengedia motumbe pierre 3
Page 4 sur 270
I. 5. 3 Systèmes en multi programmation............................................................
17
1.4.2. 4. Systèmes temps partagés (time sharing systems) ...............................
17
1.4.2. 5. Système multi utilisateurs „time – sharing‟ ...........................................
18
1.4.2. 6. Le modèle client-serveur ..................................................................... 19
CHAP.2. GESTION DE PROCESSUS .....................................................................
20
2.1. INTRODUCTION l’ORDONNANCEMENT DES PROCESSUS…………………20
2.1.1. Le concept de processus .......................................................................... 20
2.1.2. Hiérarchie de processus ........................................................................... 20
2.1.3. Etats de processus ................................................................................... 21
2.1.4. Ordonnancement des processus ............................................................. 22
2.1.4. 1. Introduction .......................................................................................... 22
2.1.4. 2. Critères de qualité d‟un algorithme d‟ordonnancement.........................
23
2.1.4. 3. Stratégie d‟ordonnancement sans recyclage des travaux ....................
23 a. File d‟attente simple
(FIFO) ........................................................................... 23
b. File d‟attente ordonnée suivant le temps estimé d‟exécution..........................
24
Conclusion : ....................................................................................................... 24
2.1.4. 4. Stratégie d‟ordonnancement avec recyclage des travaux ....................
25
Choix du quantum : ............................................................................................
25
Ordonnancement par priorité.............................................................................. 27
Réalisation d‟un ordonnancement à priorité ......................................................
28
© Kasengedia motumbe pierre 4
Page 5 sur 270
2. 1. 3. 5 Ordonnancement par priorité avec files multiples ................................
28
Principes : .......................................................................................................... 28
2.2. EXCLUSION MUTUELLE ................................................................................. 30
2.2.1. Analyse approfondie du problème ………………........................................ 30
2.2.2. Attente active ........................................................................................ 34
2.2.3. Attente active par masquage des interruptions ...............................................36
2.2.4.Les verrous................................................................. 36
2.2.5. Les sémaphores .......................................................................................
37
2.2.5.1. Définition de sémaphores ......................................................................
37 2.2.5.2. Propretés de sémaphores .....................................................................
39 2.2.5.4. Sémaphores d‟exclusion mutuelle ........................................................
40
2.3. RESEAU DE PETRI (MODELISATION DES PROCESSUS)……………… .......
41
2.3.1. Introduction ...........................................................................................41
2.3.2. Discussion informelle .......................................................................... 41
2.3.3. Définition formelle ............................................................................... 44
2.4. MECANISME DE SYNCHRONISATION ........……………............................. 45
2.4.1. Introduction .......................................................................................... 45
2.4. 2. Mécanisme d‟action directe ...................................................................
45
2.4. 3. Mécanisme d‟action indirecte ................................................................
46
2.4.3.1. Synchronisation par évènements .....................................................
46 a) Evènement mémorisé ........................................................................................
46
© Kasengedia motumbe pierre 5
Page 6 sur 270
b) Evènement non mémorisé ............................................................................ 47
c) Extension de la notion d‟événement ............................................................ 47
2.4.3.2. Synchronisation par sémaphores ................................................... 47
2.4.3.3. Modélisation de synchronisation et de la communication entre
processus par réseau de Pétri ............................................................................
48
2.4.3.4. Programmation de la synchronisation et communication entre
processus (source) et processus destination. ................................................... 51
2.5. COMMUNICATION ENTRE PROCESSUS ...................................................... 52
2.5.1 Introduction ............................................................................................... 52
2.5.2. Quelques types de communication entre processus par variable
commune .......... 54
2.5.2.1. Communication entre processus par variables communes ................
54
2.5.2.2. Le modèle du producteur et du consommateur ..................................
54
2.5.2.3. Communication par boite aux lettres...................................................
56 2.5.2.4. Différence entre communication par boîte aux lettres et
celle basée sur la
communication directe entre les processus ...................................................... 58
CHAP. 3. GESTION DE LA MEMOIRE .....................................................................
59
3.1. INTRODUCTION ...........................................................................................
59
3.2. LA GESTION DE LA MÉMOIRE SANS VA-ET-VIENT NI PAGINATION ......59
3.2.1. Monoprogrammation sans avec et vient ni pagination ……......................
59
3.2.2. Multiprogrammation et utilisation de la mémoire ..................................... 61
3.2.3. Multiprogrammation avec partition fixes ................................................. 63
3.3. GESTION DE LA MÉMOIRE AVEC VA-ET-VIENT ........................................64
© Kasengedia motumbe pierre 6
Page 7 sur 270
3.3.1. Introduction ........................................................................................... 64
3.3.2. Multiprogrammation avec partitions variables .......................................
64
3.3.3. Gestion de la mémoire par table de bits ..................................................... 66
3.3.4. Gestion de la mémoire par liste chaînée .....................................................
67
L‟algorithme de la zone libre suivante (next fit) : ............................................... 68
L‟algorithme du meilleur ajustement ..................................................................
68
L‟algorithme du plus grand résidu (worst fit) : .....................................................
68 3.4. La mémoire virtuelle ....................................................................................
69 3.4.1.
Introduction ............................................................................................. 69
3.4.2. La pagination ........................................................................................... 69
Fonctionnement interne de l‟unité de gestion de la mémoire MMU (Memory
Management Unit) ............................................................................................ 70
Les algorithmes de remplacement de page....................................................... 72
Le remplacement de page optimal .................................................................... 72
Remplacement de page premier entré premier entré, première sortie, FIFO ....
72
Remplacement de la page la moins récemment utilisée ................................... 72
CHAP.4. GESTION DE SYSTEMES DE FICHIERS .................................................
73
4.1. DISQUE MAGNÉTIQUE ............................................................................... 73
4.1.1. Description d‟un disque magnétique ........................................................ 73
4.1.2. Noms de fichiers............................................................................. 75
partienom.extension ................................................................................ 75
Fichier de sauvegarde .............................................................................. 76
Fichier.html ............................................................................................... 76
© Kasengedia motumbe pierre 7
Page 8 sur 270
Fichier contenant page web ............................................................................. 76
Fichier.pdf .......................................................................................................... 76
4.2. STRUCTURE DE FICHIERS ........................................................................ 77
Suite d‟octets sans structure .....................................................................................
77
Suite d‟enregistrements de longueur fixe ……….......................................................
77
Fichier en arbre d‟enregistrements .......................................................................... 78
4.3. CLASSIFICATION DE FICHIERS……………………………… .................... 78
4.3.1. Les fichiers ordinaires (« regular files ») ..........................................................78
Fichiers ASCII .................................................................................................... 79
Fichiers binaires ................................................................................................ 79
4.3.2. Les répertoires (« directories »)....................................................................... 80
Chemin d‟accès absolu ......................................................................................... 82
Chemin d‟accès relatif .......................................................................................... 83
Les opérations sur les répertoires ..........................................................................
83
4.3.3. Les fichiers spéciaux caractère (« character special files ») ...........................
84
4.3.4. Les fichiers spéciaux bloc (« block spécial files ») ...........................................
84
4.4. ACCES ET ORGANISATION BASIQUE DES SYSTEMES DE FICHIERS .......
84
Fichier à accès séquentiel ..................................................................................
84
Fichier indexé………………………………………………………………………… 85
Fichier séquentiel indexé ................................................................................... 85
Fichier à accès direct (fichier hashé) ................................................................. 87
Analyse comparative de différentes organisations des fichiers...........................
88
© Kasengedia motumbe pierre 8
Page 9 sur 270
CHAP 5. LES OPÉRATION D‟ENTRÉES SORTIES ................................................
89
5.1. GESTION DES PÉRIPHÉRIQUES .................................................................
89
5.1.1. Comment le système d‟exploitation interagit avec les périphériques ........
89
5.1.2. Principe pour connecter un périphérique à un système à
microprocesseur.. ………89
5.1.3. Interfaces standard .................................................................................. 90
5.1.4. Contrôleur de périphérique....................................................................... 92
5.1.5. Registre de modules, contrôleurs de périphériques d‟Entrée/sortie .........
92
5.2. TYPES DE TRANSMISSION ......................................................................... 93
5.2.1. Introduction .............................................................................................. 93
5.2.2. Transmission parallèle .............................................................................
94 5.2.3. Transmission sérielle ...............................................................................
94 5.2.4. Transmission asynchrone ........................................................................
95 5.2.5. Transmission
synchrone ...........................................................................96
5.2.6. Mode de transmission physique (simplex, half-duplex, full-duplex) ........
96
5.3. Opérations d‟Entrées/Sorties de base ............................................................
97
5.3.1. Entrées-Sorties spéciales contre entrées-sorties projetées/mappées sur la
mémoire………………....................................................................................... 97
5.3.2. Interfaces standards ............................................................................... 99
5.3.2.2.2. I8251 (un USART standard ..............................................................
102
© Kasengedia motumbe pierre 9
Page 10 sur 270
5.3.3. Méthodes de contrôle des opérations d‟entrées-
sorties .........................105 5.3.4. Opération d‟Entrée-sortie par
interruption ............................................. 107
5.3.5. Opération d‟Entrée/Sortie par DMA (Direct Memory
Access) .............112
5.3.6. Canaux d‟Echange de données .........................................................115
5.4. Organisation des dispositifs d‟Entrées/sorties ............................................116
5.5. Organisation logicielle des Entrées/Sorties ..................................................118
5.5.1. Considérations préliminaires ...........................................................118
5.5.2. Objectifs des logiciels d‟Entrée/Sortie. .............................................
119
5.5.3. Structure en couches des logiciels d‟Entrée/Sortie ..........................121
IIème PARTIE : TRAVAUX PRATIQUES……………………………………………..
125
BIBLIOGRAPHIE ....................................................................................................166
© Kasengedia motumbe pierre 10
Page 11 sur 270
PREMIÈRE PARTIE
LES CONCEPTS FONDAMENTAUX
D’UN SYSTEME D’EXPLOITATION D’ORDINATEURS
© Kasengedia motumbe pierre 11
Page 12 sur 270
CHAP.1. CONCEPTS GENERAUX
1.1. DEFINITION
Un système d‟exploitation est un ensemble de programmes qui joue le
rôle de l‟interface entre utilisateur et ordinateur et Il s‟occupe de la
gestion rationnelle de ressources tant hardware que software de
l‟ordinateur.
1.2 STRUCTURE INTERNE D’UN ORDINATEUR
1.2.1. Introduction
Un ordinateur est une machine capable de résoudre un problème en
suivant les instructions d‟un programme. Nous allons décrire un modèle
assez représentatif des ordinateurs utilisés actuellement et nous appuyer
d‟un système à microprocesseur pour faire un survol sur ce
fonctionnement de l‟ordinateur.
1.2.2. Histoire de l’ordinateur et du système d’exploitation
L‟histoire de l‟ordinateur est fortement liée à l‟évolution technologique et
celle du système d‟exploitation est liée à celle de l‟ordinateur. C‟est ainsi
que nous pouvons relever les époques suivantes :
- Machine à calculer à engrenages mécaniques ;
- Machine à tube à vide ;
- Machine à circuits intégrés ;
- Machine à circuits intégrés à échelle très large.
• Machine à calculer à engrenages mécanique a été inventée par Blaise
Pascal (16231662) et pouvait réaliser des opérations arithmétiques
© Kasengedia motumbe pierre 12
Page 13 sur 270
(addition, multiplication, soustraction) et était une machine mécanique à
base d‟engrenage.
• Machine à tube à vides
Pendant la seconde guerre mondiale, fut construit un ordinateur
(COLOSSUS) à tube à vide par le mathématicien Anglais ALAIN TURING.
Cet ordinateur a pu décoder des messages cryptés envoyés par amirauté
allemande, par onde radio, au sous-marin allemands.
En 1943, MANCHEY aidé par un de ses étudiants en thèse a conçu et
construit un ordinateur à tube (ENIAC (Electronic numerical integration
and computeur)) à vide ayant les caractéristiques : -18000 tubes ;
-1500 relais ;
-10 registres ;
-10 chiffres décimaux ;
-pesait 30 tonnes et consommait 140 kW.
On la programmait en langage machine, en manipulant quelques 6000
commutateurs interconnectés par un foret de câble.
Un des participant VON NEUMAN génie au même titre que Léonard de Vinci :
Parlait plusieurs langues couramment
Expert en sciences physiques et mathématiques
Pouvait se convenir de tous ce qu‟il a vu et entendu
A émis l‟idée de base (modèle) VON NEUMAN, modèle qui est à la base de la
plupart d‟ordinateur standards actuels. Sur la Fig.1.1. ci-dessous présente le modèle
VON NEUMAN.
• Machine à circuits intégrés
• Machine à circuits très intégrés
© Kasengedia motumbe pierre 13
Page 14 sur 270
MODELE VON NEUMAN
E S
N O
T R
R MEMOIRE T
E I
E E
Unité de ALU
commande
ACCU
Fig.1.1. Modèle VON NEUMAN
Unité de commande + ALU + registres = processeur
Proce
sseur
intégr
é
1.2.3. Système à microprocesseur
Un système à microprocesseur peut être aussi développé comme un ordinateur
qu‟on peut facilement transporter, dédicacer à :
- contrôler les paramètres fonctionnels d‟une voiture ;
- Un pilote automatique (ordinateur embarqué) d‟un avion ;
- Un central téléphonique, etc…
1.2.3.1. Microprocesseurs
Un microprocesseur est une unité centrale de traitement (CPU), il est le
moteur du traitement de l‟information dans un microordinateur, système
© Kasengedia motumbe pierre 14
Page 15 sur 270
à microprocesseur. Relier directement ou indirectement à tous les
composants du système ou PC
CPU : central processing unit est l‟élément moteur de l‟ordinateur qu‟il
interprète et exécute les instructions du programme CPU = CU + ALU +
Registres
CU : command unit
ALU : Arithmétic Logic unit
On relie le microprocesseur aux différents équipements d‟entrée-sortie
(Keyboard, écran, disque dur, imprimante) moyennant des contrôleurs
(entrée/sortie). Sur la Fig.2 est illustré le principe d‟interconnexion d‟un
microprocesseur aux différents équipements d‟entrée/sortie.
CU : commande unit
(ALU)
Unité arthritique et
logique
REGISTRE
DISQUE IMPRIMA
CO RI NTE
Mémoire
principale
AC
…. Contrôleur Contrôleur
HDD imprimante
© Kasengedia motumbe pierre 15
Page 16 sur 270
Fig.1.2. Principe d‟interconnexion d‟un microprocesseur aux différents équipements
d‟entrée/sortie.
Structure interne d‟un microprocesseur hypothétique
Sur le schema de la Fig.1.3. ci-dessous est présenté la Structure interne d‟un
microprocesseur hypothétique
RA MEMOIRE RM
AC
CO RI
Décodeur
2
3
Horloge Séquenceur
Mémoires, entrées/entrées
Fig.1.3. Structure interne d‟un microprocesseur hypothétique
RI (IR) : REGISTRE D‟INSTRUCTION (IR : Instruction Registre)
AC : Accumulateur
CO: computer ordinal (PC: Programm counter)
UAL, ALU: Unité arithmétique Logique (ALU : Arihmetic
Logic Unit) Le microprocesseur exécute trois opérations de
base pour traiter l‟information. Fetch
© Kasengedia motumbe pierre 16
Page 17 sur 270
Décode
Exécution
L‟unité de commande peut être un séquenceur : câblé ou micro-
programmée. Il importe que vous sachiez qu‟il existe toujours une
équivalence entre la logique câblée et celle microprogrammée
Fig.1.4. Equivalence entre la logique câblée et celle micro-
Pour réaliser le tableau de microprogrammation du circuit logique
Fig.4.(a), On assembles les valeurs d‟entrée ABC, et le résultat M dans
un tableau Fig.4(b). Si on veut obtenir le résultat de la logique câblée en
microprogrammation, il suffit d‟accéder à la mémoire d‟adresse ayant
comme entrée les valeurs ABC sur contenu (M) aura le résultat de la
© Kasengedia motumbe pierre 17
Page 18 sur 270
fonction logique. On stocke la valeur de l‟opération logique.
Microprogrammation (firmeware)
Le principe de la microprogrammation a été introduit pour la première fois par
Maurice Wilkes. Il a appelé ce principe : « La mémoire de commande ».
B Step 2 (CA C+D)
D2
Step 4
D4
D3
Fig.1.5. Equivalence entre la logique
câblée et celle programmée
D1
Step 0
Step1
0. LOAD B ( A B)
1. Test (A0, A0) / ( 2, 3 )
2. C C+D
GOTO 4
© Kasengedia motumbe pierre 18
Page 19 sur 270
3. C C+E
4. STOP
1. 2. 3.2. Les opérations d’entrée /sorties
Opérations permettant au processeur central de communiquer avec l‟extérieur, avec
les périphériques. Parmi les opérations d‟entrée/sortie les plus connues, nous
pouvons citer :
- méthode Interrogative (polling) ;
- Par interruption ;
- Par DMA (direct memory Access);
- Canaux d‟ entrées /sorties.
Méthode interrogative Polling (Fig.1.6)
Le polling est une méthode par laquelle le master (microprocesseur)
interroge périodiquement le slave (périphérique), un à un, pour
demander à chacun, s‟il veut effectuer une opération d‟entrée/sortie.
Dans l‟affirmation il effectue l‟opération d‟entrée/sortie, dans le cas
contraire il passe au prochain périphérique.
© Kasengedia motumbe pierre 19
Page 20 sur 270
P1
(master)
CPU P2
Polling slave
P3
P4
Fig.1.6. Méthode interrogative (polling)
Méthode par interruption (Fig.7)
Le polling a un inconvénient majeur dans le sens qu‟il mobilise
beaucoup de temps du CPU, qui passe son temps à interroger les
périphériques. C‟est pourquoi, on introduit la méthode par interruption
par laquelle lorsque le périphérique veut effectuer une opération
d‟entrée/sortie, il envoie un signal d‟interruption au microprocesseur.
En vue de gérer les interruptions provenant de plusieurs périphériques,
on a introduit le PIC (programmable interrupt controller)
© Kasengedia motumbe pierre 20
Page 21 sur 270
P1
IREQ1
INT
CPU
INTA PIC IREQ2
P2
IREQ n
P3
data
adress
Fig.1.7. Opération entrée/sortie moyennant un PIC (programmable interrupt
controller)
DMA (Direct memory access)
Pour bien réaliser les opérations entrée /sortie avec un périphérique rapide,
On utilise le transfert direct entre le périphérique et la mémoire sous
contrôle DMA. En vue d‟effectuer les opérations d‟entrée/sortie, par
DMA, les paramètres suivants sont utilisés :
- adresse bloc de données du départ ;
- adresse bloc arrivé ;
- nombre mots à transférer.
Sur la Fig.8. Est illustré un système à microprocesseur utilisant le DMA
© Kasengedia motumbe pierre 21
Page 22 sur 270
² Control
Fig.1.8. Système à microprocesseur utilisant le DMA
BUSREQ BUSG
P1 P2 Pj
MEMOIRE DMA
DATA
Logique
MICRO- décodage
PROCESSEUR
ADDRESS
BUSREQ bus contrôle
BUSGR
a) Canaux d’entrée/sortie (Fig.9)
- gros ordinateurs (MAINFRAME)
- interruption et DMA traditionnel inefficaces - canaux de données ou
canaux d‟entrée / sortie
- canaux spécialisés : commandent les périphériques à haute vitesse de
transfert
Certains gros ordinateurs ont un volume important d‟opération
d‟entrée/sortie, à telle enseigne qu‟ils sont obligés d‟utiliser de
véritables processeurs spécialisés pour les opérations d‟entrée/sortie.
© Kasengedia motumbe pierre 22
Page 23 sur 270
- canaux multiplexés : peut gérer plusieurs échanges avec des
périphériques à faible vitesse de transfert (ex : terminaux)
-
MEMOIRE
PRINCIPALE
PROCESSEUR
Canal E/S Canal E/S
multiplexe Spécialisé
Contrôleur des
terminaux imprimante disque disque disque
Fig.1.9. Canaux d‟entrées /sorties, processeur spécialises pour les entrées/sorties.
© Kasengedia motumbe pierre 23
Page 24 sur 270
1.3. ORGANISATION EN COUCHES ET SYSTEMES D’EXPLOITATION
Exemple d‟organisation en couches, le modèle OSI :
-stratégie, approche oignons
-décomposition d‟un problème en modules (qu‟on peut mieux
maîtriser) -gestion de la complexité
L‟ordinateur peut être perçu comme un système organisé en couche, de
la même manière que celle du modèle OSI. Cette organisation s‟inspire
de l‟approche oignons, qui consiste à décomposer un problème complexe
en module moins complexe, qu‟on peut mieux maîtriser. Ainsi l‟ordinateur
(ses modules hardware et software) peut être perçu comme une
superposition de machines virtuelles.
© Kasengedia motumbe pierre 24
Page 25 sur 270
.
.
Fig.1.10.(a) ; Organisation en couche d‟un ordinateur
Sur les Fig.10.(a). et Fig.10.(b) est illustrée l‟organisation en couches d‟un
ordinateur.
© Kasengedia motumbe pierre 25
Page 26 sur 270
Fig.1.10.(b). Organisation en couches d‟un
ordinateur
1.4. FONCTIONS DE BASE D’UN SYSTEME D’EXPLOITATION
Les fonctions de base d‟un système d‟exploitation sont :
- Gestion de processus;
- Gestion de la mémoire ;
© Kasengedia motumbe pierre 26
Page 27 sur 270
- Gestion du système de fichiers ;
- Gestion des entrées / sorties .
1.4.1. Définition formelle
Un système d‟exploitation est un ensemble de programmes qui constituent une
machine virtuelle épargnant l‟utilisateur, de gérer la complexité de la programmation
du bas niveau. Il joue aussi le rôle d‟interface entre utilisateur et l‟ordinateur et
assure la gestion rationnelle tant de ressources hardware que software de
l‟utilisateur.
1.4.2. Types de système d’exploitation
Les systèmes d‟exploitation peuvent se différencier fondamentalement selon :
- le hardware sur lesquels, ils sont battit ;
- l‟environnement d‟utilisation.
Ainsi en nous basant sur l‟environnement d‟utilisation et la structure interne il y a
lieu de les classifier de la manière suivante :
- système d‟exploitation temps réels
- système d‟exploitation traitements par lots (batch processing)
- système d‟exploitation monolithiques
- système d‟exploitation modèle client – serveur
- système d‟exploitation multiprogrammation
- Système d‟exploitation time sharing (temps reparti)
- système d‟exploitation (multipurpose) à plusieurs objectifs
1.4.2.1. Systèmes d’exploitation temps réels
Généralement utilisée dans la commande de processus industriels (robot industriel)
© Kasengedia motumbe pierre 27
Page 28 sur 270
Un système automatisé peut se décomposer en 2 parties qui
coopèrent :
- la partie opératrice appelée également processus
- la partie commande ou automatisme.
La communication avec l‟opérateur fait partie intégrante de cette structure.
Le temps réel est lié à la notion de pilotage d‟un système soumis à des contraintes
de temps. L‟environnement temps réel est aussi caractérisé par l‟activité liée à des
environnements externes.
PARTIE COMMANDE
PARTIE CONTROLE
TACHE 1 TACHE 2 . TACHE 3
. ……… TACHE n
Feedback
Comptes
Rendus Actions
PROCESSUS
Fig.1.11 .Décomposition structure simplifiée par exemple un robot industriel. Un
robot Industriel est un système mécatronique, ayant un certain nombre de grade de
libertés.
Processus : dans le cas d‟espèce ne doit pas être considère comme un programme
exécute dans l‟ordinateur. Ici, il a plutôt le sens du processus industriel
Sur le schema de la Fig.1.12. est présenté un robot didactique
ayant quatre grades de liberté.
© Kasengedia motumbe pierre 28
Page 29 sur 270
Fig.1.12. Un robot didactique ayant quatre grades de liberté(le
quatrième est celui du préhenseur).
Le système de commande du robot sysmentionné peut fonctionner de la manière
suivate :
- une tache peut être affectée à la gestion d‟un grade de liberté
- une tache à la gestion de l‟apprehendeur
© Kasengedia motumbe pierre 29
Page 30 sur 270
Modèle des taches dans un système multitâches monoprocesseurs
Carte contrôleur robot
Calculateur
Amplificateur
puissance
Robot
Fig.1.13. Un robot industriel contrôlé par un calculateur.
Une tache est un programme ou une partie de programme en exécution
conceptuellement, chaque tache possède un processeur virtuel comprenant :
- son pointeur d‟instruction (IP) ;
- sa zone de donnée ;
- son pointeur de pile (SP)
Sur le Fig.1.12, Fig.1.13. Est présenté un robot à 4 grades de libertés,
respectivement un robot didactique contrôlé par un calculateur.
En réalité le processeur physique commute des taches sous le contrôle d‟un module
particulier au système d‟exploitation, appelé Ordonnanceur.
© Kasengedia motumbe pierre 30
Page 31 sur 270
TACHE A TACHE B TACHE C
IPA CODE IPC
IPB CODE CODE
DONNEES DONNEES DONNEES
SPA SPB SPC
Figure.1.14.(a) Modèle d‟un système d‟exploitation comportant les taches A,B,C
TACHE A TACHE B TACHE C
CODE CODE CODE
IP à instant t IP à t + δt IP à t +2δt
DONNEES DONNEES DONNEES
SPA PILE PILE SPC PILE SPB
© Kasengedia motumbe pierre 31
Page 32 sur 270
Fig.1.14.(b). Modèle réel d‟un système comportant trois tâches A, B, C
Sur les Fig.14(a) et Fig.14.(b) sont présentes :
- un modèle conceptuel d‟un système d‟exploitation gérant les taches ABC
- un modèle réel gérant les taches ABC
Figure 16
Tache C
Tache B
Tache A
t t + δt t +2δt t +3δt temps
Fig.1.15. Gestion quasi parallèle d’un système à 3 taches, dans un monoprocesseur.
© Kasengedia motumbe pierre 32
Page 33 sur 270
Mesure de température dans une usine d’industrie chimique
Monitoring
Imprimante
Niveau supervision ORDINATEUR
CENTRAL
Niveau opérationnel
MICRO- MICRO- MICRO-
PROCESSE PROCESSE PROCESSE
UR UR UR
Sensers (sonde) Sensers
Sensers
Système distribué hiérarchisé temps réel
Fig.1.16. Pour la mesure de température dans une usine d‟industrie chimique,
on peut utiliser un système multi-calculateur / microprocesseur à deux niveaux :
- niveau de supervision
- niveau opérationnel.
Ce genre de contrôle implique un polling périodique de sous-système
microprocesseur par le niveau de supervision, qui se comporte un peu comme le
maître (master).
Si un événement exceptionnel apparaît le « slave » (esclave) peut en informer au
maître.
Dans cette architecture master – slave le slave a aussi une certaine capacité de
traitement de contrôle, de stockage.
© Kasengedia motumbe pierre 33
Page 34 sur 270
Ce genre de systèmes multiprocesseur peut être utilisé dans :
- le monitoring de lignes de production ;
- le contrôle de processus continus (pipe –line) ;
- le monitoring et contrôle du système de « feu rouge « dans une ville ;
- monitoring de l‟état de navigation aerienne des avions militaires .
1.4.2. 2. Traitement par lot
Ce genre de système est apparu vers la fin des années 50 et le début des années
60. Pour lancer un travail (job), un programme ou ensemble de programmes) le
programmeur devrait commencer à écrire le programme (en FORTRAN ou
assembleur) puis devrait le mettre sur des cartes perforées. Il amenait ses cartes à
la salle de soumissions des travaux et les donnait à l‟un des opérateurs. Lorsque
l‟ordinateur terminait un travail, un opérateur retirait les résultats de l‟imprimante et
les portait à la salle de retrait des travaux pour que le programmeur puisse venir les
prendre.
L‟idée directrice du traitement par lots était de collecter un ensemble des travaux
codifiés dans des cartes perforées, les soumettre au lecteur de cartes, avant qu‟ils
puissent être transférés dans les bandes magnétiques, en utilisant par exemples un
petit ordinateur peu onéreux (IBM 1401), qui était excellent pour lire les cartes,
copier les bandes et imprimer les résultats mais très mauvais pour les calculs
numériques.
D‟autres machines, bien, plus chères, comme IBM 7094, étaient utilisées pour les
calculs.
Sur la Fig.17.suivante est illustré un de premiers systèmes du traitement par lot.
Les opérations puissent être résumées de la manière suivante :
- les programmeurs portent les cartes IBM 1401, qui transcrit les travaux ;
© Kasengedia motumbe pierre 34
Page 35 sur 270
Imprima
. . . . . nte
IBM 1401 IBM 7094 IBM 1401
- l‟opérateur porte la bande de données à l‟IBM 7094, qui va effectuer les
calculs ;
- l‟opérateur fournit la bande des résultats à l‟IBM 1401, qui va s‟occuper de
l‟impression
Dérouleur bande bande bande
Lecteur bande entrée système sortie
Carte . . . . .
Fig.1.17. : un des premiers systèmes de traitement par lot
1.4.2. 3. Système monolithique
Il s‟agit d‟une organisation assez répandue. Cette approche pourrait être
surnommée « le grand désordre ». La situation est qu‟il n‟y a pas de structure.
Le système d‟exploitation est une collection de procédure, chacune pouvant appeler
à n‟importe quel moment n‟importe quelle autre .Chaque procédure du système doit
de ce fait, avoir une interface bien définie au niveau de ses paramètres et des
résultats qu‟elle retourne et peut appeler toute autre procédure qui lui est utile.
© Kasengedia motumbe pierre 35
Page 36 sur 270
Pour construire le code objet du système d‟exploitation, il faut compiler toutes les
procédures, ou les fichiers qui les contiennent puis, les réunir au moyen d‟un éditeur
de liens.
Même dans les systèmes monolithiques, il est possible d‟avoir une structure
minimale .Les services offerts par le système d‟exploitation sont adressés en mettant
des paramètres dans des endroits biens définis, (registres, piles,…) et en exécutant
ensuite une instruction spéciale nommée « appel au noyau, appel au superviseur.
Cette instruction commute le mode utilisateur au mode noyau (superviseur).
En nous appuyant sur la Fig.18 ci –dessous nous pouvons expliquer le
fonctionnement :
- un programme utilisateur s‟exécute en mode utilisateur ;
- lorsqu‟on lance une commande du système d‟exploitation on passe du mode
utilisateur au mode superviseur (étape 1)
- le système d‟exploitation examine les paramètres de l‟appel 2 pour
déterminer l‟appel système à exécuter.
- le système cherche dans une table indexée la position k qui contient un
pointeur sur l‟appel système k
- cette opération 3 identifie le service qui est ensuite appelé (exécuté)
- l‟appel système se termine et le contrôle est rendu au programme appelant.
Programmeur utilisateur Programme utilisateur
s‟exécute en mode
Programme utilisateur. Appel au noyau utilisateur
4 Procédure
Service
S.E
1
S‟exécute en mode
2 3
© Kasengedia motumbe pierre 36
Page 37 sur 270
Fig.1.18. Système d‟exploitation monolithique
1.5.3. Systèmes en multi programmation
On dit d‟une machine qu‟elle est multiprogrammée si plusieurs programmes sont
chargés en même temps, en mémoire dans le but de partager le CPU. La
multiprogrammation est donc une technique qui vise l‟élimination du temps d‟attente
du CPU pendant les opérations d‟entrée-sortie. La différence entre les systèmes
mono et multiprogramme réside dans le nombre de programmes chargés en
mémoire et prêts à utiliser le CPU.
La Fig.1.19. Ci-dessous schématise la multiprogrammation.
Ordinateur
n programmes à la fois
E/S
Programme sur carte lecteur cartes imprimante
Fig.1.19. Système multiprogrammation
© Kasengedia motumbe pierre 37
Page 38 sur 270
La multiprogrammation pose un certain nombre de problèmes, notamment :
- Comment partager l‟unité de traitement (CPU) entre plusieurs programmes et
sauvegarder le contexte.
- Comment gérer la mémoire centrale (MC) en permettant le chargement d‟un
nombre élevé de programmes dans un espace mémoire limité.
- Comment gérer les entrées-sorties de différents programmes, en assurant un
trafic ordonné de données entre la mémoire centrale et les unités
périphériques et en empêchant le système de mélanger les informations
appartenant aux différents programmes.
- Comment protéger les programmes et les données stockées dans la mémoire
centrale et sur disque, des erreurs éventuelles de programmes utilisateurs
système de la machine.
1.4.2.4. Systèmes temps partagés (time sharing systems)
Le „time sharing‟ se réfère au système dont la préoccupation majeure est de
distribuer la puissance de calcul (traitement) à un ensemble d‟utilisateurs
connectés à l‟ordinateur, à partir d‟un terminal, de façon à ce que chaque
utilisateur ait l‟illusion d‟un ordinateur qui lui est totalement dédicacé. Le système
„time sharing‟ à temps partagé dit aussi multi accès, multi utilisateurs est une
variante de système multiprogrammés ou le temps CPU est distribué par petite
tranches égales à un grand nombre d‟utilisateur par l‟intermédiaire de leur
terminal. Sur les Fig.1.20, Fig.1.21, sont représentés les principes d‟un système
multiutilisateur (temps partage), respectivement la répartition du temps CPU entre
les utilisateurs dans un système. Il y a lieu de constater que le parallélisme du
traitement de l‟information n‟est en réalité qu‟un pseudo parallélisme.
© Kasengedia motumbe pierre 38
Page 39 sur 270
Ordinateur
n programmes à la fois
E/S
Imprimante
Fig.1.20. Principe d‟un système multiutilisateur (temps partage)
1.4.2.5. Système multi utilisateurs ‘time – sharing’
Dans la figure ci-dessous est décrite la répartition du temps CPU entre utilisateur
dans un système multi utilisateur (time sharing)
© Kasengedia motumbe pierre 39
Page 40 sur 270
Fig.1.21. Répartition du temps CPU entre utilisateur dans un système multi utilisateur
(temps parage).
1.4.2.6. Le modèle client-serveur
Dans certains systèmes, on a eu l‟idée de déplacer une grande partie du code du
système d‟exploitation dans une couche plus élevée. Ainsi selon cette idée, la
tendance des systèmes d‟exploitation modernes tente de réduire le système
d‟exploitation à un noyau minimal. Donc, on a reporté la plupart des fonctions du
système d‟exploitation dans un processus utilisateur. Pour demander un service
comme la lecture d‟un bloc d‟un fichier, un processus utilisateur (aussi appelé client)
© Kasengedia motumbe pierre 40
Page 41 sur 270
envoie une requête à un processus serveur qui effectue le travail et lui envoie la
réponse sur la Fig.22.
Dans le modèle illustré sur la Fig.22 le noyau ne gère que la communication entre
les processus clients et serveurs.
Processus Processus serveur Mode
Client
Client des Serveur Serveur utilisateur
Processus ……. des imprimant
Fichiers
mode
NOYAU noyau
le mode noyau requiert un service en envoyant un message
au processus serveur
Fig.1.22. Modèle client-serveur dans un système non distribué
La décomposition du système d‟exploitation en petites parties qui ont chacune une
fonction particulière, telle que la gestion des fichiers, processus, des terminaux, ou
de la mémoire, rend ces parties plus faciles à modifier. De plus, les serveurs
s‟exécutent comme des processus en mode utilisateur, et non en mode noyau, ne
peuvent pas accéder directement au matériel. Une conséquence notable est qu‟un
bogue dans le serveur de fichiers par exemple, n‟affectera pas en général
l‟ensemble de la machine. Le modèle client-serveur se prête par ailleurs très bien à
une utilisation dans les systèmes distribués tel qu‟on peut le constater sur la
Fig.1.23.
© Kasengedia motumbe pierre 41
Page 42 sur 270
Un client qui envoie des messages à un serveur, n‟a pas besoin de savoir s‟il est
traité sur sa propre machine ou s‟il est transmis au serveur d‟une machine au travers
d‟un réseau. Du point de vue de client la même chose se produit dans les deux cas :
il va envoyer et puis, il va recevoir une réponse.
Client Serveur de Serveur des Serveur des
fichier processus terminaux
Noyau Noyau Noyau Noyau
Fig.1.23. Modèle client-serveur dans un système distribué.
© Kasengedia motumbe pierre 42
Page 43 sur 270
CHAP.2. GESTION DE PROCESSUS
2.1. INTRODUCTION AUX PROCESSUS ET ORDONNANCEMENT DES TACHES
2.1.1. Le concept de processus
Le concept de processus est un des plus importants dans le système d‟exploitation.
Il est l‟abstraction d‟un programme en cours d‟exécution. Un programme étant une
suite d‟instructions contenue dans un fichier. Tous les ordinateurs peuvent effectuer
plusieurs taches à la fois. Un ordinateur peut, pendant qu‟il exécute le programme
d‟un utilisateur, lire les données d‟un disque ou afficher les résultats sur écran ou
une imprimante. Dans un système multiprogrammé, le processus peut aussi
commuté d‟un programme à un autre en exécutant chaque programme pendant
quelques dizaines ou centaines de millisecondes. Mais, le processeur, à un instant
donné, n‟exécute réellement qu‟un seul programme. Pendant une seconde, le
processeur peut exécuter plusieurs programmes et donne ainsi aux utilisateurs une
impression de parallélisme. Certains qualifient de pseudo parallélisme une
commutation instantanée du processeur d‟un processus à un autre, la différencier
du vrai parallélisme qui se produit au niveau du matériel lorsque le processeur
travaille en même temps que certains périphériques d‟entrée/sorties.
2.1.2. Hiérarchie de processus
Les systèmes d‟exploitation qui font appel au concept de processus doivent
permettre de créer le processus requis. Dans la plupart des systèmes il faut pouvoir
créer et détruire dynamiquement les processus. Les processus dans MINIX, sont
créés par l‟appel système FORK( ) qui crée une copie conforme du processus
appelant. Le processus fils peut aussi effectuer un FORK( ), ce qui conduit
rapidement à une arborescence de processus. D‟autres systèmes d‟exploitation ont
des appels système pour créer un processus, changer son état concept et lancer son
© Kasengedia motumbe pierre 43
Page 44 sur 270
exécution. Quelle que soit la nature de l‟appel système, les processus doivent
pouvoir créer d‟autres processus. Notez qu‟un processus n‟a qu‟un père et peut
avoir plusieurs fils.
2.1.3. Etats de processus
Les processus bien qu‟étant des entités indépendantes, doivent parfois interagir
avec d‟autres processus. Les résultats d‟un processus peuvent, par exemple, être
les données d‟un autre, comme nous pouvons le constater dans la commande shell.
Cat fichier1 fichier2 fichier3 /grep etudiant
Le processus qui exécute cat, concatène les trois fichiers (fichier1, fichier2, fichier3)
et envoie le résultat sur la sortie standard. Le deuxième processus qui exécute grep,
recherche lignes qui contiennent le mot étudiant.
Si grep est prêt à s‟exécuter et ne peut pas lire faute de données .Il doit se bloquer
en attendant les données, un processus peut être dans les états suivants :
- bloqué
- Elu
- Prêt
tel que nous pouvons aussi le constater sur la Fig.24 ci-dessous
ELU
1
2
3
BLOQUE
PRET
4 4
Fig.2.1. Etats d‟un processus
© Kasengedia motumbe pierre 44
Page 45 sur 270
Etat bloqué : état d‟un processus qui a été exécuté (donc élu), mais ne peut pas
poursuivre son exécution suite à une raison logique, par exemple, lorsqu‟il attend
des données qui ne sont pas disponibles.
Etat Elu : un processus est élu, lorsqu‟il est en cours d‟exécution, il peut être arrêté
même s‟il peut poursuivre son exécution, si le système d‟exploitation décide
d‟allouer le processeur à un autre processus.
Etat prêt : il s‟agit de l‟état d‟un processus qui a été suspendu provisoirement par le
système d‟exécution afin de permettre l‟exécution d‟un autre processus ou un
processus qui attendait les données et vient de les recevoir, mais constate que le
processeur est toujours occupé par un autre processus.
Quand et comment fonctionne les transitions 1, 2, 3, 4 de la Fig.24.
Transition 1 :
- processus exécuté (élu) qui manque une donnée pour continuer logiquement son
exécution.
Transition 4 :
- le processus attendait une donnée pour continuer son exécution et vient de la
recevoir, main constate que le processeur est toujours occupé.
Transition 2 :
- l‟ordonnanceur retire le processeur au processus et choisit un autre processus.
Transition 3 :
- l‟ordonnanceur choisit un processus en lui allouant le processeur.
© Kasengedia motumbe pierre 45
Page 46 sur 270
Le modèle des processus permet de mieux comprendre ce qui se passe à l‟intérieur
du système. Une partie des processus exécute les programmes qui traitent les
commandes tapées par les utilisateurs, les autres processus du système gèrent les
tâches telles que les requêtes au gestionnaire de fichiers ou les opérations sur les
disques ou les bandes magnétiques.
Le modèle des processus s‟appuie sur l‟ordonnanceur qui se charge de
l‟ordonnancement de l‟exécution de différents processus.
Sur la Fig.25. ci-dessous est présenté l‟ordonnanceur (scheduler) et les processus
qu‟il gère.
Processus
1 ………… N-2 N-1
ORDONANCEUR (scheduler)
Fig.2.2. L‟ordonnanceur et les processus qu‟il gère la couche la plus basse d‟un
système d‟exploitation structuré en processus se charge des interruptions et effectue
l‟ordonnancement.
© Kasengedia motumbe pierre 46
Page 47 sur 270
2.1.4. Ordonnancement des processus
2.1.4.1. Introduction
L‟ordonnancement est le mécanisme par lequel un ordonnanceur, ou un noyau
système d‟exploitation, choisit le processus auquel on doit attribuer un processeur.
Parmi les techniques d‟ordonnancement les plus courantes, il y a lieu
de citer : o l‟ordonnancement circulaire (tourniquet, round-
robin) ; o l‟ordonnancement par priorité ; o
l‟ordonnancement par priorité avec files multiples.
o Autres techniques
2.1.4. 2. Critères de qualité d’un algorithme d’ordonnancement.
Plusieurs processus peuvent être en concurrence pour accéder au processeur.
Potentiellement, tous les processus sont candidats à l‟élection par le processeur. Le
choix du processus à exécuter est réalisé par l‟ordonnancement. Ce choix appelé
algorithme d‟ordonnancement est fonction de la finalité du système.
Les critères d‟attribution du processeur sont très différents selon qu‟il s‟agit de gérer
un grand nombre de terminaux connectés à un ordinateur de temps partagé (time
sharing) ou qu‟il s‟agit de gérer un processus industriel en temps réel.
Un algorithme d‟ordonnancement, quel que soit le système auquel il s‟adresse doit
avoir les qualités suivantes :
- Efficacité ;
-Temps de réponse ;
-Impartialité ;
-Débit
-Temps de réponse aux interruptions
Efficacité : le processeur doit consacrer le maximum de temps à une application
c‟est à dire doit éviter du temps mort.
© Kasengedia motumbe pierre 47
Page 48 sur 270
Temps de réponse : le temps de réponse doit être faible de façon à réagir
rapidement à un événement externe. En fonction de l‟application d‟autres critères
peuvent être appliqués.
Impartialité : l‟Ordonnanceur doit effectuer un partage équitable du processeur.
Chaque processus reçoit son temps processus.
Débit : l‟Ordonnanceur doit effectuer le plus de tâches possibles dans un intervalle
de temps donné.
Temps de réponse aux interruptions : le temps de réponse aux interruptions est un
critère important pour les noyaux temps réel. Ce temps doit être spécifié, car il fixe le
délai maximal au bout duquel une tâche matérielle peut être lancée. Il dépend de la
durée pendant laquelle les interruptions sont masquées dans les sections critiques
du noyau. Durant l‟ordonnancement des processus et l‟exécution de la plupart des
primitives, le système d‟exploitation est masqué (partiellement ou totalement)
retardant l‟instant où une interruption peut être prise en compte.
Les critères énoncés, ci-dessus, sont parfois contradictoires. Un débit élevé n‟est
pas conciliable avec une bonne efficacité. Si le processeur commute les processus à
intervalle de trop rapprochés le temps passé dans la gestion de l‟ordonnancement
peut devenir prépondérant par rapport au temps consacré aux processus.
2.1.4. 3. Stratégie d’ordonnancement sans recyclage des travaux
a. File d’attente simple (FIFO)
Le schéma de la Fig.32. Ci-dessous montre la stratégie la plus simple d‟une file
d‟attente simple ou FIFO (first in first out) ou premier arrivé, premier servi. Cette
© Kasengedia motumbe pierre 48
Page 49 sur 270
stratégie ne tient compte des temps d‟exécution. Elle est utilisée dans le système de
traitement par lot.
Mais, il présente un inconvénient majeur, les travaux courts ont un temps de
réponse élevé, s‟ils arrivent après des travaux longs.
Entrée sortie
T5 T4 T3 T2 T1 PROCES
SEUR
Ti : tache i
Fig.2.3. ordonnancement file d‟attente simple (FIFO)
Pour pallier au désagrément que peut subir les petits travaux, lorsqu‟ils arrivent
après de long travaux, on a mis au point la méthode de file temps estimé
d‟exécution .C‟est d‟ailleurs l‟objet de la section suivante.
b. File d’attente ordonnée suivant le temps estimé d’exécution
Quand un nouveau processus arrive, il est placé dans la file à l‟endroit
correspondant à son temps estimé d‟exécution, la file est ordonnée suivant les
temps d‟exécution croissants : l‟estimation est faite a priori et aucune correction
n‟est tentée en cours d‟exécution. Le temps de réponse de travaux courts est ainsi
diminué, mais les travaux longs sont retardés (voir même retardés indéfiniment si le
débit d‟arrivé des travaux courts est assez grand) Sur la figure ci-dessous est
présente un schéma décrivant cet algorithme
© Kasengedia motumbe pierre 49
Page 50 sur 270
T5 T4 T3 T2 T1 PROCES
SEUR
3 Tache insérée selon le temps estimé d’exécution
Fig.2.4. File d‟attente ordonnée suivant le temps estimé d‟exécution
Conclusion :
Quand bien même cette méthode permet d‟abaisser le temps de réponse de travaux
courts, elle ne permet pas d‟apporter une solution fiable pour le temps réponse de
travaux longs et présente l‟inconvénient de se fier uniquement à un temps
d‟exécution estimé, qui peut être incorrect ou falsifié par des usagers de mauvaise
foi.
Compte tenu de tout ce qui a été dit, nous allons faire appel à d‟autres méthodes
notamment celles qui appel au recyclage de travaux.
2.1.4. 4. Stratégie d’ordonnancement avec recyclage des travaux
Ordonnancement circulaire (tourniquet, round-robin)
L‟algorithme de l‟ordonnancement le plus ancien, le plus simple et le plus fiable est
l‟ordonnancement circulaire, aussi appelé :
- balayage cyclique simple ;
- tourniquet ;
- round-robin.
Dans un noyau avec réquisition du processeur, chaque processus possède une
quantité de temps ou quantum, pendant lequel il est autorisé à occuper le processus.
© Kasengedia motumbe pierre 50
Page 51 sur 270
Lorsque son quantum est écoulé, le processeur est réquisitionné et alloué au
processus suivant de la file de processus prêts.
Sur la Fig.26 ci-dessous est décrite une instance donnée. Le processus p5 est élu
(en exécution), c‟est à dire il utilise le processeur physique.
Les processeurs p2, p4, p3, p1 sont dans la file d‟attente de processus prêts, donc
éligibles. Si le processus élu p5 épuise son quantum du temps sur le CPU, il rejoint
la queue de file de processus prêts.
Le processus p6 est terminé ou bloqué (dans le cas où il serait bloqué, il rejoindrait
la file de processus bloqués)
Fig.2.5 : Gestion des processus par file circulaire
Choix du quantum :
Le choix du quantum est l‟affaire de compromis. Un quantum de courte durée
augment le nombre de processus commuté dans un laps de temps donné, mais
diminue l‟efficacité du noyau.
© Kasengedia motumbe pierre 51
Page 52 sur 270
Pour un système avec réquisition du noyau, on définit l‟efficacité de l‟Ordonnanceur
par le rapport E :
E = (T-t)/T=1-t/T (1) avec T : durée du quantum
t : temps de commutation
En analysant l‟équation, pour que E soit le plus proche possible de 1, c‟est à dire
une efficacité 100%, on ne peut qu‟agir que T, étant donné que t fixé par la
conception de l‟Ordonnanceur et la vitesse du processeur.
Sur la Fig.27. Est présentée l‟utilisation du processeur durant un quantum
Commutation Temps consacré à un processus Commutation
Fig.2.6. Utilisation du processus durant un quantum.
Supposons que t (commutation du processus, aussi appelé commutation du
contexte) dure 5ms et que le quantum fixé à 25 ms. Le processeur travaille alors
pendant 20ms sur des tâches utiles, puis passe 5ms sur la commutation de
© Kasengedia motumbe pierre 52
Page 53 sur 270
processus, donc 20% du temps processeur sont perdus pour la gestion du système
(overhead). Pour améliorer l‟efficacité, on peut par exemple fixer la valeur du
quantum à 500ms. La perte en temps est alors égale à 1%, mais cela risque de
pénaliser l‟interactivité dans un système multiutilisateur.
En général, un quantum de 100ms est un compromis raisonnable. Les systèmes
temps réels utilisent des quantum de faible durée (généralement 5ms au moins).
Ainsi, pour conserver une bonne efficacité, le temps de commutation doit être court,
ce qui nécessite d‟écrire l‟Ordonnanceur en langage d‟assemblage.
Conclusion : un quantum trop petit provoque trop de commutation de processus et
abaisse l‟efficacité du processus, alors qu‟un quantum trop élevés augmente le
temps de réponse des courtes commandes en mode interactif. Un quantum de
100ms est un compromis raisonnable. Sur la Fig.28. Est décrit comment on peut
programmer une file suivant une liste circulaire. La file est réalisée en utilisant une
liste chaînée simple. Chaque nœud comporte un numéro de tâche (processus) et un
pointeur vers le nœud suivant. Ce type de chaînage nécessite de mémoriser le
nœud précédant lors du parcours de la liste.
O
Tête de la
file p
Fig.2.7. Programmation d‟une file suivant une liste circulaire.
Ordonnancement par priorité
© Kasengedia motumbe pierre 53
Page 54 sur 270
Souvent l‟ordonnancement par file circulaire suppose que tous les processus (tâches)
ont la même priorité. Cette situation ne correspond pas à la réalité tant dans un
milieu bureautique universitaire que dans un milieu industriel de commande en
temps réel :
- milieu universitaire : dans un centre de calcul d‟une université la hiérarchie
peut être fixée de la manière suivante : les doyens en premier, les professeurs,
CT, assistant, secrétaires et enfin les étudiants ;
- dans le système de processus industriel, on est souvent amené à ranger les
processus par priorité, ou classe de priorités (tâches de commande, de
contrôle, de dialogue, tâche de sécurité, …)
Dans ce qui suit, nous allons envisager un ordonnancement par priorité, avec une
seule tâche par niveau de priorité.
Sur la Fig.2.8. est présenté l‟algorithme de l‟ordonnancement des tâches
par priorité. Processus termine ou bloqué
Fig.2.8. Ordonnancement des tâches par priorité.
Le principe de l‟ordonnancement des tâches par priorité est très simple. Chaque
tâche reçoit lors de sa création un niveau de priorité. L‟Ordonnanceur lance la tâche
© Kasengedia motumbe pierre 54
Page 55 sur 270
prête prioritaire. Pour empêcher le processus de priorité élevée de s‟exécuter
indéfiniment, l‟Ordonnanceur diminue la priorité du processus à chaque impulsion de
l‟horloge. Si cette priorité devient inférieure à celle du deuxième processus de plus
haute priorité, la commutation à lieu. Les priorités peuvent être statiques ou
dynamiques.
Dans le cas de priorité dynamique, il y a lieu d‟envisager le cas suivant : certains
processus font beaucoup d‟entrée/sortie et attendent ainsi la majeure partie du
temps la fin d‟une opération d‟entrée/sortie. Il faut donc leur allouer le processus dès
qu‟ils en demandent, pour leur permettre d‟effectuer leur requête suivante
d‟entrée/sortie. Cette opération d‟entrée/sortie pourra s‟exécuter en même temps
qu‟un autre processus qui fait des calculs. Si les processus qui font beaucoup
d‟opération d‟entrée/sortie n‟obtiennent pas rapidement le processeur, ils
occuperont la mémoire inutilement pendant leur attente. Un bon algorithme consiste
à donner à ces processus la priorité 1/f, où f la fraction du quantum que le processus
a utilisé à sa dernière activation (élection). Un processus qui n‟a utilisé que 2ms de
son quantum de 100ms aura une priorité 50, alors qu‟un autre qui sera exécuté
pendant 50ms avant de se bloquer aura une priorité de 2. La priorité d‟un processus
qui a utilisé tout son quantum sera de 1.
Réalisation d’un ordonnancement à priorité
La Fig.30.(1) présente une file chaînée simple dont chaque nœud comporte le
numéro de la tâche (x, y, z, w), et la valeur de la priorité (p, q, r, s) accordée à celle-
ci. La file doit être triée par priorités décroissantes pour éviter son parcours lors de la
recherche de la tâche prioritaire. De cette façon la tâche prioritaire est retirée en tête
de file. L‟ajout d‟une tâche dans la file d‟effectue en comparant, à partir de la tête,
les priorités de chaque nœud avec celle de la tâche à insérer.
© Kasengedia motumbe pierre 55
Page 56 sur 270
Fig.2.9.(1). Ordonnancement par priorité en utilisant une liste chaînée
La Fig.(30).1 ci-dessous présente l‟insertion d‟une tâche i de priorité b entre les
tâches y et z.
Fig.2.10. 2) insertion d‟une nouvelle tâche dans la file de taches organisées par
priorité.
2.1.3. 5. Ordonnancement par priorité avec files multiples
© Kasengedia motumbe pierre 56
Page 57 sur 270
Principes :
Ce type d‟ordonnancement est une variante de l‟ordonnancement par priorité.
Comme nous pouvons le constater sur Fig.2.11; le principe utilisé consiste à
combiner l‟ordonnancement Circulaire et l‟ordonnancement par priorité .Dans le
modèle ci-dessous plusieurs taches coexister au même niveau de priorité .Si
plusieurs taches sont présentes dans la file de plus forte priorité, ces taches seront
exécutées, en utilisant le modèle circulaire (Round-robin, tourniquet). S‟il n‟y a pas
qu‟une seule tâche par niveau de priorité le modèle est celui de l‟ordonnancement
par priorité .Entre ces deux modèles une multitude de combinaisons sont possibles.
Recyclage des taches prioritaires non terminées arrivées
P2 P4 P3 P1
P1 P5 P7
File prioritaire 0 (priorité supérieure)
P
R P9 P15
File prioritaire 1
O
C
E P11 P13 P6
S
File prioritaire 2
S
U
P8
S File prioritaire 3
Fig.2.11.. Ordonnancement par priorité avec files multiples
© Kasengedia motumbe pierre 57
Page 58 sur 270
Le processus p1 vient de se terminer ou de se bloquer .Le processus p5 est en
exécution .Les processus p2, p4, p3 et p1 sont dans la file d‟attente de priorité et
sont en attente d‟exécution. Lorsque le processus p7 de priorité 0 est activé il est
placé en queue de file .ces processus est exécuté avant ceux présents dans les files
de priorité inférieure. Lorsque le niveau de priorité 0est vide, les processus 9 et 15
sont exécutés jusqu‟à l‟accomplissement ou blocage, à moins qu‟un processus de
priorité supérieure ne soit activé. Enfin de compte viendront les processus p11, p13,
p6 puis p8.
Ce type d‟ordonnancement est bien adapté aux applications temps réel, et la plupart
des exécutifs l‟utilisent. Il est également utilisé dans certaines versions d‟UNIX
(version 7)
2.2. EXCLUSION MUTUELLE
2.2.1. Analyse approfondie du problème
1. Exemple 1
Mr et Mme Matumata ont un compte bancaire commun. Emettons l‟hypothèse selon
laquelle Mr et Mme Matumata se décident séparément à partir de deux guichets
bancaires éloignés de retrancher un montant de leur compte, en même temps. Si un
système efficace de transactions bancaires n‟est pas implémenté dans la base de
données, on pourrait avoir la situation suivante :
Le compte n est lu par Mr ;
Le compte n est lu par Mme ;
Le compte est modifié par monsieur et devient n-n1
Le compte est modifié par madame et devient n-n2
La valeur finale du compte est n-n2 au lieu de n-n1-n2.c‟est une
anomalie.
© Kasengedia motumbe pierre 58
Page 59 sur 270
2. Exemple 2
Soit deux processus p et q qui produisent de données devant être imprimées par une
imprimante unique. L‟emploi de cette imprimante par p exclut son emploi pour q tant
que l‟impression n‟est pas terminée.
3. Exemple
En dehors de l‟informatique, le même problème, deux trains ayant à circuler dans les
deux sens sur un tronçon de voie unique.
Ces trois exemples illustrent la notion d‟exclusion mutuelle : le compte du client doit
être considéré comme une ressource à un seul point d‟accès, de même que
l‟imprimante ou la voie ferroviaire unique.
Considérons la programmation au niveau de processus, de l‟exclusion mutuelle pour
une ressource C donnée, et appelons section critique d‟un processus, pour cette
ressource, une phase du processus pendant laquelle la ressource C est utilisée par
le processus, et donc inaccessible aux autres processus.
Par hypothèse, les vitesses relatives des processus sont quelconques et inconnues ;
nous supposons unique que tout processus soit de section critique au bout d‟un
temps fini. Nous exigeons de la solution un certain nombre de propriétés :
a) A tout instant, un processus au plus peut se trouver en section critique (par
définition de la section critique).
b) Si plusieurs processus sont bloqués en attente de la ressource critique, alors
qu‟aucun processus ne se trouve en section critique, l‟un d‟eux doit pouvoir y
entrer au bout d‟un temps fini (il faut éviter qu‟un blocage mutuel des processus
puisse durer indéfiniment).
© Kasengedia motumbe pierre 59
Page 60 sur 270
c) Si un processus est bloqué hors de la section critique, ce blocage ne doit pas
empêcher l‟entrée d‟un autre processus en sa section critique.
d) La solution doit être la même pour tous les processus, c‟est à dire qu‟aucun
processus ne doit jouer le rôle de privilégié.
Examinons quelques maniérer de réaliser l’exclusion mutuelle moyenne moyennant
des variables communes.
1. Une variable booléenne commune :
Cherchons à réaliser l‟exclusion mutuelle entre deux processus pi et pj qui veulent
accéder à une ressource critique en utilisant une seule variable booléenne
commune. Pour l‟écriture du programme de pi, on de signe « l‟autre processus
»
Par pj ; c’est-à-dire : j=1 si i=2et j=2 si i=1(j=3-i)
Contexte commun : booléen C ;
C :=faux ;
Processus pi : début i (1,2)
Ai : si C alors aller à Ai;
c := vrai ;
section critique i ;
c :=faux ;
reste du programme i ;
Aller à Ai ;
Fin ;
Cet algorithme a une limitation : supposons que C=faux. Si chaque processus teste
C avant que l‟autre ne lui ait affecté la valeur vraie. Les deux processus s‟engagent
dans leur section critique. L‟exclusion mutuelle n‟est donc pas assurée
© Kasengedia motumbe pierre 60
Page 61 sur 270
2. Une seule variable commune fonctionnant en bascule :
Contexte commun : entier t;
t :=i
Processus pi : début i (1,2)
Ai : si t=j alors aller à Ai ;
section critique i ;
t :=j ;
reste du programme i ;
Aller à Ai ;
Fin ;
Le processus pi ne peut entrer dans sa section critique que si t=i ; L‟exclusion
mutuelle est donc garantie par l‟indivisibilité de l‟opération de l‟accès à t. Toutefois,
la modification de t à chaque fin de section critique impose un fonctionnement en
bascule de deux processus, incompatibles avec la propriété d‟indépendance
(condition c) de l‟exclusion mutuelle. En particulier, l‟arrêt de pi dans la partie reste
du programme i empêche pj d‟exécuter plus d‟une fois sa section critique.
© Kasengedia motumbe pierre 61
Page 62 sur 270
3. Deux variables communes :
On pose encore j=3-i. Une solution conforme aux conventions de l‟énoncé peut
s‟écrire :
Contexte commun : booléen tableau C[1][2];
C [1] :=C [2] :=faux;
Processus pi : début i (1,2)
Ai : si C[j] alors aller à Ai ;
C[i] :=vrai ; *
Section critique i ;
C[i] :=faux;
Reste du programme i ;
Aller à Ai ;
Fin ;
On a traduit ici le fait qu‟un processus pi ne peut entrer en section critique que si
c[j]:= faux. Considérons toute fois la séquence suivante :
1. pi consulte c[j] et trouve faux ;
2. pj consulte c[i] et trouve faux ;
3. pi fait c[i] :=vrai et entre dans sa section critique ;
4. pj fait c[j] :=vrai et entre dans sa section critique ;
L‟exclusion mutuelle n‟est donc pas garantie, et la solution est inacceptable. On peut
songer à modifier le programme de façon à faire l‟affectation de c[i] avant le test de
c[j], remplaçant les deux instructions suivant Ai par
Ai : c[i] :=vrai ;
© Kasengedia motumbe pierre 62
Page 63 sur 270
Si c[j] alors aller à Ai ;
L‟exclusion mutuelle est cette fois garantie : en effet, si pi trouve c[j]=faux, pj ne se
trouve pas en section critique p j et p j ne peut y entrer puisque c[i]=vrai au moment
du test de c[j].
Mais la condition b) de l‟exclusion mutuelle n‟est maintenant plus vérifiée.
Soit en effet la séquence suivante :
1. pi exécute l‟instruction étiquetée Ai :=c[i] := vrai ;
2. pj exécute l‟instruction étiquetée Aj :=c[j] := vrai ;
3. pj consulte c[i], trouve vrai et n‟exécute Aj ;
4. pi consulte c[j], trouve vrai et n‟exécute Ai ;
Les deux processus sont désormais engagés dans une boucle infinie t donc ne
respectent pas la condition b) de l‟exclusion mutuelle. On pourrait encore songer à
améliorer la dernière solution en remettant temporairement c[i], à faux à l‟intérieure
la boucle d‟attente de pi pour laisser passer pj : Ai : c[i] :=vrai ;
Si c[j] alors C[i] := faux
Aller à Ai
© Kasengedia motumbe pierre 63
Page 64 sur 270
4. trois variables communes
On pose toujours j=3-i
Contexte commun : entier t ;
Booléen tableau c [1 :2] ;
t :=1 ; c[1] :=c[2] := faux ;
Processus pi : Début
Ai : c[i] := vrai ;
li : si c[j] alors
Début
si t=i alors aller à li ;
C[i] := faux ;
Bi : si t=j alors
aller à Ai
Fin
Section critique i ;
t:=j ;c[i] :=faux ;
Reste du programme i
Aller à Ai
Fin ;
Cette solution est due à la Dekker, et a été développé dans le livre de Dijkstra
(cooperating sequential processes, in programming languages. Press 1967).
Elle satisfait aux conditions requises, comme nous allons le voir dans ce qui suit :
© Kasengedia motumbe pierre 64
Page 65 sur 270
- il n‟y a pas conflit d‟accès à la section critique, c'est-à-dire que
l‟un des processus (soit pi) exécute li alors que c[j]=faux ; pi
entre alors en section critique ; comme c[i] a alors la valeur vraie
et la gardera tant que pi sera en section critique, pj ne pourra
entrer en section critique avant que pi en soit sorti.
- L‟exécution des instructions Ai, Li dans le processus pi est
entrelacé avec celle de Aj, Lj dans le processus pj.
On utilise alors le fait que la variable t ne pas modifier par l‟exécution des
instructions Ai, Li. Si t = i alors pj entrera dans la boucle étiqueté Bj après avoir remis
c[j] à faux : cela permet donc l‟entrée en section critique de pj, qui était engagé dans
la boucle Li. A la fin de sa section critique, pi remet à la valeur j, ce qui libère pj, de la
boucle Bj, lui permettant de tenter à nouveau l‟entrée en section critique par Aj. Ainsi,
on pourra éviter l‟attente infinie que l‟entrée simultanée puisque le processus pi et lui
seul entre en section critique en cas de conflit.
En analysant les quatre exemples présentés, nous pouvons dire que le problème de
l‟exclusion mutuelle pourrait être résolu si on disposait d‟une instruction adéquate, le
problème de l‟exclusion mutuelle se résoudrait par :
Exclusion mutuelle (section critique) où section critique désigne une suite
d‟instructions utilisant la ressource critique.
Les propriétés a) , b), c), d) sont supposées vérifiées par l‟instruction appelée ici
exclusion mutuelle. Cette instruction se décompose en trois étapes suivantes :
Exclusion mutuelle (section critique) :
Début
Entrée;
Section critique ;
Sortie
© Kasengedia motumbe pierre 65
Page 66 sur 270
Fin
Pour vaincre les problèmes causés par l‟utilisation de la variable booléenne en vue
de l‟exclusion mutuelle, explorons diverses façons de réaliser les instructions de
l‟exclusion mutuelle.
2.2.2. Attente active
Une solution simple peut être obtenue en utilisant l‟attente active. Pour ce faire, nous
faisons appelle à une instruction spéciale TAS (Test And Set) qui existe sur
certaines machines ; cette instruction agissant sur une variable m, peut se
décrire ainsi :
Instruction TAS (m)
Début
bloquer l’accès à la cellule de mémoire m ;
Lire le contenu de m ;
si m=0 alors
début
m:=1;
section critique sur ressource ;
m:=0;
fin
sinon
Libérer accès cellule mémoire m ;
Fin
En considérant les aspects suivants :
- p : variable à tester
- R : ressources critique
© Kasengedia motumbe pierre 66
Page 67 sur 270
L‟instruction TAS peut être utilisée de la manière
suivante :
Debut
p :=0
E : TAS (p)
Aller à E
Fin
La validité cette solution tient à ce que le teste et la mise à 1 de p ne peuvent être
faits que par une seule instruction TAS (p) à la fois. Le bouclage de l‟accès à la
cellule de mémoire p assure par câblage, l‟exclusion mutuelle à la ressource R
critique.
Dans cette section un processus bloqué sur p boucle sur l‟instruction et monopolise
un processeur, d‟où le nom d‟attente active. Cela est acceptable si l‟exclusion
mutuelle survient rarement et dure peu.
Pourquoi l’instruction TAS change la valeur de la variable booléenne commune,
après qu’elle Bloquée la cellule mémoire ?
* Comment fonctionne A instruction. * considérons
qu‟un processus p lance la suite d‟instruction:
A1 : Tas (m)
Aller à A1
En commençant par exécuter TAS (m)
Q : bloque l‟accès de la cellule m ;
Lit le contenu du m ;
Si m = 0 alors
© Kasengedia motumbe pierre 67
Page 68 sur 270
Début
M := 1
Section critique sur ressource ;
Fin Sinon
Libérer accès cellule m
Fin.
Lorsqu‟il trouve m = 0, (c'est-à-dire) que le processus n‟est pas occupé, pourquoi
après avoir bloqué m doit-il encore faire m = 1 ?
De toute façon, si un autre processus q tentait de lire la valeur de m, il n‟y arriverait
pas, car la cellule m est déjà bloquée par p, ainsi le comportement du processus q
ressemblerait à ce qui suit :
q : Debut
Ne peut bloquer m car cellule m déjà bloquée par p
Passe en attente ;
Bloqué accès cellule m ; le processus p vient de débloque m
Lire contenue m ;
Si m = 0 alors
Début
m:=1;
Section critique ressource ;
Fin
Sinon
Libérer accès m
Fin
En analysant les explications ci-dessous, on peut constater que dans le contexte
d‟un environnement monoprocesseur il n‟est pas important de changer la valeur de
m, lorsqu‟un processeur y accède en vue d‟occuper la ressource critique. Par contre
dans le contexte d‟un environnement multiprocesseur, en attribuant la valeur „1‟,
lorsqu‟un processus qui est exécuté dans un processeur autre que celui dont le
processus occupe la ressource critique, il constatera que m = 1, donc la ressource
© Kasengedia motumbe pierre 68
Page 69 sur 270
critique est occupée. Sur la Fig.2.12a ci-dessous est présenté le cas de l‟utilisation
de TAS, dans un environnement multiprocesseur.
pij : jième processus exécuté par le processeur „ i‟
Fig.2.12a. en exécutant TAS (m), lorsqu‟on accède a la ressource critique en faisant
m = 1, cela empêcherait un processus d‟un autre processeur de tenter l‟accès à la
ressource critique.
Sur notre exemple si p11 occupe la ressource critique, p12 ne pourra jamais accéder
à m, car il le trouvera. Mais, par exemple, p21 pourra accéder à m, par contre il
trouvera m =1, donc la bloqué ressource critique est occupée.
Il convient de signaler que certains microprocesseurs possèdent une instruction de
type Test and Set Lock (TSL) ;il s‟agit de :
TAS pour le Motorola 68000
BTS pour Intel 80386
NB : Intel est le numéro un mondial de la fabrication des microprocesseurs. Les
fameux PC pentium sont équipés de ses microprocesseurs.
© Kasengedia motumbe pierre 69
Page 70 sur 270
Motorola est aussi un des grands dans le domaine de la production de
microprocesseurs. Ses microprocesseurs sont souvent utilisés dans les
implémentations de systèmes industriels.
2.2.3. Attente active par masquage des interruptions
Un autre moyen simple de réaliser l‟attente active est que chaque processus
masque les interruptions avant d‟entrer dans une section critique et le restaure à la
fin de la section critique. L‟interruption horloge ne peut avoir lieu lorsque les
interruptions sont masquées. Le processeur ne pourra donc plus être alloué à un
autre processus, puisque ce sont les interruptions qui provoquent le changement
d‟allocation.
Dès qu‟un processus a masqué les interruptions, il peut accéder à la ressource
critique car il est sûr qu‟aucun autre pro
cessus ne pourra l‟interrompre.
Cette approche a un inconvénient majeur car elle permet aux processus utilisateurs
de masquer les interruptions. Supposer qu‟un de ces processus oublie de les
restaurer. Ce serait la fin du système.
De plus, si le système possède plus d‟un processeur, le masquage des interruptions
n‟aura lieu que sur le processus pour lequel le masquage a été défini.
2.2.4. Les verrous
Appelons verrou la variable p (qui a été utilisé dans l‟attente active), et nous y
associons une file d‟attente f (p). Si un processus ne peut entrer en section critique,
dans la file d‟attente ; lorsqu‟un processus sort de la section critique, un des
processus de la file d‟attente est activé (élu), si bien sur la file d‟attente n‟est pas
vide. La valeur initiale de p est 0.
Nous pouvons alors définir les opérations suivantes :
Verrouiller (p) :
Si p=0 alors p :=1
© Kasengedia motumbe pierre 70
Page 71 sur 270
Sinon
Mettre le processus dans la file
f(p); (Il passera à état
prêt, non élu)
Déverrouiller (p) :
Si f (p) n’est pas vide
Alors
Sortir un processus de f (p) (Ce qui le rend actif, élu)
Sinon
P :=0 ;
Le verrou p et sa file f (p) sont évidemment des ressources critiques qu‟il faut
protéger. Il est plus commode de considérer les deux procédures comme une seule
ressource critique ; ce sont des procédures du système, car elle manipule des files
de processus ; nous les appellerons primitives parce qu‟au niveau des processus
appelants elle se comporte comme des instructions. Comme toute instruction, une
primitive est indivisible pour l‟observateur. Elle est perçue comme une entité
atomique.
Comment résoudre l‟exclusion mutuelle pour l‟exécution des primitives ?
Les solutions sont différentes, selon que le système possède un seul ou plusieurs
processeurs :
- dans un système monoprocesseur, il suffit de rendre les
procédures ininterruption ; on utilise le processeur comme
ressource critique ;
- dans un système multiprocesseur, cette condition ne suffit pas
car elle n‟empêche pas deux processus de consulter et de
modifier simultanément p et f (p) ; on introduit donc une variable
© Kasengedia motumbe pierre 71
Page 72 sur 270
d‟exclusion mutuelle dans les procédures, variable qui sera
consulté par l‟instruction de type TAS (Test And Set)
2.2.5. Les sémaphores
Les sémaphores sont la généralisation de concepts de verrouiller et de déverrouiller
pour lesquels la variable p peut prendre des valeurs entières quelconques.
Les concepts du sémaphore ont été introduits pour la première fois en 1965 par
Dijkestra.
2.2.5.1. Définition de sémaphores
Un sémaphore S est constitué d‟une variable entière e(s) et d‟une file d‟attente
f(s) .La variable e(s) peut prendre des valeurs entières positives, négatives ou nulles ;
cette variable sera appelée valeur du sémaphore .La politique de la gestion de la file
d‟attente est laissée en guise du concepteur du système.
Un sémaphore s‟est créé par une déclaration qui doit spécifier la valeur initiale eo(s)
de e(s). Cette valeur initiale est nécessairement un entier non négatif. A la création
d‟un sémaphore, sa file d‟attente est toujours initialement vide.
Toute opération sur un sémaphore, est une opération indivisible, atomique. On peut
agir sur un sémaphore s, seulement par les primitives suivantes :
P(s) et V(s)
Cette terminologie provient de la langue nationale de Dijkstra, le néerlandais :
P : Phoberen, qui veut dire « tester»
V : Verhogen, qui veut dire « incrémenter».
Les opérations sémaphore sont parfois également connues sous le
nom de : Up (haut) ;
Down (bas) ;
© Kasengedia motumbe pierre 72
Page 73 sur 270
Où
Wait( ) ;
Signal( ).
Il existe deux approches pour définir le
sémaphore :
- - approche généralisante ;
- approche moins généralisante.
Approche généralisante
Le sémaphore peut prendre les valeurs entières positives, négatives ou nulles, ainsi
les primitives seront :
P(s) : début
si e(s) < 0 alors e(s):= e(s) – 1 sinon
debut
Commentaire : on suppose que cette primitive est exécutée
Par le processeur r ;
État(r) :=bloqué ;
Mettre le processus r dans la file f(s)
fin
V(s) : début
si f(s)=vide alors
e(s)=e(s)+1 sinon
Début
Sortir un processus de la file f(s) ;
Commentaire : soit q le processus de la file f(s) ;
État (q) : actif ;
Fin
© Kasengedia motumbe pierre 73
Page 74 sur 270
Fin
2.2.5.2. Propriétés de sémaphores
La définition des primitives P, et V a les conséquences suivantes :
1) la variable e(s) du sémaphore ne peut être initialisée à une valeur négative, mais
il peut devenir négatif après un certain nombre d‟opération P(s)
2) Soit np(s) le nombre d‟instructions P exécutées sur le sémaphore s, nv(s) le
nombre d‟instructions V exécutées sur le sémaphore s eo(s) la valeur initiale
du sémaphores
Il résulte de la définition de P et V que e(s)=eo(s)-np(s)+nv(s)
3) soit nf(s) le nombre de processus qui ont franchis la primitive P(s), c'est-à-dire qui,
ou bien n‟ont pas été bloqués par celle-ci, ou bien ont été bloqué, mais
débloqués depuis ; à tout instant on a nf(s) ≤ np(s)
Il a été démontré [CROCUS] que l‟exécution des primitives P et V laisse invariante
la relation : nf(s) = min (np(s), eo(s) + nv(s))
4) si e(s) est négative, sa valeur absolue égale le nombre de processus bloqués
dans la file d‟attente f(s) e(s) =eo(s)-np(s)+nv(s) e(s) < 0 ona
eo(s)+nv(s) < np(s)
En nous basant sur la propriété 3
nf(s) = eo(s) + nv(s)
e(s) = -np(s) + nf(s)
-e(s) = np(s)-nf(s)
© Kasengedia motumbe pierre 74
Page 75 sur 270
5) Si e(s) est positive ou nulle, sa valeur donne le nombre de processus pouvant
franchir le sémaphore s sans se bloquer.
Ainsi, en initialisant la valeur initiale du sémaphore à n,P et V peuvent être utilisés
jusqu‟à autoriser n processus dans leurs sections critiques.
2.2.5.3. Sémaphore binaire
Un sémaphore binaire est un sémaphore dont e(s) ne peut prendre que les valeurs
1 ou 0. Les primitives P(s), V(s) exécutées sur le sémaphore binaire, peuvent être
décrites de la manière suivante :
P(s): debut
si e(s)=1
alors
e(s):=e(s)-1
Autrement
début
État (p)= bloqué ;
Mettre le processus p dans la file f(s)
fin
fin
V(s) : début
Si file f(s)
vide
alors
e(s):=1
Autrement
début
Sortir un processus de la file f(s) ;
état(q) := actif ;
fin
© Kasengedia motumbe pierre 75
Page 76 sur 270
fin
2.2.5.4. Sémaphores d’exclusion mutuelle
L‟exclusion mutuelle est résolue de la manière suivante : résout comme suit :
On introduit un sémaphore mutex initialisé à 1 et chaque processus s‟exécute selon
le programme
début
P (mutex) ;
Section critique ;
V (mutex) ;
Suite d’instructions ;
Fin
2.3. RESEAU DE PETRI (MODELISATION DES PROCESSUS CONCURRENTS)
2.3.1. Introduction
Les réseaux de PETRI ont été introduits au début des années 1960 par C.A. PETRI,
puis développés au MIT (Massachusetts Institute of Technology) autour de 1972. Ils
permettent en particulier de :
- modéliser les processus concurrents, parallèles ;
- modéliser les protocoles de communication ;
- analyser et concevoir le système d‟information (Ainsi, ils sont utilisés dans la
méthode MERISE)
2.3.2. Discussion informelle
Un réseau de PETRI est composé de types d‟éléments suivants :
© Kasengedia motumbe pierre 76
Page 77 sur 270
- des places (liées à des conditions) ;
- des transitions (liées à des évènements) ; - des arcs orientés reliant places
et transitions ; - des jetons.
Les places situées en amont d‟une transition sont appelées places d‟entrée de cette
transition (input places). Celles en aval d‟une transition portent le nom de places de
sortie de cette transition. Une place peut posséder 0,1 ou plusieurs jetons. La
présence d‟un jeton (token) dans une place indique que la condition associée à la
place est remplie. Une transition est régie par l‟ensemble des règles suivantes :
- une transition est franchissable (enabled ou firable) si chacune de ses places
d‟entrées contient au moins un jeton ;
- le franchissement d‟une transition consiste à prélever un jeton dans chaque
place d‟entrée et d‟en déposer un dans chaque place de sortie ;
- une transition peut ne pas être franchie immédiatement après la réalisation de
ses conditions de franchissement ; - le franchissement d‟une transition,
lorsqu‟il se produit ne prend aucun temps. Au lieu du franchissement d‟une
transition on parle parfois du tir d‟une transition (firing).
Dans la description de processus concurrents et protocoles de communication, il est
impératif d‟utiliser une description formelle, car elle élimine les ambiguïtés inhérentes
au langage naturel de l‟être humain. Une autre technique de description formelle
utilisée dans la modélisation de processus concurrents et protocoles de
communication sont :
- la machine d‟états finis ; pourrait utiliser plusieurs types de représentation :
le diagramme d‟états (state transition diagram) ;
• l‟algèbre vectorielle
• les tables de décision
© Kasengedia motumbe pierre 77
Page 78 sur 270
Il y a lieu de citer comme techniques utilisées dans la modélisation de processus,
protocoles :
- le langage Estelle, qui est fondée sur le concept de machine d‟états finis
étendue ; - le langage LOTOS, développé par le sous-groupe C de ISO
(ISO/SC21/WG16-
1/FDT), entre 1981-1984 et s‟appuie sur l‟ordonnancement temporel.
Sur les Fig. 2.13.(a). et Fig. 2.13.(b). ci-dessous est représenté le comportement
d‟une condition du réseau de PETRI avant franchissement respectivement après
franchissement.
Places d‟entrée Places de sortie
Jeton
Transition
Fig. 2.13.(a). Condition avant franchissement
© Kasengedia motumbe pierre 78
Page 79 sur 270
Fig. 2.13.(b). Condition RdP avant franchissement
Prenons d‟une manière informelle un exemple qui n‟a rien à avoir avec la gestion de
processus :
On définit les conditions pour devenir CP, L1 – Informatique :
- être de sexe féminin (C1) ; - avoir payé les frais d‟études (C2) ; - être
élu avec plus de 50% de voix (C3).
Modélisons la situation pour que Mlle Bolingo Mira puisse devenir CP
C1 Elu
C2 Fig. 2.14. (c).Après élection
(Mira élue, après
C3 franchissement)
Fig. 2.14. (a). Avant élection
Election -OK
© Kasengedia motumbe pierre 79
Page 80 sur 270
Fig. 2.14. (b).Après élection (Mira
élue, avant franchissement)
Fig. 2.14. (d).
Après élection
(Mira, non élue)
Fig. 2.14. (a)., Fig. 2.14. (b). , Fig. 2.14. (c). modélise l‟évolution de Mira. , Fig. 2.14. (d) :
modélisent la situation de l‟échec de Mira a l‟élection.
Si on analyse, les choses avec la minutie d‟un clinicien, force est de constater que
les places permettent de représenter les états du système ; l „ensemble des
transitions représente alors l‟ensemble des évènements dont l‟occurrence provoque
la modification de l‟état du système. La Fig.36. Ci-dessous représente « attribution
d‟une ressource ». Les deux places d‟entrée correspondent aux préconditions «
ressource libre » et « demande d‟attribution ». La présence d‟un jeton indique que la
ressource a été attribuée.
Ressource libre Demande d‟attribution
Attribution d‟une ressource
Ressource attribuée
Fig.2.15. Attribution d‟une ressource
© Kasengedia motumbe pierre 80
Page 81 sur 270
2.3.3. Définition formelle
D‟une manière formelle, le réseau de PETRI peut être défini comme un quadruplet
(P,T,I,O), avec,
P= p1, p2, …, pk l‟ensemble des places (conditions) ;
T = t1, t2, …, tn l‟ensemble des transitions
(évents) ; I = la fonction d‟entrée telle que I(ti) =
pi, pk, …
O = la fonction de sortie telle que O(tj) = p1, pm, …
Les fonctions I et O définissent la topologie du réseau de PETRI. La fonction I permet
la vérification des conditions de franchissement c‟est-à-dire la présence de jetons
dans les places d‟entrée de la transition considérée. Les fonctions I et O permettent
de calculer la situation des jetons après le franchissement d‟une transition.
L‟un des intérêts des réseaux de PETRI réside dans la possibilité de représenter le
non déterminisme. Sur la Fig.37. Ci-dessous, est représenté un non déterminisme
pur, les transitions t1 et t2 peuvent toutes deux être franchies, mais si une l‟est,
l‟autre ne peut plus l‟être.
a b c
t2 t1
d e
© Kasengedia motumbe pierre 81
Page 82 sur 270
Fig.2.16. Réseau de PETRI modélisant le non déterminisme.
2.4. MECANISME DE SYNCHRONISATION
2.4. 1. Introduction
Les divers processus d‟un système n‟évoluent généralement pas indépendamment :
il existe entre eux des relations qui dépendent de la logique de la tâche à accomplir
et qui fixent leur déroulement dans le temps. L’ensemble de ces relations est la
synchronisation, bien qu‟elles ne fassent pas intervenir le temps comme mesure de
durée, mais seulement comme moyen d‟introduire une relation d‟ordre entre des
instructions exécutées par les processus. Le problème de la synchronisation consiste
donc à construire un mécanisme indépendant des vitesses permettant à un
processus actif (soit p) :
- d‟en bloquer un autre ou de se bloquer lui-même en attendant un signal d‟un
autre processus ; - d‟activer un autre processus en lui transmettant éventuellement
de l‟information. Remarquons que, dans ce dernier cas, le processus q auquel est
destiné le signal d‟activation peut déjà se trouver à l‟état actif ; il faut donc définir de
façon plus précise l‟effet de l‟opération d‟activation lorsqu‟on se trouve dans cette
circonstance. Deux possibilités se présentent :
a) Le signal d‟activation n‟est pas mémorisé, et par conséquent il est perdu si le
processus q ne l‟attend pas.
b) Le signal est mémorisé et le processus q ne se bloquera pas lors de la prochaine
opération de blocage concernant ce processus.
Deux techniques sont concevables pour réaliser des opérations de synchronisation,
appelées primitives :
a) Action directe : un processus agit directement sur un autre processus.
b) Action indirecte : un processus actionne sur un mécanisme qui agit sur d‟autres
processus.
Autrement dit, dans le cas de l‟action directe, l‟identité du processus doit être un
paramètre d‟activation (ou de blocage) alors que dans le second cas, le nom et
l‟identité des processus visés peuvent ne pas être utilisés par le processus agissant :
© Kasengedia motumbe pierre 82
Page 83 sur 270
2.4. 2. Mécanisme d’action directe
Les processus qui évoluent dans un système ne se comportent pas généralement
tous convenablement, à telle enseigne que certain processus peuvent par exemple
boucler indéfiniment : il est alors indispensable de pouvoir les suspendre en les
faisant passer à l‟état bloqué.
Dans ce cas, l‟identité du processus que l‟on désire suspendre doit être un paramètre de
la primitive de blocage.
L‟instant où intervient cette action dans le cycle du processus à suspendre n’est pas
toujours indifférent. En effet, pour assurer l‟homogénéité des variables, certaines
opérations exécutées par le processus à suspendre doivent être rendues
logiquement interruptibles, par exemple lorsqu‟il accède à sa section critique.
Le mécanisme de synchronisation par action directe, peut être réalisé par des
primitives : - Bloquer ()
- éveiller () en outre à chaque processus q est associé un indicateur booléen noté
état(q) qui indique l‟état actif ou bloqué du processus q.
la primitive bloquer (q) force le passage du processus q à l‟état bloqué ; l‟évolution du
processus reprendra, lorsque son état aura repris la valeur « actif » la primitive éveiller (q)
a pour effet de rendre actif le processus q, s‟il était bloqué, si la primitive éveiller (q) est
exécutée par un processus p alors que q est encore actif, le signal d‟activation émis à
l‟intention du processus q, alors que celui-ci se trouve à l‟état actif, on doit associer à
chaque processus un indicateur booléen supplémentaire noté témoin (témoin d‟éveil). Son
effet sera de maintenir à l‟état actif le processus q, lors de la prochaine primitive bloqué (q).
Dans ces conditions, bloquer (q) provoquera le passage à l‟état bloqué du processus q ssi
le témoin (q) = faux.
Par contre, si témoin (q) = vrai, il est remis à faux, l‟effet de la primitive s‟arrête là.
L‟algorithme de cette opération s‟exprime de la manière suivante :
Bloquer (q) : si témoin (q) = faux alors
État (q) = bloqué
© Kasengedia motumbe pierre 83
Page 84 sur 270
Sinon
Témoin (q) := faux La primitive éveiller (q) active le
processus q, s‟il est bloqué. Par contre si le processus est encore actif lorsque la
primitive est exécutée, témoin (q) est mis à vrai et l‟activation est ainsi mémorisée.
L‟algorithme est le suivant :
Éveiller (q) : si état (q) = bloqué alors
État (q) : = actif
Sinon témoin (q) : = vrai Le témoin d‟éveil d‟un processus peut
mémoriser une et une seule activation éventuelle : c‟est là une limitation de ce
mécanisme.
2.4. 3. Mécanisme d’action indirecte
Dans un mécanisme d‟action indirecte la synchronisation met en jeu non plus le nom
du processus mais un ou plusieurs objets intermédiaires connus des processus
coopérants, et manipulables par eux uniquement à travers des opérations indivisibles
spécifiques. Selon la nature des opérations qui permettent de les manipuler, ces
objets portent les noms :
- d‟évènements ;
- de
sémaphores.
2.4. 3.1. Synchronisation par évènements
Un événement ne peut être manipulé que par certaines opérations particulières : un
événement peut être attendu par le (les) processus qui y ont accès, ou bien il peut
être déclenché. En outre, un événement peut être mémorisé ou non mémorisé.
© Kasengedia motumbe pierre 84
Page 85 sur 270
a) Evènement mémorisé
Un événement mémorisé est représenté par une variable booléenne ; à un instant
donné la valeur 1 ou 0, de cette variable traduit le fait que l‟événement est ou n‟est
pas arrivé. Un processus se bloque si et seulement si l‟événement qu‟il attend n‟est
pas arrivé ; selon le système, le déclenchement d‟un événement débloque un
processus ou tous les processus qui l‟attendent. Par exemple, en PL/1, il est
possible, en utilisant l‟option task, d‟initialiser des processus parallèles. Un
événement est représenté par un symbole déclaré explicitement par l‟attribut event
ou implicitement lors de la création d‟un processus (option task).
L‟affectation d‟une valeur booléenne à un événement se fait au moyen d‟un pseudo
variable de type complétion :
Completion (evt) = ‘0’B ; indique que l‟événement noté « evt » n‟est pas arrivé, ce qui
équivaut à une « remise à zéro » de l‟événement. Completion (evt) = ‘1’B ;
déclenche l‟événement noté « evt ».
Un processus qui exécute l‟instruction wait (evt) se bloque si et seulement si
l‟événement n‟est pas arrivé, autrement dit si complétion (evt) = ‘0’B b) Evènement
non mémorisé
Lorsqu‟il n‟y a pas mémorisation, un événement émis alors qu‟aucun processus ne
l‟attend est perdu. Par contre, si un ou plusieurs processus sont bloqués dans l‟attente de
cet événement au moment où il se produit, ces processus deviendront actifs.
La notion d‟événement non mémorisé est très délicate à manipuler, car elle met en jeu la
vitesse des processus.
On retrouve souvent l‟événement non mémorisé dans les langages spécialement
conçus pour la commande de processus industriels.
c) Extension de la notion d’événement
© Kasengedia motumbe pierre 85
Page 86 sur 270
On peut très bien imaginer le fait que l‟activation d‟un processus soit associée à des
entités plus complexes qu‟un simple événement, par exemple l‟occurrence conjointe
de deux évènements ou à l‟occurrence de l‟un ou l‟autre de deux évènements et
plus généralement à une expression booléenne d‟évènements.
Cette idée est illustrée dans le programme PL1 ci-dessous :
p1: procedure:
Call p2 event (e2) ;
Call p3 event (e3) ;
Wait (e2, e3) (i);
...;
end
pl.
Dans ce programme, deux tâches parallèles sont initialisées au moyen d‟instruction
call, avant d‟exécuter une instruction wait l‟événement e2 déclaré explicitement par
l‟attribut évent à la création de la tâche p2, sera déclenché par la fin de l‟exécution
de cette tâche ; il en est de même de e3. Il en résulte que :
Si i = 2 la tâche pl reste bloquée sur l‟instruction wait jusqu'à l‟arrivée des deux
événements e2 et e3.
Si i = 1 l‟arrivée d‟un seul de deux événements suffit à débloquer la
tâche pl. Si i ≤ 0 l‟instruction wait est sans effet et la tâche pl ne se
bloque pas.
2.4. 3. 2. Synchronisation par sémaphores
Nous avons déjà rencontré le mécanisme des sémaphores pour résoudre le
problème d‟exclusion d‟accès à une ressource critique. On peut utiliser le
sémaphore pour résoudre des problèmes généraux de synchronisation : un signal
d‟activation est envoyé par une primitive V(s) ; il est attendu par une primitive P(s).
Ainsi, un processus dont l‟évolution est subordonné à l‟émission d‟un signal par un autre
processus bloqué, au moyen d‟une primitive p, derrière son sémaphore initialisé à zéro, le
© Kasengedia motumbe pierre 86
Page 87 sur 270
signal de réveil de ce processus bloqué est obtenu en faisant exécuter par un autre
processus une opération V sur le même sémaphore.
Exemple : L‟activation d‟un processus p dont l‟évolution est subordonnée a
l‟émission d‟un signal par un processus q se programme comme suit en introduisant
le sémaphore signal initialisé à 0.
Deux cas peuvent être envisagés :
- le processus p est déjà bloqué sur la primitive P(signal) lorsque le processus q
exécute la primitive V(signal), alors le processus p va se réveiller.
- le processus p est actif lorsque le signal est émis (il exécute par exemple
l‟instruction Ai) et tout se passe comme si le signal était mémorisé ; en effet la
valeur du sémaphore signal est passé à 1 et lorsque le processus p exécutera
la primitive p, il ne se bloquera pas
2.4. 3. 3. Modélisation de synchronisation et de la communication entre processus par
réseau de Pétri
Nous allons voir en utilisant un outil de modélisation puissant comment on peut modéliser
la synchronisation et la communication entre deux processus. Soient deux processus : A et
B.
1. A prépare les données ;
2. A transmet a B le message « request-to-send »;
3. A attend de B le message “ready-to-receive”;
4. A Envoi de données;
5. A signal a B par “data-sent”, la fin de l‟envoi;
6. A attend de B le message « data-consumed ».
Sur la Fig38a est illustre les processus A et B qui communiquent selon la description
cidessus et sur Fig38b est présenté la modélisation de leur synchronisation et
communication en utilisant le réseau de PETRI.
© Kasengedia motumbe pierre 87
Page 88 sur 270
La Fig.2.17a. Processus A et B en synchronisation et
communication r_t_s : request_to_send r_t_r:
ready_to_receive d_s: data send d_c: data consumed
La Fig38b. fait apparaître les modèles des deux parties, source et destination avec
transition 1 et 12 comme interface de la source avec le reste du processus A et les
transitions 17 et 18 a l‟interface entre la destination et le reste du processus B, lui-
même modélise en grise de la manière la plus simple possible qui marque cependant
les caractère «esclave de ce processus. On notera l‟interface entre la source et la
destination est représentée par les transitions 4, 5, 9 et 10 et ce pour le deux parties
du modèle. A chacune de ces transitions est associé le passage d‟un message. Le
fait de choisir la même transition entre la source et la destination indique qu‟à ce
stade nous considérons que le milieu de transition se comporte de manière idéale
c'est-à-dire sans perte et sans délai.
© Kasengedia motumbe pierre 88
Page 89 sur 270
© Kasengedia motumbe pierre 89
Page 90 sur 270
Fig.2.
17b. Réseau de PETRI modélisant la synchronisation et communication entre processus
(source) et processus destination.
© Kasengedia motumbe pierre 90
Page 91 sur 270
Voyons maintenant le modèle de la source. On note tout d‟abord qu‟au départ on a place
un jeton en a pour marquer l‟état opérationnel de la source.
La présence de ce jeton permet, si un jeton apparaît en b, de franchir la transition 2
qui modélise la prise en charge des données pour en préparer la transmission et
permettre le franchissement de la transition 3 dont le résultat est de placer un jeton
en d et en e. Le jeton en d indique que l‟on est prêt à envoyer le request-to-send.
Lorsque le jeton arrive à f, suite à la réception du ready-to-receive, le franchissement
de la transition 6 est possible et le jeton passe en g ce qui indique que la source est
prête à envoyer les données. On notera le franchissement de la transition 7 conduit à
placer un jeton dans la placée d‟entrée grisée de la transition 16. En réalité dans la
modélisation du protocole on aurait pu ne pas faire apparaître la partie en grisée et
se limiter aux
Interactions entre source et destination via les quatre messages. Il importe de rappeler que
tout modèle est une abstraction de la réalité et en reflète que les aspects considères
comme les plus fondamentaux.
Les jeton h marque la fin de la transmission des données et le franchissement de la
transition place un jeton en j et un jeton en I indiquant que l‟on est prêt à envoyer
data-sent. L‟arrivée de data-consumed représente par un jeton en k permet le
franchissement de la transition 11 qui remet un jeton en a ainsi qu‟un jeton en 1 ce
qui permet le franchissement de la transition
12 d‟informer le processus A de l‟exécution de la transition.
Certaines opérations évoquees dans la modélisation peuvent requérir un certain
temps d‟exécution mais un modèle étant une abstraction de la réalité ne doit pas
nécessairement être à même dans d‟en représenter tous les aspects.
En particulier les réseaux de pétri que nous venons de voir ne permettent pas la
modélisation du temps. Ils permettent par contre la modélisation des événements et
© Kasengedia motumbe pierre 91
Page 92 sur 270
des états. Un jeton en a indiqué la source est prête à prendre en charge une
demande d‟envoi des données provenant du processus A. La transition 2 marque la
prise en charge de la demande, les jetons en c indique que la source à préparer les
données, un jeton en d
Indique que le message request-to-sent est prêt à être envoie tandis que le jeton en
e indique que la source est en attente de la réponse de la destination c‟est à dire
l‟arrivée de ready-toreceive via le jeton en f.
On pourrait aussi analyser de manière détaillée le modèle du processus destination
de la Fig. 2.5. Nous laisserons ce travail à titre d‟exercice en mentionnant toute fois
le jeton initiale en m qui indique la destination et en attente d‟un message venant de
la source, la transition 13 qui indique la prise en charge du request-to-send, la
transition 14 relative à la préparation des ressources nécessaire pour recevoir des
données. Des autres places et transitions sont relatives à des mécanismes déjà
évoques.
Si l‟on désire abstraire le modèle du tout détail non directement en rapport avec le
protocole de communication, il est possible de simplifier la Fig. 2.5 en éliminant tout
ce qui modélise des états et événement strictement interne aux processus source et
destination et en ne conservant que ceux lies aux interactions entre source et
destination ainsi qu‟avec les parties externes de processus A et B.
2.4.3.4. Programmation de la synchronisation et communication entre processus (source)
et processus destination.
La communication et synchronisation entre les processus Source et destination
présentées dans la section précédente peuvent être programmées, en utilisant les
sémaphores, en langage Pascal concurrent, comme dans le programme ci-dessous.
P(s): debut
si e(s)=1
alors
© Kasengedia motumbe pierre 92
Page 93 sur 270
e(s):=e(s)-1
Autrement
début
État (p)= bloqué
Mettre le processus p dans la file f(s)
fin
fin
V(s) : début
si file f(s)
vide alors
e(s):=1
Autrement
début
Sortir un processus de la file f(s)
état(q) := actif
fin
fin
© Kasengedia motumbe pierre 93
Page 94 sur 270
Begin request-to-send :=0 ;
Ready-to-receive :=0 ;
Data-sent :=0 ;
Data-consumed :=0 ;
Cobegin
Processus 1
L1 : get-data-ready ;
V(request-to-ready) ;
P(ready-to-receive) ;
Send -data ;
V(data-send) ;
P(data-consumed) ;
Go-to-L1 ;
Processus 2
L2 : P(request-to-send ;
Get-ready ;
V(ready-to-receive) ;
P(data-send) ;
Consume-data ;
V(data-consumed) ;
P(data-consumed) ;
Go-to-L2 ;
Coend
end
© Kasengedia motumbe pierre 94
Page 95 sur 270
2.4. COMMUNICATION ENTRE PROCESSUS
2.4.1 Introduction
La coopération des plusieurs processus a l‟exécution d‟une tache commune
nécessite une communication d‟information entre ces processus. Les primitives de
synchronisation étudiées précédemment réalise un mode de communication ou
l‟information transmise est réduite a la forme élémentaire d‟une autorisation ou d‟une
interdiction de continuer l‟exécution au de la d‟un certain point prédétermine. Le
message se réduit donc dans ce cas a un potentiel d‟activation. Ce mode de
communication ne communication ne suffit pas a tous le besoins. Ainsi lorsque les
actions exécutées par un processus après son activation dépendent de l‟identité du
processeur activateur, cette identité doit pouvoir être transmise au processus actif.
Donc la communication entre processus est le fait que les processus peuvent se
communiquer des messages, d‟information, au de la d‟une simple activation. Les
messages qu‟ils se communiquent contribuent à la réalisation de certaines tâches
auxquelles les processus sont impliqués. Les fichiers par exemples constituent le
mécanisme le plus fréquemment utilise pour le partage d‟information. Les
informations écrites dans un fichier par un processus peuvent être lues par un autre
processus. Le volume d‟information pouvant être partage et uniquement limite par la
capacité de taille de fichier du système.
Sous le système prenant en charge les threads (sous-taches s‟exécutant d‟une
manière parallèle), la mémoire fait partie intégrante du concept de threads. Dans
certain système d‟exploitation le disque virtuel est utilisé comme mécanisme
© Kasengedia motumbe pierre 95
Page 96 sur 270
d‟échange entre processus. Le système de fichier permet la création de ce disque
virtuel qui est en réalité une zone de l‟espace de mémoire interne. Donc les fichiers
stocké sur le disque virtuel sont en réalité enregistre en mémoire. Les primitives de
signalisations dans certains systèmes d‟exploitations peuvent être utilisés pour
l‟envoie des messages :
send-signal (pid, signal-id) : envoi un numéro de signal, signal-ID au processus avec le
numéro d‟identification pid.
React-signal (function, signal Id) : configure le processus pour qu‟à la réception d‟un
numéro de signal Id, celui réponde en passant en fonction « function ».
En associant une signification a différent numéros de signaux, les processus peuvent se
communiques des informations entres eux. Nombreux des systèmes d‟exploitation
prennent en charge un système de messagerie applicative pour l‟envoi des messages
entre processus. Voici certains facteurs qui entre en compte lors de la conception d‟un tel
système :
• A quel genre d‟objet est envoyé le message ?
• Il peut s‟agir d‟un processus, d‟une boite aux lettres, d‟un tampon de
communication ; l‟objet peut être identifié par un nom ou un numéro d‟identification.
• Comment les processus sont-ils associés aux objets du message ?
• Le système d‟exploitation peut exiger par exemple que toute communication soit
précédée d‟une primitive qui établit une connexion avec l‟objet de destination. Tout
processus peut être autorise à communiquer avec l‟objet destination, mais il est
possible de mettre en place certaines restrictions si l‟objet de destination est une
boite aux lettres ou tampon de communication, en ce moment-là, il n‟est pas
nécessaire d‟établir une quelconque connexion
© Kasengedia motumbe pierre 96
Page 97 sur 270
• Combien des processus peuvent partager un même objet de messagerie ?
Le nombre de processus en mesure en mesure de lire et d‟écrire dans l‟objet
du message peut faire l‟objet de diverses restrictions. Ainsi, un certain
nombre de processus peuvent être autorisés à écrire dans l‟objet, avec un
seul pouvant lire les messages depuis l‟objet.
• L‟objet de messagerie est-il bidirectionnel ou unidirectionnel ?
Un processus peut être limite à un accès en lecture ou à un accès en écriture,
mais pas aux deux. L‟accès bidirectionnel peut être autorise, permettant aux
processus de lire et d‟écrire à la fois dans un objet.
• A combien des objets de messagerie un processus peut-il accéder ?
Le système d‟exploitation peut imposer des limites a l‟échelle du système ou
restreindre le nombre d‟objet pouvant être utilise entre les deux processus.
Les messages sont-ils de tailles fixe ou variable ?
Les messages peuvent être de taille fixe, mais s‟ils sont d‟une taille variable, le
système d‟exploitation peut imposer une taille maximale.
• Combien des messages peuvent être stocké dans un objet de messages ?
La mise en mémoire tampon peut être :
Inexistante ;
Bornée ;
Non borne ;
Baser sur un mécanisme d‟accuser réception
Mise en tampon inexistant :
Dans ce cas l‟opération d‟envoie bloque le processus d‟envoie jusqu'à la
Consommation du message car le récepteur. Ce type d‟opération est appelé
Rendez-vous.
Mise en tampon borné :
Elle bloque l‟opération d‟envoie si la mémoire tampon est plein.
© Kasengedia motumbe pierre 97
Page 98 sur 270
Mise en tampon non bornée :
L‟émetteur n‟est jamais bloqué lorsqu‟il essaie d‟envoyer un message.
Mise en tampon borné sur mécanisme d’accuser réception :
Bloquer l‟expéditeur jusqu'à ce que le récepteur renvoie un type spécial d‟accuser
réception.
• Les messages sont-ils envoyés par valeur ou par référence ?
Le message envoyé par référence nécessite moins des surcharges, mais ils
peuvent être modifie après leurs envoies, et il enfreint le principe selon lequel
chaque processus doit recevoir un processus d‟adressage indépendant.
• Que se passe-t-il si un processus se termine alors qu‟un autre processus est
bloqué dans l‟attente d‟une action du processus qui vient de s‟adresser ?
Généralement la primitive à l‟origine du blocage renvoie un statut d‟erreur en
indiquant un échec ou bien le processus bloqué se termine également.
2.4.2. Quelques types de communication entre processus par variable commune
2.4.2.1. Communication entre processus par variables communes
Les problèmes les plus généraux de communication entre processus peuvent être
résolus en rendant un ensemble des variables communes accessible à tous les
processus. Toutefois l‟accès simultané de plusieurs processus a des telles variables
pose des problèmes de cohérence soulevée à propos de l‟exclusion mutuelle. Les
processus doivent donc s‟imposer une règle du jeu plus ou moins élaboré suivant la
nature de la communication. Cette règle simple consisterait à inclure tout accès à
des données, a une section critique ; toutefois, des considérations d‟efficacité amène
à réaliser des sections critiques brèves que possible, et en particulier à éviter les
blocages des processus à l‟intérieur d‟une telle section. On peut faire deux
remarques sur ce modèle de communication générale par accès a des variables
communes :
© Kasengedia motumbe pierre 98
Page 99 sur 270
Les règles de communication que doivent observes les processus ne
peuvent leur imposées car on a aucune garantie contre le non-respect de
ces règles par un processus défectueux ;
La communication par consultation et modification des variables
communes se prêtent assez mal à une interprétation du type „envoie des
messages‟ un tel mode d‟interaction entre processus p et q, serai par
exemple :
p envoie un message a q (c'est-à-dire fournir de l‟information et
prévient qui que cette information est disponible) puis peut attendre
ou n‟est pas attendre un accuse de réception de q pour continuer ;
q, qui attendait un message, reçoit le message p et signal, ou ne
signale pas sa réception a p. l‟arrivée d‟un message impliquant
l‟arrivée d‟un message le réveil du destinateur en attente, ou voit
qu‟un dispositif de synchronisation doit être incorpore dans le
protocole de communication. dans la catégorie de la communication
entre processus par variable commune seront abordés :
- le modèle du producteur et du
consommateur ; - la communication par
boite aux lettres.
2.4.2.2. Le modèle du producteur et du consommateur
Le schéma connus sous le nom de « modèle du producteur et du consommateur » permet
de présenter les principaux problèmes de la communication entre processus en utilisant
des variables communes avec synchronisation. On considère deux
processus…….producteur et consommateur, qui se communiquent de l‟information a
travers une zone de mémoire, dans les conditions suivantes :
© Kasengedia motumbe pierre 99
Page 100 sur 270
-l‟information est constituée par des messages de taille constante ;
-aucune hypothèse n‟est faite sur la vitesse relative de deux
processus.
La zone de mémoire commune, ou tampon, a une capacité fixe de n message
(n>0).l‟activité de deux processus se déroule schématiquement suivant le cycle ci-
après :
PRODUCTEUR CONSOMMATEUR
PROD : produire un message ; CONS : prélever un message
Déposer un message dans le tampon ;
Dans le tampon ; consommer le
message ; aller à PROD ; aller a
CONS ;
On souhaite que la communication se déroule suivant la règle ci-après :
-exclusion mutuelle au niveau du message. Le consommateur ne peut prélever un
message que le producteur et entrain de ranger ;
-le producteur ne peut placer un message dans le tampon ci celui est plein (on s‟interdit de
placer des messages par surimpression) ; le producteur‟ doit alors attendre ;
-le consommateur doit prélever tout message une fois et une seule ;
-si le producteur est en attente parce que le tampon est plein, il doit être prévenu dès
que cette condition cesse d‟être vraie ; il en est de même pour le consommateur et la
condition « tampon vide ».
Pour représenter de façon plus précise l‟état du système, introduisant deux variables
caractérisant l‟état du tampon en dehors des phases de communication proprement
dite(les deux processus se trouvent donc…..leur phase de production ou
consommation) :
© Kasengedia motumbe pierre 100
Page 101 sur 270
nplein : nombre de messages attendant d‟être prélevé,
nvide : nombre d‟emplacement disponible dans le
tampon.
Initialement,nous avons :
nplein=0, nvide=n
L‟algorithme des deux processus peut alors s‟écrire de la manière suivante :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@à
PRODUCTEUR CONSOMMATEUR
Entier nplein=0, nvide=n
PROD : produire un message ; CONS : nplein :=nplein-1 ;
nvide :=nvide-1 ; si nplein=-1 alors si
nvide=-1 alors
attendre ; attendre ;
deposer le message ; prelever un message ;
© Kasengedia motumbe pierre 101
Page 102 sur 270
nplein=nplein+1 si nvide :=nvide+1 ;
s consommateur en producteur en attente
attente alors réveiller producteur
reveiller consommateur réveiller producteur
aller a PROD ; Consommer le message ;
aller a CONS ;
© Kasengedia motumbe pierre 102
Page 103 sur 270
Les parties notées entre accolade doivent se dérouler de façon indivisible (elles sont
atomiques). Elles doivent se dérouler ainsi puisqu‟elles comprennent le test et la
modification de variables critiques. Considérons à présent le
test sur la condition « consommateur en attente »dans le processus producteur.
On peut remarquer qu‟en raison du caractère indivisible de la séquence de débit du
consommateur ou pour remplacer la condition « consommateur en attente » par la
condition nplein=-1 qui lui est équivalente (en fait, on compare nplein a 0 puisqu‟on fait
nplein :=nplein+1).
Le test et la modification de cette condition se fait comme suit :
PRODUCTEUR CONSOMMATEUR
. .
. .
. .
nplein : = n plein+1 ; nplein : = n
plein -1 si nplein = 0 alors si
nplein = -1 alors réveiller le consommateur
attendre ; .
.
. . .
.
Remarquons enfin que les conditions nplein = 0 et nplein = -1 entraînent
respectivement n plein ≤ 0 et npelin < 0. On voit que nplein fonctionne en fait
comme un sémaphore avec la restriction, due à l‟unicité du consommateur, qu‟un
processus au plus peut se trouver bloqué dans sa file. On fait la même remarque
© Kasengedia motumbe pierre 103
Page 104 sur 270
que pour le compteur nvide et le producteur. En utilisant les primitives P(s) et V(s)
l‟algorithme des deux processus peut maintenant s‟écrire :
Sémaphore nplein = 0, nvide = 0 ;
PROD : Produit un message ; CONS : P (nplein) ; P (nvide) ;
Prélever un message ; Déposer le message V
(nvide) ;
V (nplein) ; Consommer le
message ; aller à PROD aller à
CONS ;
2.4.2.3. Communication par boite aux lettres
La communication ente processus suivant la méthode de la boite aux lettres est une
application directe du modèle du producteur et du consommateur. Nous pouvons
remarquer que, lors du dépôt d‟un message par un producteur, un consommateur
quelconque peut se trouver activer, et pas nécessairement le destinataire prévu ; on
voit donc que le dispositif n‟est efficace que si tous les destinataires sont équivalent
(c'est-à-dire s‟il est indifférent pour accomplir la tâche demandée, d‟activer l‟un
quelconque de ces processus). Sinon l‟identité du destinataire doit faire partie du
message ce qui implique un tri à la réception.
© Kasengedia motumbe pierre 104
Page 105 sur 270
La solution généralement retenue consiste donc à prévoir une boite aux lettres par classe
de processus équivalents, évitant ainsi tout tri à la réception.
Prenons comme exemple un système d‟entré/sortie gérant un lecteur de cartes perforées
et deux imprimantes pouvant fonctionner en parallèle. Les opérations possibles sont :
- imprimer le contenu d‟un fichier
- lire des cartes et placer leur contenu dans un fichier.
L‟impression d‟un fichier peut être demandée par un processus quelconque
(correspondant à l‟exécution d‟un programme utilisateur). La lecture de cartes ne
peut être demandée que par une commande introduite à la console de l‟opérateur. Si
on veut exploiter complètement le parallélisme, on prévoira trois processus
consommateurs :
- un processus lecteur de cartes
- deux processus chargés de l‟impression (les deux sont équivalents), dans ce sens
qu‟il est indifférent qu‟un fichier soit imprimé sur l‟une ou l‟autre imprimante.
Les demandes d‟entrée/sortie utilisent deux boîtes aux lettres suivant le schéma de la
Fig.39. Ci-dessous.
Les messages transmis dans les boîtes aux lettres contiennent l‟identité du fichier
concerné par l‟entrée/sortie
© Kasengedia motumbe pierre 105
Page 106 sur 270
Fig.2.18. Boite aux lettres utilisées pour la lecture de cartes et impression.
Le fonctionnement d‟une boîte aux lettres étant ainsi défini dans son principe, il reste à
examiner les modalités de son implémentation :
- l‟allocation d‟espace pour la (ou les) boîte(s) aux lettres.
- Accès à la boîte aux lettres : celle-ci doit être adressable par tous les processus qui
l‟utilisent.
Cette contrainte est à la source des principaux problèmes d‟implémentation d‟un
système de communication par boîte aux lettres en particulier dans le cas où chaque
processus dispose d‟un espace adressable distant.
2.4.2.4. Différence entre communication par boîte aux lettres et celle basée sur la
communication directe entre les processus
© Kasengedia motumbe pierre 106
Page 107 sur 270
Pour que nous puissions bien saisir cette différence, analysons comment les deux
concepts sont implémentés dans certains systèmes.
Exemple pour la communication directe
Int send_process ( 765, Bonjour) : le processus qui exécute cette primitive envoie le
message « bonjour » au processus ayant pid (numéro d‟identification du processus)
égal à 756. Le message sera copié dans la file de message du récepteur. Tout
processus quel qu‟il soit, peut envoyer un message à tout autre processus.
Normalement cette primitive ne se bloque jamais, car un nombre illimité de
messages peut résider dans la file du récepteur. Cette primitive échoue si le
processus de destination n‟existe pas.
Int receive_process (765, mareception) : le processus qui exécute cette primitive
reçoit le message dont le pid (processus d‟identification du processus) est 765 et le
placera dans sa file, mareception. Si au lieu de 765, on aurait mis 0, il recevrait un
message de n‟importe quel processus (on part du principe qu‟aucun processus ne
peut avoir le numéro d‟identification 0). Cette primitive échoue si un processus
émetteur est spécifié et n‟existe pas.
Exemple pour la communication du message réalise indirectement par le biais d’une boîte
aux lettres
Int_create_mailbox (boitelettre) : crée une boîte aux lettres appelée boite lettre. Cette
primitive échoue si la boîte aux lettres existe déjà.
Int delete_mailbox (boitelettre) : supprime une boîte aux lettres appelée boite lettre.
Cette primitive échoue si le processus qui émet la primitive n‟est pas propriétaire de
la boîte aux lettres ou si l boîte aux lettres n‟existe pas.
© Kasengedia motumbe pierre 107
Page 108 sur 270
Int_send_mailbox (boitelettre, bonjour) : elle envoie le message « bonjour » dans la
boîte aux lettres dont le nom d‟identification est « boite lettre ». Le message est
copié dans la boîte aux lettres. Tout processus peut envoyer un message à n‟importe
quelle boîte aux lettres.
L‟émetteur est bloqué jusqu'à réception du message. Cette primitive va échouer si la boîte
aux lettres n‟existe pas.
Int receive_mailbox (boitelettre.mareception) : reçoit le message en provenance de la
boîte aux lettres dont le nom d‟identification est boite lettre et place ce message dans
mareception. Les messages sont reçus dans l‟ordre de leur envoi. S‟il n‟y a aucun
message dans la file, il restera bloqué jusqu‟à ce qu‟un message soit envoyé. Cette
primitive échoue si le processus qui exécute la primitive n‟a pas de droit sur la boîte
aux lettres ou si cette dernière n‟existe pas.
En analysant les primitives utilisées pour la communication directe entre les processus et
celles utilisées dans la communication via la boîte aux lettres, force est de constater que
dans la communication directe le message qu‟un processus émetteur envoie à un
processus récepteur sera copié dans la file du processus récepteur, alors que celui envoyé
via la boîte aux lettres, sera d‟abord copié dans la boîte aux lettres, avant que le
processus réception puisse en prendre possession.
CHAP. 3. GESTION DE LA MEMOIRE
3.1. INTRODUCTION
La mémoire est une ressource importante qui doit être gérée avec prudence. Le
moindre ordinateur domestique a de nos jours dix fois plus de mémoire que l‟IBM
7094, l‟ordinateur le plus puissant du début des années soixante. Mais, la nature
ayant honneur du vide, la taille des programmes augmente tout aussi que celle des
mémoires.
© Kasengedia motumbe pierre 108
Page 109 sur 270
Le système d‟exploitation doit cohabiter dans la mémoire principale avec un ou
plusieurs processus. La gestion de a mémoire prend en charge l‟allocation de la
mémoire aux processus. Elle doit également protéger la mémoire allouée à chaque
processus contre un accès indésirable d‟autre processus, ainsi que la mémoire
allouée au système d‟exploitation contre des accès non autorisé.
La gestion de la mémoire est du ressort du gestionnaire de la mémoire. Il doit
connaître les parties libres et occupées de la mémoire, allouer de la mémoire
processus qui en ont besoin, récupérer la mémoire par un processus lorsque celui-ci
se termine est traiter le va et vient (swapping) entre le disque et la mémoire
principale lorsque cette dernière ne peut pas contenir les processus.
Les systèmes de gestion de la mémoire se répartissent en deux grandes catégories :
-les systèmes qui déplacent les processus entre la mémoire et le disque ;
(swapping et pagination)
-les systèmes qui ne déplacent pas les processus entre la mémoire et le disque.
3.2. La gestion de la mémoire sans va-et-vient ni pagination
Cette section s‟occupe seulement de ceux qui ne font pas le swapping, ni la
pagination. C‟est ainsi que dans les sous sections qui suivent nous aborderons : - la
monoprogrammation sans va-et-vient ni pagination ;
- la multiprogrammation et l‟utilisation de la mémoire ;
- multiprogrammation avec des partitions fixes;
- multiprogrammation avec des partitions variables;
© Kasengedia motumbe pierre 109
Page 110 sur 270
3.2.1. Monoprogrammation sans avec – et – vient ni pagination
La gestion de la mémoire la plus simple consiste à avoir un seul processus en
mémoire à un instant donne et lui permettre toute la mémoire disponible. Cette
approche ; cette approche ; courante avant 1960, n‟est plus utilisée de nos jours,
parce qu‟elle implique que chaque processus contiennent les pilotes des
périphériques d‟E/S qu‟il utilise. La technique que l‟on utilise généralement sur les
micro-ordinateurs (PC, Personal computer) est donne a la Fig.40. Ci-dessous, la
mémoire est partagée entre le système d‟exploitation et un unique de processus
utilisateur. Nous pouvons avoir les cas des figures suivantes.
-le système d‟exploitation est situé au bas de la mémoire vive
(RAM,Random Access Memory)
(être situe en bas, veut dire occuper les adresses les plus basses), cette situation est
illustrée dans la Fig.40.(a) ;
-le système d‟exploitation est situé en motte, au-dessous de la mémoire vive, comme le
montre la Fig.40.(b) ;
-le système d‟exploitation au bas de la RAM, les pilotes en ROM (Read Only Memory)
dans la partie haute de la mémoire. Cela est illustre sur la Fig.40.(c). les pilotes étant
situé dans un bloc de 8Ko de l‟espace d‟adressage de 1 Mo. Les programmes en
ROM, sont appelés le
BIOS (Basic Input Output système). Cette approche est celle du système d‟exploitation
MSDOS, qui est un système : mono programme, mono utilisateur.
Sur la Fig.41. Ci-dessous, est illustrée l‟organisation de la mémoire de 1Mo sous MS-
DOS, dans un micro-ordinateur à microprocesseur Intel 8086/88.
Système Pilotes de
D‟exploitation périphérique
ROM en Rom
© Kasengedia motumbe pierre 110
Page 111 sur 270
Programme
Utilisateur Programme
Utilisateur
Système Système
D‟exploitation D‟exploitation
en RAM en RAM
Fig.3.1(a) Fig.3.1 (b) Fig.3.1 (c)
Fig.40. Trois organisations possibles de la mémoire s‟il n‟y a que le système
d‟exploitation et un seul processus utilisateur.
1024 ko
Rom
Bios
ko Video
960Adaptater
ko
Pilotes
mémoire réservée
Video Ram
800
Utilisateur
+
768 ko Pilote
Dos
© Kasengedia motumbe pierre 111
Page 112 sur 270
640 ko Processus
Mémoire conventionnelle
Fig.3.2. Organisation de la mémoire sous MS-DOS, dans un micro-ordinateur à
microprocesseur I8088/86
Lorsque la mémoire est organisée de cette manière, il ne peut y avoir qu‟un seul
processus qui s‟exécute a une instante donne. L‟utilisateur tape une commande sur
son terminale et le système d‟exploitation change le programme demande en
mémoire, puis l‟exécute. Lorsque le processus se termine, le système d‟exploitation
affiche une invite (prompt) sur le terminal et attend et attend la commande suivante
pour changer un nouveau processus qui remplace le précèdent.
3.2.2. Multiprogrammation et utilisation de la mémoire
Dans un environnement multiprogrammation, le logiciel d‟un ordinateur est organisé
en un certain nombre de processus, un processus étant un programme qui s‟exécute
qui possède son compteur ordinal (CO, PC : Program counter), ses registres et ses
variables. Conceptuellement chaque processus a son propre processus virtuel. En
réalité, le vrai processus commute entre plusieurs processus. Mais, pour comprendre
le système, il est préférable de penser à un ensemble de processus qui s‟exécutent
en (pseudo) parallélisme plutôt qu‟à allocation du processeur entre différents
processus. Cette commutation rapide est appelée multiprogrammation, comme nous
l‟avions fait dit au début du cours.
Dans ce qui suit, il est présenté :
- la multiprogrammation de quatre programmes dans un ordinateur ; (Fig.42.(a))
- une abstraction de cas précédent où les quatre programmes indépendants qui ont
chacun leur propre contrôle de flux (c'est-à-dire leur compteur ordinal) (Fig. b) ;
© Kasengedia motumbe pierre 112
Page 113 sur 270
- A la Fig.42.(d), on peut constater que sur un intervalle de temps assez grand, tous
les processus ont progressé mais qu‟a un instant donné, il n‟y a qu‟un seul
processus actif. La multiprogrammation sans une gestion de la mémoire sans va-et-
vient ni pagination est utilisée de temps en temps sur des petits ordinateurs, mais
plus rarement sur des grands ordinateurs à plusieurs utilisateurs.
Plusieurs arguments militent en faveur de l‟utilisation de la multiprogrammation :
- facilité le développement du programme en permettant de le diviser en plusieurs
processus.
© Kasengedia motumbe pierre 113
Page 114 sur 270
un seul compteur de commutation 4
compteurs de processus ordinal
ordinaux
A A B C D
C Fig.3.3.(b)
Fig.3.3.(a)
Processus
Temps
(c)
(a) Multiprogrammation de 4 programma
(b) Modèle conceptuel de 4 processus séquentiels indépendants.
(c) un seul programme est actif à un instant donné.
© Kasengedia motumbe pierre 114
Page 115 sur 270
Une de formules fondamentales du génie logiciel (software en informatique
engineering) dit :
C(P) > C(SP1) + C(SP2) + … + C(SPi) + … + C(SPn)
Le coût d‟un programme non modulaire (n‟ayant pas de sous-programmes) est
supérieur au coût du même programme réalisé d‟une manière modulaire. où,
P : programme réalisé d‟une manière non
modulaire SPi : le ième sous-programme du
programme P.
- la multiprogrammation se justifie aussi dans un environnement multi-utilisateur,
« time sharing ».
C‟est ainsi qu‟il faut avoir plus d‟un processus en mémoire à la fois.
Beaucoup de processus passent la plus grande partie de leurs temps à attendre des
E/S sur disque. En effet, il arrive fréquemment qu‟un effectue une boucle pour lire les
donnes d‟un fichier qu‟il traite ensuite. Dans un système mono programmé, si la
lecture des données des E/S (Entrée/Sortie) requis 40 ms et le traitement 10 ms le
processeur resterait libre pendant 80% du temps. C‟est pourquoi, en introduisant la
multiprogrammation, on éviterait à ce que le processeur reste en « chômage »
pendant ce 80% du temps. Donc, la multiprogrammation permet d‟améliorer le taux
d‟utilisation du processeur.
3.2.3. Multiprogrammation avec partition fixes
La méthode la plus simple de la multiprogrammation est de réaliser la
multiprogrammation « sans va-et-vient ni pagination » en utilisant des partitions fixes.
Elle consiste à diviser la mémoire en n partitions (éventuellement de tailles inégales).
© Kasengedia motumbe pierre 115
Page 116 sur 270
Ce partitionnement peut, par exemple, être fait par l‟opérateur au démarrage du
système. Chaque nouvelle tâche est placée dans la file d‟attente de la plus petite
partition qui peut la contenir. La Fig43.(a) ci-dessous présente ce système à
partitions fixes et à files multiple
Fig.3.4.(a) Des partitions mémoires de taille fixe à files
multiples (b) Des partitions mémoires de taille fixe à
une seule file
Trier les tâches en fonction de leurs tailles dans des files multiples présente un
inconvénient majeur, lorsque la file des grandes partitions est vide et celle des petites
pleine, comme c‟est le cas dans la Fig.43. Une alternative consiste a utiliser ne fie
comme celle de la Fig(b). Des qu‟une partition se libère, on y place la première une
seule file d‟attente qui peut y tenir et on exécute. Comme il n‟est pas intéressant
d‟allouer une grande partition a une petite tache, on peut aussi parcourir la file
d‟attente et choisir la plus grande tache que peut contenir la partition. Cette stratégie
© Kasengedia motumbe pierre 116
Page 117 sur 270
désavantage les taches de petites tailles alors qu‟il faudrait théoriquement les traiter
en priorité.
Ce système, à partitions fixes déterminées par l‟opérateur au démarrage a été utilisé
par le OS/360 des grands ordinateurs IBM pendant de nombreuses années. Il
s‟appelait MFT (Multiprogramming with a Fixed number of tasks)ou OS/MFT.
3.3. Gestion de la mémoire avec va-et-vient 3.3. 1. Introduction
L‟organisation de la mémoire en partition fines est une méthode adoptée avec
systèmes à traitement par lots. Avec le système en temps partages, la situation est
différente : la mémoire ne pouvant pas contenir les processus de tous les utilisateurs,
il faut placer quelques processus sur le disque, qu‟il faudrait bien sûr, ramener en
mémoire principale avant de les exécuter. Les mouvements de processus entre la
mémoire principale et le disque est appeler va-et-vient (swapping)
Ainsi, dans ce qui suit nous allons voir quelques méthodes de gestion de mémoire avec les
quatre swapping :
-multiprogrammation avec partitions variables ;
-gestion de la mémoire par tables de bits ;
3.3. 2. Multiprogrammation avec partitions variables
En principe, on peut utiliser des partitions fixes pour les va-et-vient lorsqu‟un
processus se bloque, on le déplace sur le disque et on le remplace par une autre. En
pratique, les partitions fixes ne sont pas très intéressantes lorsque la mémoire est
très limitée, car on perd beaucoup de place à cause des programmes qui sont plus
petits les partitions. Il faut utiliser une autre méthode : les partitions variables.
© Kasengedia motumbe pierre 117
Page 118 sur 270
Avec les partitions variables, le nombre et la taille des processus en mémoire varient au
cours du temps. La Fig.3.5. illustre le fonctionnement des partitions variables.
Au départ, un seul processus A, se trouve en mémoire (Fig.3.5a). Les processus B et
C sont créés ou charge à partir disque. A la Fig.3.5d, A se termine ou est déplacé sur
le disque. Puis d‟arriver et B s‟en va. Enfin E est charge en mémoire (Fig.3.5g).
La différence fondamentales entre la position et les partitions fixes (Fig.3.4) et les
partitions variables (Fig.3.5) est que le nombre, la taille de ces dernières varie
dynamiquement au fur et à mesure que les processus entrent ou sortent sont de la
mémoire. On n‟est plus limité par un nombre fixe de partition ou que les partitions
sont très grandes ou trop petites. Cette souplesse accrue améliore l‟usage de la
mémoire mais complique son allocation et sa libération
C C
B B B
A A A
© Kasengedia motumbe pierre 118
Page 119 sur 270
Système Système Système Système
Exploitation Exploitation Exploitation Exploitation
(a) (b) (c) (d)
C C C
B
E
D D D
Système Système Système
Exploitation Exploitation Exploitation
(e) (f) (g)
Fig.3.5. l‟allocation de la mémoire varie en fonction de l‟arrivée et du départ des
processus de la mémoire principale les régions grisées représentent des espaces
mémoire inutilisés.
Une fois les processus crées et détermines, l‟utilisation de la mémoire évolue et
devient une alternance de sections d‟espace alloues et non alloues, tel un damier, tel
que vous pouvez le constater sur la Fig.….ci-dessous. Par conséquent bien qu‟il ait
peut être plus des mémoires non allouée que la taille d‟un processus en attente, la
© Kasengedia motumbe pierre 119
Page 120 sur 270
mémoire n‟est peut être utilisée pour ce processus, car elle est dispensée dans un
grand nombre de trois zones de mémoire, libre
(memory holes) cet espace qui n‟est pas alloue a aucune partition est appelée
fragmentation externe.
Pour gagner l‟espace inutilisé, on peut réunir les espaces inutilisés en une partition
de grande de grande taille en déplaçant tous les processus vers le bas de la
mémoire. Il s‟agit du compactage de la mémoire. Cette technique n‟est
généralement pas utilisée, car elle requiert beaucoup de temps processeur. Par
exemple il faut une seconde pour compacter la mémoire d‟un micro-ordinateur de 1
Mo qui peut copier un octet par micro seconde (1 Megaoctet/s). Cette technique est
en revanche, utilisée sur les grands ordinateur CDC cyber car ils possèdent des
circuits spécialises qui compactent la mémoire à la vitesse de 40 Megaoctet/s.
3.3. 3. Gestion de la mémoire par table de bits
La mémoire est divisée en unité d‟allocation dont la taille peut varier de quelques mot a
plusieurs kilooctets.
A chaque unité, on fait correspondre un bit dans la table de bits qui est :
-„0‟, si l‟unité est libre ;
-„1‟si elle est occupée
(ou vice versa, selon ; la convention adoptée)
Sur Fig45…ci-dessous est présente une partie de la mémoire et la table de bits
correspondantes
A B C D E
8
17 24
11111000
11111111
11111111 © Kasengedia motumbe pierre 120
110000
Page 121 sur 270
(a)
(b)
P 0 5 H 5 3 P 8 6 P 14 3
P 17 6 P 23 3 H 26 4
Zone debout longueur Processus Hachuree
Libre
(on trou) 18
(C)
Fig.3.6 une partie e la mémoire occupée par cinq processus et rois zones libres les
tirets matérialisent l‟unité d‟allocation de la mémoire. Les régions hachurées (0 dans
la table de bit) seront libres représentent les zones libres
b) sur a Fig. 45b est illustrée la table de bits indiquant les zones occupées et non occupes
de la mémoire.
Quant à la Fig.44(c), elle montre la manière de représenter la même information en liste
chaînée.
H : zone hachurée, non utilisée par un processus
© Kasengedia motumbe pierre 121
Page 122 sur 270
P : zone utilisée par le processus
Il convient de noter que la taille de l‟unité d‟allocation joue un rôle important.
Néanmoins, même si elle ne fait que n octets, il faut 1 bit de la taille de bits pour
représenter 32 bits de la mémoire. Une mémoire de 32 n bits va nécessiter une table
de bits de n bits. Donc dans ce cas la table de bits occupe 3% de la mémoire.
La table de bits permet donc de mémoriser l‟occupation de la mémoire dans un
espace mémoire de taille fixe car la taille „une table de bits ne dépend que de la taille
de l‟unité d‟allocation. Le seul problème survient lorsqu‟on doit ramener en mémoire
un processus de k unités. Le gestionnaire de mémoire doit alors parcourir la table de
bits à la recherche de k zéros consécutifs. Cette recherche est lente ce qui fait qu‟en
pratique on utilise rarement les tâches de bits.
3.3. 4. Gestion de la mémoire par liste chaînée
Une autre méthode pour mémoriser l‟occupation de la mémoire consiste à gérer une
liste chaînée des segments libres et occupés, un segment étant un processus ou un
espace libre entre deux processus. La Fig.45(c) présente la mémoire de Fig. 44a
sous forme d‟une liste chaînée à chaque entrée de la liste spécialisé : une zone libre
(H ou hole en anglais) ou un processus (P), son adresse de départ, sa longueur et un
pointeur sur l‟entrée suivante. liste Dans cet exemple, la liste des segments est triée
sur les adresses. Ce tri permet de mettre la à jour facilement lorsqu‟un processus se
termine ou est déplacé sur le disque. Un processus normalement deux voisins (sauf
s‟il se trouve en haut ou bas de la mémoire). Ces derniers sont des processus soit
des zones libres, ce qui donne les combinaisons de la Fig.46 :
- A la Fig.46 (a), il suffit de remplacer P par H ;
- Au Fig.46 (b), Fig.46 (c) ; il faut réunir deux entrées en une seule de plus grande
taille, ce qui réduit la liste d‟une entrée ;
- A la Fig.46 (d), les trois entrées ne forment plus qu‟une.
Quand on mémorise les processus et les zones libres dans une liste triée en fonction
des adresse, on peut utiliser plusieurs algorithmes pour allouer de la mémoire aux
nombreux processus où aux processus ramener en mémoire principale.
© Kasengedia motumbe pierre 122
Page 123 sur 270
On suppose que la gestionnaire de la mémoire connaît la taille de la mémoire à
allouer. Les algorithmes qui peuvent être utilisés sont :
- l‟algorithme de la première zone libre (first fit) ;
- l‟algorithme de la zone libre suivante ;
- l‟algorithme du plus grand résidu avant la fin X.
devient A B
a) A X
B
b) A X devient A
c) X B devient B
d) X devient
Fig.3.7 quatre combinaisons des voisins possibles d‟un processus qui se termine.
L’algorithme de la première zone libre (first fit) :
© Kasengedia motumbe pierre 123
Page 124 sur 270
Le gestionnaire de la mémoire parcours la liste chaînée de segments à la recherche
de la première zone libre qui peut contenir le processus. Cette zone est alors scinde
en deux parties : La première partie contient le processus, et la deuxième, l‟espace
mémoire inutilisé (sauf si le processus a exactement la même taille que la zone). Cet
algorithme est rapide puisqu‟il y a très peu de recherche.
L’algorithme de la zone libre suivante (next fit) :
Cet algorithme est une légère variante de l‟algorithme précédent. Sa stratégie est
identique au précédent mais il mémorise en plus la position de l‟espace libre trouvé.
La recherche commencera à partir de cette position et non à partir du début.
L’algorithme du meilleur ajustement
Il consiste à rechercher dans la liste la plus petite zone libre qui convient. On évite ainsi de
fractionner une grande zone dont on pourrait avoir besoin ultérieurement.
L’algorithme du plus grand résidu (worst fit) :
Il consiste à toujours prendre la plus grande zone libre disponible pour que la zone
libre restante soit la plus grande possible. La simulation a montré que cette stratégie
ne donne pas des bons résultats.
3.4. LA MÉMOIRE VIRTUELLE
3.4.1. Introduction
L‟idée de base de la mémoire virtuelle est que la taille du programme, des données
et de la pile peut dépasser la mémoire interne disponible. Le système d‟exploitation
garde en mémoire les parties du programme qui sont utilisées et stocke le reste sur
le disque. Par exemple, on peut exécuter un programme de 1M sur une machines de
256 koctets en choisissant judicieusement les 256 koctets du programme à mettre en
© Kasengedia motumbe pierre 124
Page 125 sur 270
mémoire principale à tout instant. Les autre parties vont faire des vas – et – vient
entre le disque et la mémoire.
La mémoire virtuelle peut aussi être utilisée sur un système multiprogrammé. On
peut, par exemple, allouer des partitions de 256 Ko à 8 programmes de 1M sur un
système qui a 2M de mémoire. Chaque programme se déroule comme s‟il avait sa
propre machine de 256 ko. La mémoire virtuelle et la multiprogrammation se
complètent très bien.
Dans l‟explication ci-dessus, la capacité de la mémoire se référer à la partie de la
mémoire utilisée par le programme/application utilisateur ; on a fait fi de celle
occupée par le système d‟exploitation.
3.4.2. La pagination
La plupart des systèmes à mémoire virtuelle ont recours à la pagination. Sur tout
ordinateur, les programmes peuvent générer un certain nombre d‟adresses. Quand
un programme effectue une instruction comme MOVE REG, 1000, il copie le registre
REG. Ces adresses manipulées par les programmes sont appelées des adresses
virtuelles et constituent l‟espace d‟adressage virtuel. Sur les ordinateurs sans
mémoire virtuelle, les adresses sont directement placées sur le bus le bus d‟adresse
de la mémoire et provoque la lecture ou l‟écriture du mot à l‟adresse spécifiée.
Lorsque l‟adresse mémoire virtuelle est utilisée, les adresses virtuelles ne sont pas
directement placées sur le bus d‟adresse de la mémoire. Elles sont envoyées à
l‟unité de gestion de la mémoire ou MMU (Memory Management Unit), composant
qui traduit les adresses virtuelles en adresses physiques, comme le montre la Fig.47
La fig. donne un exemple de cette conversion. L‟ordinateur de cet exemple peut
générer des adresses sur 16 bits de 0 à 64 koctets, mais on ne peut pas les changer
entièrement en mémoire. Une image mémoire de tout le programme (donc de moins
de 64 koctets) doit alors être stockée sur disque de telle sorte qu‟on puisse en placer,
au besoin, différentes parties dans la mémoire principal. L‟espace d‟adressage
© Kasengedia motumbe pierre 125
Page 126 sur 270
virtuel est divisée en petites unités appelées des pages. Les unités correspondantes
de la mémoire physique sont les cases mémoires (pages frames). Les pages et les
cases sont toujours de la même taille. Dans notre exemple, elles font 4 koctets mais
on rencontre fréquemment des tailles de 512 octets,et 2 octets. Avec 64 koctets de
mémoire virtuelle 32 koctets de mémoire physique, on a 16 pages virtuelles et 8
cases. Le transfert entre la mémoire et le disque se fait toujours par pages entières.
Quand un programme essaie de lire l‟adresse O, par exemple au moyen de
l‟instruction MOV REG, O, l‟adresse virtuelle O est envoyée au MMU. Ce dernier
constate que cette adresse virtuelle se situe à la page 0 (adresse 0 à 4095) qui
appartient à la case 2(8192 à 12384). Elle reçoit tout simplement une demande de
lecture de l‟adresse 8192. Le MM a donc nappe les adresses virtuelles comprises
entre 0 et 4096 sur les adresses physiques 8192 à 12387.
De même, l‟instruction MOVE REG, 8192 est transformée en MOVE REG 24576
Parce que l‟autre adresse virtuelle 8192 est situé dans la page virtuelle 2 et que cette
page est mappée a la a la case physique 6 adresses physiques 42576 à 28671).
L‟adresse virtuelle 21500 est située 20 octets après le début de la page virtuelle 5
(adresses virtuelles 20480 à
24575) et correspond à l‟adresse physique 12288+20= 12308.
Ce passage au moyen du MMU des 16 pages virtuelles sur n‟importe laquelle de 8
cases ne résout pas le problème soulevé par le fait que l‟espace de l‟adresse
virtuelle est plus grande que la mémoire
que la mémoire physique. Comme on a 8
cases physiques de la fig.47 Les autres
pages signalés par « X » sur la figure, ne
sont pas mappées. Le matériel mémorise
dans un bit de présence si une page est
mappée ou non.
© Kasengedia motumbe pierre 126
Page 127 sur 270
Fig.3.8. La relation entre les adresses virtuelles est les adresses de la mémoire
physique est indiquée dans la table des pages. Chaque page comme à un multiple
de 4 096 et fini 4095 adresses plus haut. 4k-8k signifient donc 4096 à 8 191 et 8k-
12k signifie 8 192 à 12 287.
Que se passe-t-il si le programme tente d‟utiliser une page non mappée, par exemple en
effectuant MOV REG, 32780 ?
(Cette adresse se situe à 12 octets après le début de la page 8 qui commence à
l‟adresse 32768. le MMU constate que cette page n‟est pas mappée et provoque un
déroulement (trap) : le processeur est restituer au système d‟exploitation.
Ce déroulement est appelé un défaut de page (page fault).
Le système d‟exploitation repère une case peu utilise et recopie son contenu sur le disque.
Il place ensuite la case qui vient d‟être libérée, modifie la mappée, et ré-exécute
l‟instruction déroulée. Si le système d‟exploitation choisit de déplacer la case1, il
charge la page virtuelle a 8 à l‟adresse physique 4K et effectue deux changements
dans la mappe du MMU. Il commence par indiquer que la page virtuelle 1 n‟est pas
mappée afin de pouvoir dérouter les prochains accès aux adresses comprises entre
4 K et 8 K. puisqu‟il remplace le « X » de la page virtuelle 8 par 1 pour mapper
l‟adresse virtuelle 32780 sur l‟adresse physique 4108, lorsque l‟instruction déroutée
sera ré-exécutée
Fonctionnement interne de l’unité de gestion de la mémoire MMU (Memory
Management Unit) Le rôle d‟un MMU est de mapper une adresse virtuelle en
adresse physique, grâce à la table de pages. Examinons à présent le fonctionnement
interne du MMU et la raison pour laquelle nous avons choisi des tailles de pages qui
sont puissances de 2.
© Kasengedia motumbe pierre 127
Page 128 sur 270
La figure…donne une adresse virtuelle 8196 (0010000000000100 en binaire), qui est
mappée grâce à la table des pages de la Fig.48.
L‟adresse reçue de 16 bits est subdivisée en deux parties :
- un numéro de page de 4 bis ;
- un déplacement dans cette page de 12 bits.
Les 4 bits du numéro de page permettent d‟avoir 16 pages et les 12 bits du déplacement
permettent d‟adresser 4096 octets d‟une page
Le numéro de page sert d‟index dans la table des pages et donne la case qui
correspond à cette page virtuelle. Si le bit de présence est à 0, il se produit un
déroutement s‟il est à 1, on copie le de la case dans les 3 bits du poids fort du
registre de sortie. On copie aussi les 12 bits du déplacement fournis par l‟adresse
virtuelle. Ce registre de sortie (qui contient l‟adresse physique) est ensuite le placer
sur le bus de la mémoire.
© Kasengedia motumbe pierre 128
Page 129 sur 270
Fig.3.9 le fonctionnement interne d‟un MMU qui a 16 pages de 4 koctets.
Les algorithmes de remplacement de page
A la suite d‟un défaut de page (on se réfère à une page ne se trouvant pas dans la
mémoire physique), le système d‟exploitation doit retirer une page de la mémoire
pour libérer de la place pour la page manquante. Si la page à retirer a été modifiée
depuis son changement en mémoire, il faut la récrire sur le disque. Sinon le disque
est déjà à jour. La page lue remplace simplement la page supprimée.
© Kasengedia motumbe pierre 129
Page 130 sur 270
Si on choisit de retirer la page peu utilisée, cela peut sensiblement améliorer les
performances du système.
Dans ce qui, sont présentés les algorithmes suivants de remplacement de page :
- le remplacement de page optimal.
- Remplacement de la page premier entré, première sortie FIFO -
Remplacement de la page la moins utilisée.
Le remplacement de page optimal
Cet algorithme est facile à décrire, mais presque impossible à mettre en œuvre. Au
moment du défaut de page, il existe en mémoire un certain nombre de pages. Une
de ces pages risque d‟être référence très vite, d‟autres ne seront référencées que
dans 10, 100 ou 1000 instructions. On peut numéroter chaque page avec le nombre
d‟instructions qui seront exécutées avant qu‟elle ne soit référencée.
L‟algorithme de copie de page optimal consiste à retirer la page qui porte le plus
haut numéro. Si une page n‟est adresse qui dans 8 millions d‟instructions, et une
autre dans 6 milliards d‟instructions il vaut mieux retirer la première car on repousse
ainsi le défaut de page suivant le plus tard possible.
Malheureusement cet algorithme est irréalisable, car le système d‟exploitation ne peut pas
connaître d‟avance le moment où les différents pages seront référencés.
Remplacement de page premier entré premier entré, première sortie, FIFO
Le système d‟exploitation mémorise une liste de toutes les pages en mémoire, la
première page de cette liste, la plus ancienne et la dernière la plus récente. Lorsqu‟il
se produit un défaut de page, on retire la première page de la liste et on place la
nouvelle page à la fin de cette liste.
Remplacement de la page la moins récemment utilisée
Une bonne approximation de l‟algorithme optimal se fonde sur l‟observation suivante :
- les pages les plus référencées au cours des derniers instants seront
probablement utilisées au cours des prochaines instructions. De même, les
pages qui n‟ont pas été référencées pendant un long moment ne seront
© Kasengedia motumbe pierre 130
Page 131 sur 270
probablement utilisées pendant un certain temps. l‟algorithme consiste à
supprimer et à favoriser celles qui ont été références au cours de derniers
instants
Ainsi, la page qui est resté inutilisé pendant longtemps. Cette stratégie est celle de la page
la moins récemment utilisée (LRU : Least Recently Used).
© Kasengedia motumbe pierre 131
Page 132 sur 270
CHAP.4. GESTION DE SYSTEMES DE FICHIERS
La gestion de fichiers est justifiée par le fait qu‟il se pose le besoin d‟enregistrer, de
stocker à long terme, les informations et de les retrouver.
Trois conditions essentielles sont exigées pour le stockage à long terme de
l‟information: - Pouvoir enregistrer une très grande quantité d‟informations;
- Les informations doivent être conservées, après la fin du processus qui les
utilise; - Plusieurs processus doivent pouvoir accéder simultanément à une
même information (exemple : plusieurs processus veulent accéder à un seul
répertoire téléphonique). Les supports utilisés pour le stockage à long terme
sont :
- Les disques magnétiques ;
- Les Bandes magnétiques ; - Disques optiques numériques.
4.1. DISQUE MAGNÉTIQUE
4.1.1. Description d’un disque magnétique
Grâce au système d‟exploitation, au système de fichiers, un disque dur, entité
physique, peut être considérée comme une entité logique, une suite séquentielle
de blocs de taille fixe, qui supporte deux opérations :
- Lire le bloc k ;
- Ecrire le bloc k .
Sur Fig.4.1 sont détaillés les composants physiques d‟un disque dur pour ordinateur
fixe1, ainsi qu‟à la Fig.4.2.
Les composants logiques d‟un disque dur :
- Cylindre ; - Piste ; - Secteur.
1
www.culture-informatique.net
© Kasengedia motumbe pierre 132
Page 133 sur 270
Fig.4.1. Eléments composants d‟un disque dur pour ordinateur fixe2
2
www.culture-informatique.net
© Kasengedia motumbe pierre 133
Page 134 sur 270
Fig.4.2. les composants logiques d‟un disque dur : - cylindre ; piste ; secteur
4.1.2. Noms de fichiers
Le fichier est un mécanisme d‟abstraction qui permet d‟écrire des informations
sur un disque, et en lire plus tard, de façon à ce que l‟utilisateur ne soit pas
préoccupé par le fonctionnement, les caractéristiques techniques du disque.
Quand un processus crée un fichier, il lui donne un
nom. Le nom peut avoir les caractéristiques
suivantes :
- Chaîne de caractères ;
- Chiffre ;
- Chiffre et caractère ;
- Sensible à la lettre majuscule.
Certains systèmes de fichiers utilisent de noms sensibles à la majuscule, par exemple
UNIX :
jean ≠ Jean ≠ JEAN, alors que d‟autres ne sont pas sensibles à la majuscule, tel que
DOS : jean = Jean = JEAN.
© Kasengedia motumbe pierre 134
Page 135 sur 270
Les fichiers se trouvant dans un support de stockage de masse (HDD, Bande
magnétique,…) sont gérés par une partie du système d‟exploitation appelée
système de fichiers. Sur le tableau de la Fig.4.3. sont présentés les systèmes de
fichiers généralement utilisés Fig.4.3. Systèmes de fichiers généralement utilisés
SYSTEMES FICHIERS SYSTEMES
D’EXPLOITATION
FAT 16 MS-DOS, mais aussi
WINDOWS 95,
WINDOW 98
FAT 32 (extension de FAT 16) WINDOW 98, Windows NT
NTFS Système de fichiers natif de 4 versions
de Windows NT
Windows NT, Windows 2000, Windows XP, Windows Vista reconnaissent FAT 16, FAT
32.
De nombreux systèmes de fichiers gèrent des noms
de fichiers en deux parties : indique le type de
partienom.extension
fichier
nom d‟un fichier
MS DOS : nom de 1 à 8 caractères, extension de 1 à 3 caractères ; UNIX : la taille
de l‟extension, si elle existe, dépend de l‟utilisateur. Un fichier peut avoir deux
extensions ou plus.
Exemple : homepage.html.zip (fichier homepage.html a été compressé grâce au
programme gzip)
© Kasengedia motumbe pierre 135
Page 136 sur 270
Sur le tableau de la Fig.4.4. sont présentés quelques exemples de fichiers et leurs
extensions.
Fig.4.4. Quelques exemples de fichiers et leurs extensions.
FICHIER ET SIGNIFICATION
EXTENSION
Fichier.bak Fichier de sauvegarde
Fichier.c Programme source
en C
Fichier.gif fichier image en
format GIF
Fichier.hlp fichier d‟aide
Fichier.jpg fichier image en format
JPEG
Fichier.mp3 fichier de musique
codé en MPEG
Fichier.o fichier objet (source
compilée, non
encore liée)
Fichier.ps Fichier documente
en format
© Kasengedia motumbe pierre 136
Page 137 sur 270
Post Script
Fichier.tex fichier
documenté
en format
TEX
Fichier.txt fichier
doc
ument en
format
TEXTE
Fichier.zip fichier
docume
nt archive
compressé
Fichier.html Fichier contenant page
web
Fichier
Fichier.pdf contenant
document PDF
4.2. STRUCTURE DE FICHIERS
Les fichiers peuvent être structurés de différentes façons :
- Une suite d‟octets sans structure ;
- Une suite d‟enregistrements de longueur fixe ;
- Un arbre d‟enregistrements.
© Kasengedia motumbe pierre 137
Page 138 sur 270
- Sur la Fig.4.5. sont présentées deux Structures des fichiers (Une suite d‟octets
sans structure, Une suite d‟enregistrements de longueur fixe).
Fig.4.5. Structures des fichiers
Suite d’octets sans structure
Le système d‟exploitation ne s‟occupe pas du contenu de ce fichier, il ne voit que des
octets. Toute signification doit être apportée par les programmes des utilisateurs.
Suite d’enregistrements de longueur fixe
Dans ce modèle, un fichier est une suite d‟enregistrements de longueur fixe, qui ont
chacun une structure interne. Ainsi, une opération de lecture renvoie un
enregistrement, une opération d‟écriture ajoute un enregistrement.
© Kasengedia motumbe pierre 138
Page 139 sur 270
Fichier en arbre d’enregistrements
Un fichier est un arbre d‟enregistrements, qui ne sont pas nécessairement tous de
même longueur et dont chacun contient une clé dont la position est fixe dans
l‟enregistrement. L‟arbre est trié en fonction de la clé, ce qui permet de rechercher
rapidement une clé donnée. Sur la Fig.4.6. est décrit le fichier d‟enregistrement d‟un
zoo.
Fig.4.6. Fichier en arbre d‟enregistrements
L‟opération fondamentale ne consiste pas à obtenir l‟enregistrement prochain, mais à
obtenir un enregistrement avec une clé donnée.
Ce type de fichier est vraiment très différent des suites d‟octets exploitées dans
Windows, Unix, mais largement utilisé dans les gros systèmes (main frame), qui
exploitent certaines applications de traitement de données commerciales.
4.3. CLASSIFICATION DE FICHIERS(ORDINAIRES ET AUTRES)
D‟un certain point de vue, les fichiers peuvent être classifiés en fichiers ordinaires et
autres :
- Les fichiers ordinaires (« regular files »)
- Les répertoires (« directories »)
- Les fichiers spéciaux caractère (« character special files »)
© Kasengedia motumbe pierre 139
Page 140 sur 270
- Les fichiers spéciaux bloc (« block spécial files »)
4.3.1. Les fichiers ordinaires (« regular files »)
Les fichiers ordinaires sont ceux qui contiennent les données, informations des utilisateurs.
Ils peuvent être, tels qu‟expliqués à la section précédente :
- Une suite d‟octets sans structure ;
- Une suite d‟enregistrement de longueur fixe ; - Un arbre d‟enregistrements.
La plupart des systèmes d‟exploitation, notamment Windows, Unix, supportent ce type de
fichiers.
Les fichiers ordinaires peuvent être classifiés en :
- Fichiers ASCII
- Fichiers binaires.
Fichiers ASCII
Les fichiers ASCII se composent de lignes de texte. Selon le système d‟exploitation
auquel on a affaire, une ligne peut se terminer par le caractère ASCII ″CR″ (Carriage
Return), ou le caractère ASCII ″LF″ (Line Feed – saut de ligne). MS-DOS utilise les
deux manières de terminer la ligne.
Le grand avantage du fichier ASCII, couramment appelé fichier texte est qu‟on peut
l‟éditer avec n‟importe quel éditeur de texte, l‟afficher, l‟imprimer, tels quels. De
nombreux programmes peuvent, moyennant des tubes (pipes), relier la sortie d‟un
fichier ASCII à l‟entrée d‟un autre, comme le ferait l‟interpréteur de commandes
SHELL.
Fichiers binaires
Les fichiers binaires sont différents des fichiers ASCII, dans ce sens que si on les
imprime, cela donnerait des feuilles complètement incompréhensibles. Ils possèdent
une structure interne pour des programmes qui les exploitent.
Sur le fichier de la Fig.4.7, ci-dessous est illustrée la structure interne d‟un simple
fichier exécutable d‟une ancienne version d‟UNIX. Bien que, techniquement, le
© Kasengedia motumbe pierre 140
Page 141 sur 270
fichier soit juste une suite d‟objets, le système d‟exploitation l‟exécutera s‟il
respecte un certain format. Ce format comprend cinq parties :
- L‟en-tête (header) ;
- Le code
- Les données
- Les bits de translation (relocation) ; - La table de symboles.
En-tête: au début de l‟en-tête est inscrit un nombre magique (magic number), une
valeur identifiant le fichier et qui permet d‟éviter une exécution accidentelle. Il
contient aussi les tailles des parties maniables du fichier, l‟adresse à laquelle son
exécution démarre et autres indications.
Code et données: le code et les données du programme qui suivent l‟en-tête sont chargés
en mémoire et déplacés à l‟aide des bits de translation.
Table des symboles: la table des symboles est utilisée pour déboguer (dépanner) le
programme. Fichier d’archive
Dans le contexte d‟UNIX, est aussi utilisé une variante de fichier binaire, appelé
fichier d’archive. Il consiste en un rassemblement de modules de bibliothèques
compilés mais pas encore liés par un éditeur de liens (Link Editor). Chacun d‟eux
est composé d‟un en-tête et du module objet (objet module). L‟en-tête est composé
de : - Nom du module ;
- Date de création ;
- Nom du propriétaire ;
- Protection (droits, permissions) ; - Taille.
Sur Fig.4.8, ci-dessous est présenté un exemple du fichier binaire, fichier exécutable.
© Kasengedia motumbe pierre 141
Page 142 sur 270
Fig.4.8. Structure interne d‟un simple fichier exécutable d‟une ancienne version d‟UNIX
4.3.2. Les répertoires (« directories »)
Les répertoires sont des fichiers système qui conservent la structure du système
de fichiers, laquelle a comme rôle de conserver la trace des fichiers concernant
des répertoires. Dans ce qui suit, nous allons aborder : Les systèmes à un seul
niveau de répertoire ;
- Les systèmes à répertoire hiérarchique ;
- Les chemins d‟accès ;
- Les opérations sur les répertoires.
Systèmes à un seul niveau de répertoire
Le répertoire le plus basique est celui qui contient tous les fichiers. Il est aussi
appelé répertoire racine (« root directory »). Mais comme il est unique, son nom
n‟a pas beaucoup d‟importance. Un exemple de système avec un répertoire
unique est illustré sur le schéma de Fig.4.9, ci-dessous. Les avantages de ce
schéma sont sa simplicité et l‟aptitude à retrouver rapidement un fichier.
Le système à un niveau de répertoire est exploité dans :
© Kasengedia motumbe pierre 142
Page 143 sur 270
- CDC 6600, le premier super-ordinateur au monde ;
- Appareils intégrés simples, comme un téléphone, appareil photo digital, baladeur,…
Fig.4.9. Système de répertoire à un seul niveau contenant quatre fichiers
Les systèmes à répertoire hiérarchique
Le répertoire unique est acceptable pour de petites applications dédiées (il était
même utilisé dans les premiers ordinateurs personnels), mais pour des
utilisateurs actuels, qui possèdent des milliers de fichiers, il est très difficile de
retrouver quoi que ce soit avec un répertoire unique. Ainsi une structure
hiérarchique (arbre de répertoires) est nécessaire. Elle permet à chaque
utilisateur d‟avoir autant de répertoires qu‟il le souhaite afin de regrouper ses
fichiers de manière logique.
Sur le schéma de Fig.4.10, ci-dessous est décrit un système à répertoire
hiérarchique, où les répertoires A, B, C situés à la racine appartiennent à des
utilisateurs différents, deux d‟entre eux ayant créé.
© Kasengedia motumbe pierre 143
Page 144 sur 270
Fig.4.10. Système à répertoire hiérarchique
Les systèmes de fichiers actuels sont organisés en répertoire hiérarchique, car la
possibilité de créer un nombre élevé de sous-répertoires offre aux utilisateurs un
puissant outil d‟organisation pour leur travail.
Les chemins d’accès
Quand le système de fichiers est organisé en arbre de répertoires, il faut trouver un
moyen pour spécifier les noms de fichiers. Pour ce faire, il existe deux méthodes :
- Chemin d‟accès absolu (absoute path name)
- Chemin d‟accès relatif (relative path name)
© Kasengedia motumbe pierre 144
Page 145 sur 270
Chemin d’accès absolu
Le chemin d‟accès absolu consiste à montrer le chemin, de la racine jusqu‟au fichier.
Dans les systèmes d‟exploitation Windows, UNIX, MULTICS, on peut indiquer le
chemin |usr|ast|courrier de la manière suivante :
Windows \usr\ast\courrier Unix
/usr/ast/courrier MULTICS
>usr>ast>courrier .
Il est important de noter que quel que soit le système d‟exploitation utilisé, si le premier
caractère du chemin d‟accès est le séparateur, c‟est qu‟on a affaire au chemin absolu.
Chemin d’accès relatif
Le chemin d‟accès relatif (relative path name) fonctionne
conjointement avec le répertoire de travail (working directory), aussi appelé répertoire
courant (current directory). Si un utilisateur désigne un répertoire comme un
répertoire de travail, tous les chemins d‟accès qui ne commencent pas à la racine
sont alors relatifs au répertoire courant.
En considérant le chemin absolu /usr/ast/courrier, si le répertoire courant est /usr/ast,
alors pour évoquer le fichier « courrier », on indique seulement courrier.
En d‟autres termes, dans le contexte du système d‟exploitation UNIX, les commandes
cidessous, utilisant le chemin d‟accès absolu et le chemin d‟accès relatif sont
équivalentes :
cp /usr/ast/courrier /usr/ast/courier.bak
et cp courrier courrier.bak.
Naturellement si le répertoire de travail est /usr/ast
Il est bien évident que le chemin d‟accès absolu fonctionnera toujours quel que soit le
chemin d‟accès relatif.
Les opérations sur les répertoires
En nous basant sur UNIX, il y a lieu de relever les opérations suivantes :
1. create
© Kasengedia motumbe pierre 145
Page 146 sur 270
2. delete
3. opendir
4. closedir
5. readdir
6. rename
7. link
8. unlink
create : pour créer un répertoire, qui sera au début vide et contiendra « . » et « .. », qui
sont placés automatiquement pour le système.
delete : permet de supprimer un répertoire. Seuls les répertoires vides peuvent être
supprimés.
opendir : contient un programme de listage qui ouvre le répertoire afin d‟extraire les
noms de tous les fichiers qu‟il contient.
closedir : après avoir lu un répertoire, il est impératif de le fermer avant de libérer
l‟espace dans les tables internes.
readdir : cet appel renvoie la prochaine entrée d‟un répertoire ouvert.
rename : permet de renommer les répertoires, de la même manière que les
fichiers.
link : le lien, permet à un fichier d‟apparaître dans plus d‟un répertoire. Il consiste à
associer à un fichier existant, un chemin d‟accès.
unlink : sert à supprimer le lien qui a été établi par ″link ″. Si le fichier qui est délié
est uniquement présent dans un répertoire (cas normal), il est effacé du système de
fichiers ; s‟il est présent dans plusieurs répertoires, seul le nom du chemin d‟accès
spécifié est effacé, les autres vont continuer à demeurer. Dans UNIX, unlink est
l‟appel système qui sert à effacer des fichiers.
© Kasengedia motumbe pierre 146
Page 147 sur 270
4.3.3. Les fichiers spéciaux caractère (« character special files »)
( A compléter pendant le cours)
4.3.4. Les fichiers spéciaux bloc (« block spécial files »)
( A compléter pendant le cours)
4.4. ACCES ET ORGANISATION BASIQUE DES SYSTEMES DE FICHIERS
Un système de fichier qui stocke une grande quantité de données, doit répondre à un
certain nombre de critères parmi lesquels il y a lieu d‟abord de citer :
- L‟accès rapide pour lire; - Mise à jour convenable; - Economie de stockage.
Par après, nous pouvons aussi prendre en considération d‟autres critères tels que :
- Fiabilité ;
- Maintenance de l‟intégrité.
Dans ce qui suit, nous allons aborder, les différentes méthodes d‟accès et organisation de
fichiers:
- Fichier à accès séquentiel
- Fichier à accès séquentiel-indexé ;
- Fichier à accès indexé ;
- Fichier à accès direct (fichier hashé).
Beaucoup de structures de fichiers rencontrées dans la pratique, peuvent se retrouver
dans les catégories susmentionnées, provenir de leur combinaison.
Fichier à accès séquentiel
Pour un fichier à accès séquentiel, l‟organisation de fichiers est telle que les
enregistrements sont structurés en séquence, selon une clé primaire afin de
localiser un enregistrement le programme doit parcourir le fichier du début
© Kasengedia motumbe pierre 147
Page 148 sur 270
jusqu‟atteindre l‟enregistrement désiré. Un exemple éloquent du fichier séquentiel
est la liste alphabétique de numéro téléphonique dans un répertoire téléphonique
(en ignorant bien sûr, tout index qui pourrait être inclus dans ce répertoire).
A cause de leur inflexibilité, les fichiers séquentiels ne peuvent pas être utilisés pour
une base de données exploitable, mais pour le « backup », par conséquent ne
peuvent pas être stockés dans un disque dur, mais plutôt dans une bande
magnétique. Sur la Fig.4.11 est représenté le fichier séquentiel.
Fig.4.11. Fichier séquentiel
Fichier indexé
Dans une organisation de fichiers indexés les enregistrements sont stockés
séquentiellement ou non séquentiellement. L‟index va permettre au programme de
localiser les enregistrements individuels. Comme un catalogue, dans une librairie, un
index et une taille utilisée pour déterminer l‟emplacement de la rangée où se trouverait
le livre.
© Kasengedia motumbe pierre 148
Page 149 sur 270
Fig.4.12. Organisation du fichier indexé
Fichier séquentiel indexé
Le fichier séquentiel indexé a été conçu pour surmonter la limitation liée au
problème du temps d‟accès inhérent à l‟organisation séquentielle de fichiers. C‟est
ainsi qu‟on introduit l‟index qui permet un accès aléatoire, avant de procéder à un
parcours séquentiel.
Fig.4.13. Fichier séquentiel indexé
Sur le schéma ci-dessus est décrit le principe d‟un fichier séquentiel indexé.
© Kasengedia motumbe pierre 149
Page 150 sur 270
L‟organisation de fichiers séquentiels-indexés peuvent être bien supplémentée dans
un disque dur (HDD), comme nous pouvons le constater sur la Fig.4.14. ci-dessous.
Nous pouvons constater que l‟accès indexé du maitre index au cylindre, se fait
d‟une manière aléatoire, au niveau d‟un cylindre, on peut précéder un accès
séquentiel.
Fig.4.14. Fichiers séquentiels indexés implémentés sur un disque dur
Un fichier à accès direct (fichier hashé)
Dans un fichier à accès direct (hashed file, fichier hashé), l‟adresse de chaque
enregistrement est déterminée par la fonction Hash, l‟algorithme « Hashing », tel
que nous pouvons le constater sur la figure ci-dessous.
© Kasengedia motumbe pierre 150
Page 151 sur 270
Fig.4.15. Fichier à accès direct (fichier hashé)
Analyse comparative de différentes organisations des fichiers
Organisation de fichiers
Critères Séquentiel Indexé Hashé
Espace de Pas de gaspillage Pas gaspillage pour Pour permettre
stockage data, mais extra l‟addition,
pour index l‟effacement des
enregistrements
après chargement
initiale ensemble
d‟enregistrements
Retrait séquentiel Très rapide Modérément Impraticable à moins
sur clé primaire rapide d‟utiliser « hash index
»
Retrait aléatoire Impraticable Modérément Très rapide
sur clé primaire rapide
© Kasengedia motumbe pierre 151
Page 152 sur 270
Retrait sur Possible, exige de Très rapide avec Pas possible au lieu
multiples clés parcourir tout multiples indexes d‟utiliser « hash
le fichier index »
Effacement Peut créer Facile si espace Très facile
enregistrement espace gaspillé peut être
on exige dynamiquement
réorganisation alloue, mais exige
maintenance des
indexes
Ajout nouvel Exige réécriture Idem Très facile, mais
enregistrement du… multiple clés
Travail
supplémentaire
Modifier Généralement, Facile, mais
enregistrement exige réécriture exige la
du fichier maintenance des
indexes
Fig.4.15. Analyse comparative organisation fichiers
Dans le schéma de la fig. ci-dessus est ressentie une analyse comparative des
organisations de fichiers séquentiels, indexés et hashé. L‟organisation de fichiers
séquentiels indexés combine les avantages des fichiers séquentiels et indexés.
© Kasengedia motumbe pierre 152
Page 153 sur 270
CHAP 5. LES OPÉRATION D’ENTRÉES SORTIES
5.1. GESTION DES PÉRIPHÉRIQUES
5.1.1. Comment le système d’exploitation interagit avec les périphériques La gestion
des périphériques représente peut-être le défi le plus important d‟un système
d‟exploitation. Ce dernier doit contrôler tout un ensemble de périphériques avec les
différences multidimensionnelles telles que :
- La rapidité du périphérique ;
- Volume d‟informations ;
- Service proposé ;
- Direction du flux d‟informations; - Protocoles de communication.
Le système d‟exploitation doit pouvoir traiter un grand nombre de périphériques. Sur
certains systèmes de centaines de périphériques différents peuvent potentiellement
être connectés à la machine, chacun nécessitant une prise en charge propre par le
système d‟exploitation. L‟ensemble de cette gestion doit par ailleurs se dérouler
dans un environnement parallélisé. Les périphériques agissent, en général,
indépendamment de l‟unité centrale en fonction de leur propre synchronisation. Le
système d‟exploitation, qui la plupart de temps, s‟exécute sur une seule unité
centrale, doit donc gérer des requêtes simultanées en provenance d‟un grand
nombre de périphériques.
Bien qu‟elle doit traiter des ensembles divers de périphériques, l‟abstraction
présentée aux applications doit être la plus indépendante possible de ces
périphériques. Les caractéristiques physiques d‟un disque dur(HDD), CD-ROM,
imprimantes, etc… peuvent varier longuement, mais les applications doivent être
capables de lire ces périphériques ou d‟y écrire, comme s‟ils étaient tous identiques.
© Kasengedia motumbe pierre 153
Page 154 sur 270
5.1.2. Principe pour connecter un périphérique à un système à microprocesseur
Les périphériques utilisés dans un système à microprocesseurs, peuvent être
classifiés en : - Périphériques de stockage (HDD, CD-ROM, bande
magnétique)
- Périphériques conversationnels (clavier + écran, terminal vidéo ou écran tactile,
…) ;
- Périphérique temps réel (utilisé par les systèmes à microprocesseurs pour la
commande de processus industriel, CAN(Convertisseur Analogique Numérique),
CNA(Convertisseur Numérique Analogique), moteur,…).
-
- Sur la Fig.5.1, est décrite la structure de principe pour connecter un périphérique
(un processus industriel à un système à microprocesseurs.
© Kasengedia motumbe pierre 154
Page 155 sur 270
Interface
Contrôleur (unité Périphérique
de commande) (processus
industriel)
Bus système (Data, address, control)
Afin d‟être un plus pragmatique, considérons que le périphérique (ou processus) à
commander Fig. 5.1. Structure de principe pour connecter un périphérique à un est une
imprimante, laquelle est divisée en deux partiessystème à microprocesseur :
- Partie mécanique ;
- Partie électronique.
Afin de commander les moteurs appartenant à la partie mécanique ; la partie
électronique, constituée de circuits électroniques de commande, aussi appelée
contrôleur, doit par exemple être capable de mener les actions ci-après :
- Déterminer le moment quand on doit imprimer un caractère ;
- Déterminer la correctitude du caractère reçu (gestion d‟erreur de transmission) ;
- Déplacement de la tête d‟impression, après que chaque caractère ait été
imprimé ; - Vérifier si une feuille de papier est présente.
- Placer la tête au début d‟une ligne,…
La connexion du contrôleur au système à microprocesseur s‟effectue par l‟intermédiaire
d‟un ensemble de signaux appelés interface.
© Kasengedia motumbe pierre 155
Page 156 sur 270
L‟interface peut être standardisée ou non standardisée.
5.1.3. Interfaces standard
Les interfaces standard peuvent être classifiées, en fonction de modalités
d‟information vers ou du périphérique. Ainsi, on peut parler d‟interface sérielle,
parallèle,… elles sont programmables, c‟est-à-dire leurs fonctionnalités sont fixées
par un programme.
Dans la catégorie des Interfaces standard, nous pouvons citer:
- PIO (Parallèle Input Output) ;
- PIA(Programmable Interface Adapter) ;
- PPI (Programmable Peripheral Interface) ;
- UART (Universal Asynchronous Receiver Transmitter);
- USART (Universal Synchronous Asynchronous Receiver Transmitter);
- ACIA (Asynchronous Communications Interface Adaptater);
TD : pour les interfaces susmentionnées, veuillez préciser
- L‟organisme de standardisation ou la société à la base du standard ;
- Son historique;
- Les produits technologiques ayant été vendus sur le marché ; - Compatibilité aux
microprocesseurs connus; - Les applications.
Sur la Fig.5.2., est décrite la structure de principe pour une interface en général,
l‟interface d‟un périphérique a besoin de plusieurs ports, par conséquent de plusieurs
adresses :
- Une adresse ou deux pour le port d‟entrée, sortie de data (données) selon que
la liaison est bidirectionnelle ou de deux ports unidirectionnels.
- Une adresse pour un port de sortie qui va contenir un mot de commande pour le
périphérique.
Puisque l‟état d‟un périphérique peut être exprimé par un ou deux indicateurs on
peut procéder à la réunification des indicateurs de plusieurs périphériques pour
former un registre, ayant un port commun avec une seule adresse. De la même
manière les signaux de commande pour plusieurs périphériques, peuvent relever
© Kasengedia motumbe pierre 156
Page 157 sur 270
d‟un seul port pour un système avec un nombre réduit de ports, où nous avons un
mot d‟adressage A7, A6, …, A2 pour la sélection linéaire de
6 interfaces ;
A1A0 pour identifier 4 ports de chaque interface
Sur le tableau de la Fig.5.3 est présentée la sélection linéaire de 6 interfaces et 4 ports /
interface.
BUS DE DATA
Logique de
sélection
Buffer d‟entrée Buffer de
sortie
PE
BUS ADRESSE RI
}
PH
BUS CONTROL ER
IQ
UE
Fig 5.2. Structure de Principe d‟une interface
Fig.5.3. Sélection linéaire de 6 interfaces et 4 Ports/interface
A7A6 A5 A4 A3 A2 A1 A0 Ressource adressée
© Kasengedia motumbe pierre 157
Page 158 sur 270
0 0 0 0 0 1 0 0 Interface 1 et 4 Ports différents
0 0 0 0 0 1 0 1
0 0 0 0 0 1 1 0
0 0 0 0 0 1 1 1
0 0 0 0 1 0 0 0 Interface 2 et 4 Ports différents
0 0 0 0 1 0 0 1
0 0 0 0 1 0 1 0
0 0 0 0 1 0 1 1
0 0 0 1 0 0 0 0 Interface 3 et 4 Ports différents
0 0 0 1 0 0 0 1
0 0 0 1 0 0 1 0
0 0 0 1 0 0 1 1
1 0 0 0 0 0 0 0 Interface 6 et 4 Ports différents
1 0 0 0 0 0 0 1
1 0 0 0 0 0 1 0
1 0 0 0 0 0 1 1
5.1.4. Contrôleur de périphériques
Dans le modèle le plus simple le contrôle des Entré/Sortie, l‟unité centrale de traitement
(CPU) communique directement avec les périphériques d‟entrée/sortie. Le CPU
prend en charge le contrôle de moindres détails de l‟opération périphérique. Ce type
de communication est de plus en plus rare ; on la trouve peut-être encore dans les
systèmes embarqués, contrôlés par microprocesseur et extrêmement spécialisés.
Dans un PC, le CPU Communique avec un contrôleur de périphériques. Une
commande classique du CPU ou contrôleur, peut être le lancement d‟une opération
de lecture pour un octet d‟informations depuis un appareil ou celle d‟un secteur
© Kasengedia motumbe pierre 158
Page 159 sur 270
d‟informations depuis un disque. Le contrôleur de périphériques transmet au
périphérique les commandes plus détaillées, nécessaires à la réalisation de
l‟opération rapide. En déchargeant cette responsabilité d‟E/S sur le contrôleur, le
CPU est libre d‟accomplir simultanément d‟autres taches de traitement. Chaque
contrôleur d‟entrées/sorties est spécifiquement conçu pour gérer un type particulier
de dispositif. Ses capacités sont limitées et intégrées au contrôleur. La plupart de
contrôleurs peuvent servir plusieurs périphériques.
5.1.5. Registre de modules, contrôleurs de périphériques d’Entrée/sortie
Le nombre et la fonction des registres des modules dépendent des modules
d‟Entrée/Sortie impliqués. Le module d‟un dispositif simple d‟Entrée/Sortie peut disposer
de deux registres :
• Registre de données ;
• Registre de contrôle ;
Registre de données
Le registre de données est utilisé comme mémoire tampon, qui stocke la donnée à
échanger entre le CPU et le module d‟Entrée/Sortie.
Registre de contrôle
Le registre de contrôle contient les bits utilisés par le processeur central pour commander
le module d‟Entrée/Sortie.
Parmi les fonctions des bits du registre de contrôle, il y‟ a lieu de citer :
Activer, réinitialiser l‟appareil ;
Lancer une opération de lecture ;
Communiquer le statut du périphérique au CPU ;
Signaler la finie d‟une opération ;
Indiquer différents types de conditions d‟erreurs.
© Kasengedia motumbe pierre 159
Page 160 sur 270
Les modules contrôlant des dispositifs plus complexes, peuvent comporter un nombre de
registres supérieur à deux.
5.2. TYPES DE TRANSMISSION
5.2.1. Introduction
IL existe plusieurs critères pour classifier les types de transmission entre la carte de
communication d‟un ordinateur, émetteur et l‟extérieur. Parmi les types les plus
connus, il y‟a lieu de citer :
- Transmission parallèle ;
- Transmission série ;
- Transmission asynchrone ;
- Transmission synchrone ;
- Mode de transmission physique (simplex, half-duplex, full-duplex).
Dans ce qui suit nous allons expliquer les modes de transmission susmentionnés.
5.2.2. Transmission parallèle
Elle consiste à l‟envoi de 8 bits de données en parallèle, en utilisant un fil séparé
pour chaque bit. Ce mode de transmission est avantageux car on gagne en vitesse,
mais ne permet pas une transmission à longue distance. Elle peut être utilisée, par
exemple, entre un ordinateur et une imprimante. Sur le schéma de la Fig.5.4, est
illustré le principe de la Transmission
parallèle. 1
0 0
1 1
1
0
2 2
0
3 3
4 0
4
5 1 5
6 6
© Kasengedia motumbe pierre 160
Page 161 sur 270
N.B. : 1≈5v
0 ≈ 0.2v
Unité source Unité destination
Fig.5.4. Transmission parallèle
5.2.3. Transmission sérielle
Si la distance entre les équipements s'agrandit, à cause du coût et de la
variation du délai de propagation du signal sur chaque câble (fil) individuel, on fait
appel à la transmission sérielle. En transmission sérielle, les données sont
transmises bit par bit dans un seul câble, de DTE source vers DTE destination. Mais
on utilise une paire de câbles, le deuxième étant utilisé comme niveau de référence
(Fig.5.5.a). Avant le transfert de données par le port série, elles subissent au niveau
de DTE source une conversion parallèle-série et au DTE destination, une conversion
série-parallèle, comme illustré à la Fig.5.5.b.
0 00 10 1 1 0
Source DTE
Destination
Signal de
Fig.5.5.a Transmission sérielle
© Kasengedia motumbe pierre 161
Page 162 sur 270
Fig.5.5.b. Conversion parallèle-série, à la source, série- parallèle, à la destination
5.2.4. Transmission asynchrone
La transmission asynchrone est un mode de transmission utilisé pour envoyer une
information caractère par caractère, d'une manière aléatoire. Par exemple, un
utilisateur actionnant sur les tastes d'un "clavier", envoie les caractères en
intervalles aléatoires de temps. Chaque caractère transmis est en capsulé entre un
bit start et un ou plusieurs 'stop bit'. Sur la Fig.5.6., est décrit le caractère utilisé pour
la transmission asynchrone.
© Kasengedia motumbe pierre 162
Page 163 sur 270
Stop bit
Start bit Start bit
Fig.5.6. Caractère utilisé pour la transmission asynchrone
Exemple
Considérons une situation où on a 1 bit start, 7 bits données, 1 bit parité, 2 bits stop;
supposons que nous envoyons 1100 bits dans un canal de communication. Quel
sera le taux d'utilisation du canal?
Solution
La situation évoquée ci-dessus nous donne un total de 11bits (= 1 +7+ 1 +2), dont 7
bits de données. Le taux d'utilisation utile est le rapport entre le nombre de bits de
données et le nombre total de bits: 7/11 = 0,63 = 63 %
5.2.5. Transmission synchrone
L'exercice de la section 1.7.3, démontre combien la transmission asynchrone n'est
pas efficiente du point de vue de l'utilisation de la capacité de la transmission,
surtout lorsqu'on veut transmettre un message contenant de vastes blocs des
caractères. La transmission synchrone est utilisée pour dépasser ce handicap.
Au lieu de fonctionner avec des caractères, elle utilise un bloc de données appelé
trame, dans laquelle on intègre des caractères dépourvues de bits start et stop. De
cette manière, les données envoyées sous forme de trames, utiliseront mieux la
© Kasengedia motumbe pierre 163
Page 164 sur 270
capacité du canal de transmission. Sur la Fig.5.7, est présenté un format d'une
trame de données.
GESTION
SYN ENTETE STX X CARACTERES ETX D‟ERREURS SYN
Fig.5.7. Format général d'une
trame
5.2.6. Mode de transmission physique (simplex, half-duplex, full-duplex)
Les Mode de transmission physique peuvent être classifiés en trois modes de
communication:
Simplex ;
half-duplex ; full-duplex.
1) Mode simplex (unidirectionnel)
L'information est envoyée dans un seul sens. C'est ainsi que pour ce mode de
transmission décrit a la Fig.5.8., on peut utiliser le code correcteur d'erreurs au niveau du
récepteur.
POSTE POSTE
EMETTEUR RECEPTEUR
Fig.5.8. Mode de transmission simplex
2) Mode half duplex ou semi-duplex (bi directictionnel alterné)
Fig.5.9. présente le Mode de transmission half duplex ou semi-duplex ou bidirectionnell
alterné. Les deux postes se comportent différemment:
si le poste A est émetteur, le poste B sera récepteur;
© Kasengedia motumbe pierre 164
Page 165 sur 270
si le poste B est émetteur, le poste A sera récepteur.
EMETTEUR RECEPTEUR
OU
RECEPTEUR EMETTEUR
Fig.5.9. Mode half duplex ou semi-duplex (bidirectionnel alterné)
3) Mode full duplex (bidirectionnel simultané)
Le full duplex est le duplex intégral. Quand l‟émetteur est en train d'émettre, il pourra
aussi recevoir.
Sur la Fig.5.10. est décrit le Mode de transmission full duplex (bidirectionnel simultané).
EMETTEUR RECEPTEUR
ET
RECEPTEUR EMETTEUR
Fig.5.10. Mode de transmission full duplex (bidirectionnel simultané)
5.3. Opérations d’Entrées/Sorties de base
Dans un ordinateur un système à microprocesseur, le CPU est obligé d‟échanger des
informations avec le monde extérieur, et les traiter.
Une fois les informations traitées, elles peuvent être affichées ou acheminées pour
commander différents appareils. Dans ce qui suit nous allons présenter différentes
techniques algorithmes, boitiers pour réaliser des opérations des Entré/Sorties
© Kasengedia motumbe pierre 165
Page 166 sur 270
5.3.1. Entrées-Sorties spéciales contre entrées-sorties projetées/mappées sur la mémoire.
Selon la manière dont le CPU adresse un périphérique d‟Entrées/Sorties, on peut
distinguer deux cas :
- Entrée /Sorties projetées/mappées en mémoire
- Entrées/Sorties spécialisées
5.3.1.1. Entrées/Sorties projetées en mémoire
Dans ce cas d‟espèce l‟équipement d‟Entrée/Sortie est perçu comme une adresse de
mémoire. Un port d‟entrée sortie est considéré comme une adresse mémoire.
Généralement on réserve les dernières adresses de l‟espace mémoire pour adresser de
l‟espace mémoire pour adresses les ports d‟Entrées/sorties.
Les signaux MEMR, MEMW utilisés habituellement pour lire le contenu de la
mémoire, ou écrire dans une case mémoire seront utilisés pour agir sur les ports
d‟Entrées sorties, lire ou écrire une donnée. Sur le schéma de la Fig.5.11, est illustré
le principe des entrées-Sorties projetées en mémoire. Il convient de noter que bit
d‟adresse A15 est utilisé pour produire les signaux I/OR (Input output/Read), I/OW
(Input output/Write) destinés à la lecture, respectivement l‟écriture d‟un mot du port
d‟Entrée/Sortie.
© Kasengedia motumbe pierre 166
Page 167 sur 270
Vers
mémoire
I/OR Vers
E/S
I/OW
A15
Fig.5.11. Entrées/Sorties projetées en mémoire
Il convient de noter que si A15 est égal à « 1 » toutes les adresses sur les bits A0 à
A14, spécifieraient un périphérique, mais si A15 =0, A0-A14 sélectionnent une position/
case mémoire.
5.3.1.2. Entrées-Sorties spécialisées
Dans le cas d‟instructions d‟entrées sorties spécialisées ; le processeur central
envoie des signaux de contrôle qui indiquent que le cycle en cours concerne les
entrées sorties et non la mémoire. C‟est ainsi qu‟au lieu que le CPU, utilise les
signaux MEMR, et MEMW, pour commander une unité d‟entrée-sortie, il va utiliser
des signaux spécialisés, notamment : - IOR (Input Output Read) : pour lire un mot
d‟un port d‟entrée-sortie ;
- IOW (Input Output Write) : pour écrire un mot dans un port d‟entrées/sortie.
Sur le schéma de la Fig.5.12., est décrit le principe d‟Entrées-sorties spécialisées.
© Kasengedia motumbe pierre 167
Page 168 sur 270
Le bus adresse sélectionnera un registre, un emplacement dans le périphérique. Le
bus de contrôle va spécifier quelle est l‟opération qui doit être effectuée. Ceci est la
conception standard dans la plupart des systèmes à microprocesseur.
VERS
MEMOIRE
VERS
E/S
Fig.5.12. Entrées-sorties spécialisées
5.3.2. Interfaces standards
5.3.2.1. PIO (Programmable Input Output) Intel 8255
PIO I8255 est un composant de catégorie de circuits intégrés LSI (voir Fig.5.13). Il
comprend 24 lignes d‟Entrée/Sortie, pouvant s‟interfacer directement avec tout
circuit compatible TTL. Le microprocesseur peut écrire „‟0‟‟ ou „‟1‟‟ sur n‟importe
quelle ligne série ou, lire l‟état de n‟importe quelle ligne d‟entrée. Préalablement à
son utilisation, le microprocesseur doit configurer le 8255A, en écrivant dans un ou
plusieurs registres internes programmables. Les 2 lignes d‟adresses assurent la
sélection d‟un de 4 registres interne (A, B, C et un registre de commande
(programme)). Ce dernier dernier détermine les ports qui seront utilisés entrées et
ceux qui feront office des sorties.
© Kasengedia motumbe pierre 168
Page 169 sur 270
8
CS
Port A
A0-A1
8
PIO
WR Port B
8255A
RD
8
RESET Port C
D0-D7
Fig.5.13. PIO 8255A d‟Intel
Le composant circuit LSI, PIO exécute les fonctions suivantes :
- Décodage d‟adresse
- Mémorisation et multiplexage de données en entrée et en sortie « prise de contact
»
- Sur le schéma de la Fig.5.14.. Est présentée la structure de I8255
Fig.5.14. Structure interne de I8255
© Kasengedia motumbe pierre 169
Page 170 sur 270
Chacun de principaux constructeurs de microprocesseurs a sa propre version d‟interface
parallèle programmable (« PIO »). Tous ont des fonctions similaires.
Il convient de signaler que ce circuit peut être utilisé pour la commande de processus
industriels, notamment celle d‟un robot industriel. Sur la Fig.5.16a est décrit le
principe de l‟utilisation d‟une interface de commande par programme d‟un petit
robot dont les degrés de liberté sont commandés par de moteurs pas a pas.
Comme vous pouvez le constater sur la figure, un amplificateur de puissance amplifie le
courant faible venant du I8255 pour obtenir un courant suffisant pour les moteurs pas a pas.
Il convient de nous rappeler que le moteur pas à pas est commande par une suite
d‟impulsions qui détermine son mouvement dans un sens, ou dans un autre. Enfin,
sur la Fig.5.16b est expose un tableau décrivant la séquence d‟impulsions qui doit
être envoyée pour faire tourner un moteur dans le sens horaire et anti-horaire. Φ1, Φ2,
Φ3, Φ4 représentent les quatre bobines du moteur pas à pas du robot. Le
traducteur X/Tension permet de réguler le mouvement de
ROBOT
Micro Interface AMPLIFICATEUR avec
ordinateur avec DE PUISSANCE moteur pas
I8255I à pas
TRADUCTEUR
CAN
X / TENSION
Fig.5.16a. Interface entre un micro-ordinateur et un robot (avec moteur pas à pas)
différents moteurs, traduisant les déplacements en tension, avant qu‟un CAN
(Convertisseur Analogique Numérique) puisse convertir la tension en donnée
numérique exprimant le déplacement du moteur.
Sens anti-
Sens horaire
horaire
Φ1 Φ2 Φ3 Φ4 Φ1 Φ2 Φ3 Φ4
1 0 0 1 1 0 0 1
© Kasengedia motumbe pierre 170
Page 171 sur 270
1 1 0 0 0 0 1 1
0 1 1 0 0 1 1 0
0 0 1 1 1 1 0 0
Fig.5.16b. Séquence d‟impulsions pour faire tourner le moteur pas à pas dans le sens
horaire, anti-horaire.
5.3.2.2. UART (Universal Asynchronous Receiver transmitter), USART (Universal
Asynchronoums synchronous Receiver Transmitter)
5.3.2.2.1. Principe de fonctionnement d’un UART et USART
Plusieurs périphériques exigent des communications sérielles : clavier ; disque ;
bandes magnétiques ; carte réseau, etc… Alors que dans l‟ordinateur, les données
sont transmisses entre le CPU et les différents modules d‟Entrées/Sorties en mode
parallèle. En vue de réaliser ce desideratum, on fait appel aux UART (Universal
Asynchronous Receiver Transmitter) et USART (Universal Synchronous
Asynchronous Receiver Transmitter), qui ont comme fonctions essentielles la
conversion:
- série–
parallèle ; -
parallèle–série.
D‟une manière plus explicite, il s‟agit de :
1) prendre une série de bits, venant de l‟extérieur, via liaison serielle, et la co
vertir en données parallèles, qui seront injectées dans le bus data de l‟ordinateur.
Cette fonctionnalité est appelée SIPO (Serial In Paralel Out)
2) accepter les données en parallèle, provenant du bus data de l‟ordinateur et les
convertir en une série de bits comportant éventuellement : un bits start, un bit de
© Kasengedia motumbe pierre 171
Page 172 sur 270
parité et des bits de stop, pour les envoyer sur une liaison sérielle, attachée a
l‟extérieur. Cette fonctionnalité est appelée PISO (Paralel In Serial Out)
UART et USART fonctionnent de la même manière, à la seule différence, que USART
peut aussi réaliser de la transmission synchrone.
Sur la Fig.5.17. est exposée la structure d‟un UART
Il convient de noter que les fonctionnalités USART sont incluses dans de cartes de
Entrée série
Horloge Récepteur Sortie parallèle
Entrees/Sorti Emetteur Sortie série
es parallèles
Contrôle Signaux d‟état
Fonctions de
commandes
Fig.5.17. Structure d‟un UART
communication comme : carte Ethernet, carte HDLC,….
Comme Exemples UART, il y‟a lieu de citer :
- ACIA (adaptateur interface pour communications asynchrones)
- ML6850 (de Motorola)
Comme USART le circuit d‟Intel : I8251
5.3.2.2.2. I8251 (un USART standard
Sur la Fig.5.18a., sont présentés la structure et les signaux du circuit intégré I8251,
proposé par la société INTEL.
© Kasengedia motumbe pierre 172
Page 173 sur 270
Le circuit USART I8251 permet l‟émission et la réception synchrone des données en
plus de la transmission asynchrone.
Ainsi, Il est important de noter que USART = UART + USRT.
USART I8251 a cinq registres internes :
-données reçues ;
-données à émettre ;
-mode
-état
-commande
Au démarrage, le premier octet de commande envoyé au 8251 va établir le mode
(synchrone ou asynchrone). L‟octet de commande suivant va être mémorisé comme
commande. La commande spécifie la longueur de mots et d‟autres paramètres. Le
tableau de la Fig.5.18b, fournit la table de vérité des signaux de commande du bus
du 8251.
Intérieur Micro-ordinateur
EMMETEUR TxD
RxD
RECEPTEUR
D0-D7 TAMPON BUS
DONNEES
RESET
CLK
C/
© Kasengedia motumbe pierre 173
Page 174 sur 270
Fig.5.18a. La structure et les signaux du circuit intégré I8251
C/D RD WR CS OPERATION
0 0 1 0 8251 TO DATA BUS (READ)
0 1 0 0 DATA BUS TO 8251 (WRITE)
1 0 1 0 STATUS TO DATA BUS
1 1 0 0 DATA BUS TO CONTROL
- - - 1 DATA BUS TO 3 – STAT
Fig.5.18b. table de vérité des signaux de commande du bus de I8251.
Sur la Fig.5.19, est proposé une manière d‟interconnecter le circuit I8251 avec par
exemple le microprocesseur I8080. Comme vous pouvez le constater, on a montré
essentiellement la connexion aux trois principaux bus (DATA, ADDRESS,
CONTROL)
© Kasengedia motumbe pierre 174
Page 175 sur 270
CONTROL BUS
ADDRESS BUS
DATA BUS
8251
TxD CRT
CRT
Terminal
RxD controller Keyboard
RxC BAUD RATE
TxC GENERATOR
Fig.5.19. Interface I8251 au Microprocesseur I8080
5.3.3. Méthodes de contrôle des opérations d’entrées-sorties
5.3.3.1. Polling, Entrée/sortie programmée, par sondage (« scrutation »)
Pour ce type de transfert, le CPU commence par interroger si une unité d‟E/S est
prête pour une opération d‟entrée/sortie. Le transfert de données de CPU vers l‟unité
E/S ou de l‟unité E/S vers le CPU s‟effectuera suivant la logique de Fig.5.20. a, b. Le
transfert, implanté en software, est totalement contrôlé par le CPU, car les données
passent par le CPU du système
(généralement via l‟accumulateur) .Un désavantage majeur de cette méthode est que le
transfert est relativement lent est mobilisé entièrement le CPU.
Le transfert de données par CPU est aussi appelée polling, methode interrogative, ou
entréesortie programmée.
© Kasengedia motumbe pierre 175
Page 176 sur 270
P1
P2
CPU
Fig.5.20.a. Méthode d‟Entrée/Sortie Polling.
Pn
MEMOIRE
CPU
P1E/S P2E/S P3 E/S
Fig.5.20.b Méthode d‟Entrée/Sortie Polling.
En entrées-sorties programmées, tous les transferts vers les périphériques, en
venant d‟eux, sont effectives par le programme. Le processeur envoie et demande
les données, toute l‟opération d‟entrée-sortie est sous le contrôle du programme qui
s‟exécute.
La méthode de base pour déterminer si une opération est nécessaire, ou possible
est d‟avoir recours aux indicateurs « flags » un indicateur est un bit qui lorsqu‟il est à
un signifie qu‟une condition qui nécessite l‟attention s‟est présentée. Par exemple :
- Pour un périphérique d‟entrée, l‟indicateur, peut indiquer que « le tampon est
plein » donc le périphérique est prêt ;
- Pour un périphérique de sortie, l‟indicateur peut montrer que le tampon est
vide », donc le périphérique est prêt
© Kasengedia motumbe pierre 176
Page 177 sur 270
L‟indicateur est continuellement examiné par le programme : c‟est le « sondage ».
La caractéristique de cette approche est d‟utiliser un minimum de hardware au prix
d‟une forte surcharge software. Sur la Fig.5.20c. sont présentés les Indicateurs «
flags » utilisés dans le Polling
EP1 CPU
EP2
EP3
EP4
EP5
EP6
EP7
EP8
Fig.5.20c. Indicateurs « flags » utilisés dans le Polling
Un port est utilisé pour indiquer l‟état prêt des périphériques.
La méthode simple de lecture des indicateurs consiste à porter sur le bus de données
les états « prêt » de huit périphériques lorsqu‟on exécute l‟instruction « lecture des
états ».
© Kasengedia motumbe pierre 177
Page 178 sur 270
Le port ou on lit les états peut être n‟importe quelle adresse convenablement
décodée. Quand le registre a été lu le programme examine chaque bit, et se branche
sur la routine de service convenable, si c‟est nécessaire.
L‟ordinogramme d‟une boucle d‟interrogation apparait sur la Fig.5.21. , le
programme boucle continuellement à travers une série de tests pour déterminer si
une série de tests pour déterminer si une entrée-sortie peut, on doit être effectuée.
Quand un périphérique ayant besoin qu‟on s‟occupe de lui est trouvé la routine de
service adéquate est activée, les sondages recommencent lorsqu‟elle est activée.
P1 OUI
Demande
service
NON Routine service
O U I
OUI
P2
Demande
service
NON
Routine service
. O U I
OUI
P3
Demande
service
NON Routine service
O U I
Fig.5.21. Ordinogramme de la boucle d‟interrogation
© Kasengedia motumbe pierre 178
Page 179 sur 270
5.3.4. Opération d’Entrée-sortie par interruption
5.3.4.1. Principe d’Opération d’Entrée-sortie par interruption
La Méthode d‟Entrée-sortie programmée a deux limitations :
1. Elle fait perdre du temps au processeur puisqu‟il examine chaque fois l‟état de tous
les périphériques le plus souvent inutilement.
2. Elle est lente par essence puisqu‟on vérifie l‟état de tous les périphériques avant de
revenir à l‟un d‟entre-eux.
Cela peut être implémentable dans certains systèmes « temps réel », ou un
périphérique exige d‟être servi dans un temps donné. En particulier quand un
système inclut des périphériques rapides, des entrées-sorties programmées peuvent
n‟être pas assez rapides. Des périphériques rapides comme les disques HDD ou les
écrans exigent un temps de réponse presque instantané pour transférer des
données sans perte d‟information.
Le sondage est un mécanisme synchrone, alors que l‟interruption est un mécanisme
asynchrone. Le principe de l‟opération d‟Entrée-sortie par interruption est illustré à la
Fig.5.22. Le contrôleur de chaque périphérique est relié à une ligne d‟interruption
par la quelle, il transmet une demande d‟interruption ou microprocesseur, en
générant une impulsion, s‟il a besoin d‟être servi.
© Kasengedia motumbe pierre 179
Page 180 sur 270
MEMOIREMEMO
IRE
CPUCPU
P1E/SP P2E/SP P3
1E/S 2E/S E/SP3
Fig.5.22. Principe d‟une opération d‟entrée-sortie par Interruption
Le microprocesseur examine s‟il y‟a des interruptions à la fin de chaque instruction.
S‟il y‟a une interruption, il va la traiter sinon va chercher l‟instruction suivante ceci
est illustré sur la Fig.5.23.
© Kasengedia motumbe pierre 180
Page 181 sur 270
CPU EXECUTE
INSTRUCTION
REQUET OUI INTERR NO
E UPTION N
INTERR MASQUE
UPTION E
NO
N
PROCHAINE Traitement
INSTRUCTION Interruption
Fig.5.23. Comment CPU vérifie une requête d‟interruption
Afin de résoudre problème de niveaux de priorités entre différents périphériques a
été introduit le PIC (Programmable Interrupt Controller) (Contrôleur d‟interruption
programmable) , auquel tous les périphériques devront envoyer leur requête
d‟interruption.
Après que ce dernier ait été saisi de la demande d‟un périphérique, il transmet une
interruption au CPU, via par exemple le signal INT (INTerrupt request) . Si celui-ci est
d‟accord, il lui envoie une reconnaissance de l‟interruption INTA (INTerrupt
Acknowledge). Le microprocesseur arrêtera le programme principal pour exécuter le
sous-programme, la sous-routine, attachés au périphérique demandeur.
Avant de lancer ce sous–programme, il commence d‟abord à sauver le contexte de
son programme principal. Une fois terminée l‟exécution du sous-programme
d‟interruption, il va restaurer le contexte sauvegardé, dans le but de reprendre le
programme principal au niveau auquel il a été interrompu, dans le même contexte
connu avant son interruption.
© Kasengedia motumbe pierre 181
Page 182 sur 270
Il convient de noter que sauver le contexte, consiste à sauver généralement dans une
pile, certaines données importantes du programme, se trouvant dans les composants ci-
après du microprocesseur :
- CO (compteur Ordinal), qui garde en permanence l‟adresse de l‟instruction suivante
à exécuter ;
- Registre AC (Accumulateur) ;
- RI (Registre d‟instruction) ;
- PSW (Programme status) ; - De différents registres généraux.
Dans l‟hypothèse où, on n‟ait pas besoin de beaucoup de niveaux d‟interruption, un
périphérique peut envoyer directement un signal d‟interruption au CPU, sans passer
par un circuit de type PIC, tel que nous l‟avions évoqué précédemment.
Fig.5.24. présente un schéma simplifié d‟un système utilisant un contrôleur
d‟interruption (PIC). Il convient de noter que le PIC résout aussi le problème de
conflits entre différents périphériques qui initient l‟interruption en même temps
P1
INT IREQ1
CPU PIC IREQ2
INTA P2
IREQn
Pn
DONNEES
ADRESSE
Fig.5.24. Méthode d‟Interruption via PIC.
Si un système utilise plus de 8 périphériques, les circuits PIC peuvent être mis en cascade,
comme nous pouvons le constater sur la Fig.5.25.
© Kasengedia motumbe pierre 182
Page 183 sur 270
© Kasengedia motumbe pierre 183
Page 184 sur 270
INT Cascade (I8259
IRQ0
PIC
IRQ1
IRQ
IRQ0 2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ0
PIC
IRQ1
IRQ
IRQ0 2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ0
PIC
IRQ1
IRQ
IRQ0 2
IRQ3
IRQ4
IRQ5
IRQ6
Fig.5.25. Pour un système avec plus de 8 périphériques, les circuits PIC sont mis en
cascade
5.3.4.2. PIC (Programmable Interrupt Controller) I8259, contrôleur d’interruption
proposé par INTEL
© Kasengedia motumbe pierre 184
Page 185 sur 270
Horloge
IR0
INT Clavier
IR1
INTA IR2
MICRO
RD 8259A IR3
CONTROLER
PROCESSEUR
WR D‟INTERRUPTION IR4
A0 IR5
CS IR6 Disque
D0-D7 +5V IR7 Imprimante
Fig.5.26. Utilisation de 8259A d‟Intel comme contrôleur d‟interruptions
Le principe du „‟transfert par interruption‟‟ a été déjà expliqué. Le circuit Intel I8259A
présenté à la Fig.5.26. ci–après est utilisé sur le micro-ordinateur IBM PC, PC /AT,
PS/2 et divers systèmes compatibles. Plusieurs dispositifs de niveaux de priorité
différents peuvent être connectés au I8259A, ainsi le 8259A pourra arbitrer en cas
d‟une demande concurrente d‟interruption. D‟une manière générale l‟équipement
attaché au niveau IRO est plus prioritaire et le IR7 est moins prioritaire.
5.3.5. Opération d’Entrée/Sortie par DMA (Direct Memory Access)
5.3.5.1. Principe du DMA
Le DMA est souvent utilisé, lorsqu‟on veut réaliser une opération E/S avec un
périphérique rapide. Le transfert s‟effectuera directement entre le périphérique et la
mémoire sous la forme de blocs de données, sous le contrôle d‟un circuit spécialisé
DMA (Direct Memory Access), sans que le CPU puisse intervenir.
L‟armement du contrôleur DMA (programmation) consiste à la détermination de :
- Adresse bloc de départ ;
- Adresse bloc d‟arrivée;
- Nombre octets à transférer; - Direction de transfert;
© Kasengedia motumbe pierre 185
Page 186 sur 270
- Adresse du périphérique.
Les DMAC peuvent être classifiés selon leur accès aux bus (data, address, control) :
- DMAC peut suspendre le CPU ;
- DMAC peut voler les cycles mémoires au CPU ; - DMAC peut rallonges les cycles
d‟horloges.
Lorsque le contrôleur désire acquérir le bus de données de manière à effectuer un
transfert, il en informe le CPU en activant une ligne que nous appellerons HOLD. Ce
dernier se déconnecte du bus (physiquement, il met ses lignes (BUS) en état de très
haute impédance (appelée aussi impédance infinie)) et en avertit le DMA en activant
une ligne HOLDA.
A partir de ce moment, le DMA a accès au bus et peut transférer les données. Le
contrôleur DMA libérera le bus en désactivant sa sortie HOLD, ce qui forcera le
processeur à désactiver sa sortie HOLDA et il aura de nouveau accès au bus. La
firme INTEL est parmi les premières à avoir lancé sur la marche ce genre de
contrôleurs sous forme de circuits intégrés. Il y‟a lieu de citer : I8257A ; I8237A.
5.3.5.2. Fonctionnement du DMA (Direct Memory Access)
Le Fonctionnement du DMA peut etre articulé en étapes ci-
après: - contrôleur DMA active HOLD pour informer
CPU
- CPU met lignes bus en impédance infinie, s‟il est d‟accord - CPU active HOLDA
- Le Transfert s‟effectue entre la mémoire et le périphérique, via DMA qui prend la
place du CPU
- Le DMA désactive HOLD, cela force le CPU à désactiver HOLDA
Sur le schéma des Fig.5.27.a, Fig.5.27b, Fig.5.27c, sont décrites les différentes étapes du
fonctionnement de DMA.
© Kasengedia motumbe pierre 186
Page 187 sur 270
16
CPU MEMOIRE
ADDRESS
DATA
Fig.5.27a. CPU a accès à la Mémoire
© Kasengedia motumbe pierre 187
Page 188 sur 270
CPU MEMOIRE
HOL
DMAC
INT
Fig.5.27.b. DMA interrompt CPU Contrôleur périphérique
MEMOIRE
CPU
HOLDA DONNEE
S MEMW
DMAC
ACK Contrôleur périphérique
Fig.5.27c. DMA prend la place du CPU, le transfert s‟effectue directement entre la
mémoire et le périphérique
Par ailleurs, Il y‟a lieu de relever, comme vous pouvez le constater sur la Fig. 5.28,
le fait que le circuit DMA comprend au moins quatre registres accessibles en
lecture/écriture par le processeur central: - Pointeur (500);
- Compteur (64);
- Adresse Equipement E/S (4); - Sens du transfert (1).
© Kasengedia motumbe pierre 188
Page 189 sur 270
Compteur
Adresse
CPU DMA Mémoire
500
64 Contrôleur
500
7 série V24
1
Adresse
équipement Sens du
E/S transfert
«1»
Fig.5.28. Système équipé d’un circuit DMA
5.3.6. Canaux d’Echange de données
Dans le cas des gros ordinateurs (main frames), la méthode employée pour les
opérations d‟entrées-sorties est quelque peu différente. Ces ordinateurs ont en effet
à effectuer tellement d‟échanges avec des périphériques rapides que le DMA et
Interruption traditionnels deviennent inefficaces, à telle enseigne qu‟on fait appel à
de véritables processeurs d‟E/S appelés canaux de données ou canaux d‟E/S.
Les canaux d‟Entrée/sortie sont plus sophistiqués que les contrôleurs d‟Entrée/sortie
et peuvent même contenir leur propre CPU. Ils exécutent des programmes de canal
pouvant être changés dans la mémoire principale ou dans la propre mémoire du
canal
Comme nous pouvons le constater sur l‟illustration de Fig.5.29, on distingue deux catégories :
- Canaux spécialisés commandant les périphériques de même type, à haute vitesse de
transfert (disques) ;
© Kasengedia motumbe pierre 189
Page 190 sur 270
- Canal multiplexé pouvant gérer plusieurs échanges simultanés avec de types de
périphériques différents à faible vitesse de transfert (exemple : terminaux, imprimantes)
Bus mémoire
Mémoire
principale
Processeur Bus d‟E/S
Processeur d‟E/S Processeur d‟E/S
(canal) (canal)
Contrôleur des Imprimante Disque Disque Disque
terminaux
Fig.5.29. Canaux d‟Echange de données d‟un ordinateur de grande puissance
5.4. Organisation des dispositifs d’Entrées/sorties
Bien que différents dans le détail, les ordinateurs sont conçus à partir des
architectures relativement similaires. Les dispositifs d‟Entrée/sortie, la mémoire et le
CPU (processeur centrale) communiquent entre eux par l‟intermédiaire d‟un ou
plusieurs bus de communication. Les machines les plus simples sont équipés d‟un
seul bus (de données), auquel sont reliés tous les périphériques d‟Entrée /sortie, la
mémoire, le processeur central comme illustre la Fig.5.30., ci-dessous.
Les communications ne peuvent avoir lieu qu‟entre deux éléments à la fois, un type
particulier de protocole est nécessaire pour contrôler le périphérique pouvant
© Kasengedia motumbe pierre 190
Page 191 sur 270
communiquer sur le bus à un instant donné. Il s‟agit d‟arbitre du bus, dont son rôle
est de déterminer l‟entité pouvant utiliser le bus.
Fig.5.30. Architecture à Bus (de donnée) unique
Le matériel sélectionné peut communiquer avec n‟importe quel autre de son
choix, à condition que ce dernier soit relié au bus. Un mécanisme d‟adressage
identifie le dispositif de destination.
Il y‟a lieu aussi de signaler qu‟on peut trouver des bus multiples sur des
machines pour des raisons des performances. Les bus multiples permettent à
plusieurs communications de se dérouler simultanément. Le processeur central peut
par exemple communiquer avec un port série sur un bus, alors qu‟un disque
communique avec la mémoire sur un autre bus.
Cependant, l‟avantage des bus multiples est assez limité. La plupart des
communications impliquent soit la mémoire, soit le processeur central. Sans matériel
multi-accès particulier, ils ne peuvent communiquer qu‟avec un seul dispositif à la
fois.
Les architectures PC les plus récentes, outre le bus du processeur central, elles ont souvent
recours à trois types des bus suivants:
- Bus mémoire;
- Bus PCI (Péripheral component interconnect); - Bus ISA
(Industry Standard Architecture).
© Kasengedia motumbe pierre 191
Page 192 sur 270
Bus mémoire
Le bus mémoire est un bus spécial permettant d‟optimiser les communications entre le
CPU et la mémoire.
Bus PCI
Le bus PCI est le bus standard pour connecter les périphériques.
Bus ISA
Le Bus ISA est relié au bus PCI pour offrir une compatibilité descendante avec les anciens
périphériques ISA.
Il sied aussi de rappeler qu‟il existe une version améliorée d‟ISA appelée EISA
(Extended ISA), qui a la particularité d‟intégrer aussi les fonctions d‟un bus, qui a été
introduit dans les fameux ordinateurs d‟IBM, PS/2, en 1987 appelé MCA (Micro
Channel Architecture). Sur le schéma de la Fig.5.31., ci-dessous est présentée une
architecture basée sur PCI utilisant les bus mémoire et ISA.
© Kasengedia motumbe pierre 192
Page 193 sur 270
Bus mémoire
UC
Passerelle Mémoire
Mémoire PCI principale
cache
Moniteur Réseau
CD- Disque Contrôle Contrôleu Contrôleu
ROM SCSI ur SCSI r vidéo r réseau
SCSI
Bus PCI
Imprimante Com1 Haut-parleurs
Contrôleur Contrôleur Passerelle Carte
port port série ISA Son
parallèle
Bus ISA
Fig.5.31. Architecture basée sur le bus PCI avec bus mémoire, et ISA
5.5. ORGANISATION LOGICIELLE DES ENTRÉES/SORTIES
5.5.1. Considérations préliminaires
Le système d‟exploitation met en œuvre des primitives systèmes qui permettent aux
processeurs de requérir des services d‟Entrée/Sorties. Pour aller dans le sens de la
généralisation, le même ensemble élémentaire de primitives peut se trouver à la
disposition de toutes les entités. Dans certains cas, les primitives sont les même que
celles d‟un fichier d‟Entrée/Sortie. Compte tenu des caractéristiques uniques de
certains dispositifs, certaines fonctionnalités d‟Entrée/Sortie dépendantes du matériel
peuvent aussi être proposées.
© Kasengedia motumbe pierre 193
Page 194 sur 270
Sous UNIX, l‟appel au superviseur remplit diverses fonctions, selon le dispositif auquel il
s‟applique et selon les arguments spécifiés, par exemple :
• Il est utilisé pour définir le débit en bauds, sur une ligne série ;
• Dans le cas d‟un lecteur d‟un CD-ROM, pour l‟effectuer un certain nombre
d‟actions ; Périphériques unidirectionnels.
Vitesse de l’appareil
Les périphériques d‟Entrée/Sortie peuvent être relativement lents.
Certains systèmes d‟exploitation proposent l‟option d‟émettre des opérations
d‟Entrée/Sortie non bloquantes. Ces opérations d‟Entrée non bloquantes peuvent
être gérées de deux manières :
• En utilisant des données d‟entrée et mises en tampon, avant l‟appel système ;
• Le processus peut recevoir une notification à l‟achèvement des opérations d‟entrées.
Pour les opérations de sortie non bloquantes, la notification peut également être utilisée.
Exclusion mutuelle
La plupart des périphériques ne pouvant pas être partagés, leur utilisation par différents
processus, exigent l‟exclusion mutuelle.
Quel type de protection, le système d‟exploitation va-t-il offrir aux utilisateurs de ces
périphériques ?
Il y‟a lieu de retenir plusieurs options :
• Autoriser seulement un processus à la fois d‟avoir le périphérique ouvert ;
• Attribuer la propriété du périphérique à l‟utilisateur qui l‟a ouvert et refusé l‟accès aux
autres utilisateurs. Cette solution permet au propriétaire de substituer l‟accès par
défaut et d‟accorder l‟accès s‟il le dérive ;
• Traiter le problème au niveau de l‟application en mettant en œuvre une gestion
temporisée (spool) ou une autre solution comparable ;
• Ne rien faire. Laisser le problème entre les mains des utilisateurs.
© Kasengedia motumbe pierre 194
Page 195 sur 270
Périphériques unidirectionnels
Certains périphériques traitent uniquement des entrées ou uniquement des sorties.
Le système d‟exploitation doit prendre soin, afin de gérer les requêtes qui ne
peuvent pas être réalisées par le périphérique.
Généralement, les périphériques doivent être ouverts avant que les Entrée/Sorties
puissent être réalisées. La procédure d‟ouverture peut inclure un paramètre qui
indique le type d‟accès souhaité. La tentative d‟ouverture d‟un périphérique pour le
mauvais type d‟Entrée/Sortie conduira surement à un échec.
5.5.2. Objectifs des logiciels d’Entrée/Sortie.
Les objectifs principaux des logiciels d‟Entrée/Sortie peuvent être articulés de la manière
suivante :
• Indépendance par rapport au matériel (device indépendance);
• Désignation universelle (uniform naming);
• Gestion des erreurs (error handling)
• Transferts synchrone (bloquant) et les transferts asynchrones
• La mise en mémoire tampon (buffering)
Indépendance par rapport au matériel
L‟indépendance par rapport au matériel est incontestablement un des concepts clés
des logiciels d‟Entrée/Sortie. Ce concept stipule qu‟il doit être possible d‟écrire des
programmes qui accèdent à n‟importe quel périphérique d‟Entrée/Sortie, sans qu‟il
soit nécessaire de préciser le matériel à l‟avance.
Par exemple, un programme qui lit un fichier en entrée doit être capable de lire un
fichier qui se trouve sur un disque dur, un CD-ROM, un DVD, ou une clé USB, sans
qu‟il faille modifier le programme en fonction du périphérique. En outre, on doit
pouvoir taper une commande comme
# Sort <input> <output>
Et qu‟elle puisse fonctionner pour n‟importe quel périphérique que la sortie aille sur le
disque ou sur l‟écran.
© Kasengedia motumbe pierre 195
Page 196 sur 270
Il appartient au système d‟exploitation de régler les problèmes dus aux différences
entre les périphériques et au fait qu‟ils nécessitent des séquences de commande
différentes pour lire ou écrire.
Désignation universelle
Le principe de la désignation universelle est étroitement lié à l‟indépendance par
rapport au matériel. Le nom d‟un fichier ou d‟un périphérique doit être une chaine de
caractères ou un entier et ne doit dépendre en aucune manière du périphérique.
Sous UNIX, tous les disques peuvent être intégrés dans la hiérarchie du système de
fichiers d‟une manière arbitraire. Ainsi, l‟utilisateur n‟a pas besoin de connaitre le
nom qui correspond à un périphérique donné. Ainsi tous les fichiers et périphériques
sont adressés de la même manière, par leur chemin d‟accès. Par exemple, une clé
USB peut être montée (mounted), au point de montage /Usr/ast/backup, de manière
à ce que le fait de copier un fichier dans /Usr/ast/backup/, copie le fichier sur la clé
USB.
Gestion des erreurs
La gestion des erreurs est un autre point clé lié aux logiciels d‟Entrée/Sortie. En
général les erreurs sont gérées aussi près du matériel que possible. Si le contrôleur
découvre une erreur de lecture, il essaie de la corriger. S‟il ne le peut pas, c‟est le
pilote du périphérique qui la gère, en essayant par exemple de relire le bloc. De
nombreuses erreurs, telles les erreurs de lecture sont passagères : elles
disparaissent si l‟on répète l‟opération.
C‟est uniquement, lorsque les couches inférieures n‟arrivent pas à résoudre le
problème, que les couches supérieures en sont informées. Les erreurs sont souvent
récupérées de manière transparente au bas niveau, sans que les niveaux supérieurs
en aient connaissance.
© Kasengedia motumbe pierre 196
Page 197 sur 270
Les transferts synchrones (bloquants) et les transferts asynchrones (pilotés par les
interruptions)
Les transferts synchrones et asynchrones sont également importants. La plupart des
opérations d‟Entrée/Sortie sont asynchrones : le processeur central commence le
transfert et passe à autre chose en attendant l‟interruption.
Mais, les programmes utilisateurs sont plus simples à écrire, si les opérations
d‟Entrée/Sortie sont bloquantes : après l‟appel système read, le programme est
automatiquement suspendu, jusqu‟à ce que les données soient disponibles dans la
mémoire tampon. C‟est au système d‟exploitation de faire en sorte que les
opérations pilotées par les interruptions aient l‟air bloquant pour les programmes
utilisateurs.
La mise en mémoire tampon
La mise en mémoire tampon est un autre principe important des logiciels d‟Entrée/Sortie. Il
arrive souvent que les données qui provenaient d‟un périphérique ne puissent pas être
stockées directement dans leur emplacement final. Par exemple, lorsqu‟un paquet se
présente en provenance du réseau, le système d‟exploitation ne saura pas où le placer,
avant de l‟avoir rangé, c‟est ainsi qu‟on le place provisoirement dans la zone tampon.
5.5.3. Structure en couches des logiciels d’Entrée/Sortie
Les logiciels d‟Entrée/Sortie s‟organisent typiquement en quatre couches placées
sur le matériel, comme nous pouvons le constater sur la Fig.5.32., ci-dessous.
Comme les fonctionnalités en couches et les interfaces peuvent différents d‟un
système à l‟autre, cette structure n‟est pas spécifique à un ordinateur.
Logiciel d‟Entrée/sortie (Niveau utilisateur)
Logiciel d‟indépendance du matériel (niveau
système d‟exploitation)
© Kasengedia motumbe pierre 197
Page 198 sur 270
Pilotes de périphériques
Gestionnaires d‟interruptions
Matériel
Fig.5.32. Structure en couches des logiciels d‟Entrée/ Sortie.
5.5.3.1. Gestionnaires d’interruptions
La complexité du fonctionnement des interruptions au niveau le plus bas sont telles
qu‟elles deviennent une réalité, déplaisante qui ne peut être évitée. C‟est ainsi qu‟il
faut, les cacher, les enfermer dans les entrailles du système d‟exploitation, de façon
à ce que la partie du système d‟exploitation qui en connait l‟existence, soit aussi
réduite que possible. Le pilote du périphérique peut se bloquer en effectuant
certaines commandes :
Un sémaphore ;
Variable conditionnelle ;
Liée à la messagerie de processus.
Lorsqu‟une interruption se produit, c‟est la procédure d‟interruption qui la gère et qui
sait ce qu‟elle doit faire. Elle peut alors décalquer le pilote qui l‟a invitée. Selon les
circonstances :
Elle exécute simplement un V(s), P(s) sur un sémaphore ; Elle émet un signal sur
une variable conditionnelle ; Elle envoie un message au pilote bloqué.
Dans tous les cas, l‟interruption fera que tout pilote précédemment bloqué puisse de
nouveau s‟exécuter. Ce modèle fonctionne même si les pilotes sont structurés sous
forme de processus de noyau, possédant leurs propres états, piles et compteur
ordinal.
5.5.3.2. Les pilotes de périphériques
© Kasengedia motumbe pierre 198
Page 199 sur 270
Il a été évoqué précédemment que chaque contrôleur possède des registres de
contrôle qui servent à lui adresser les commandes, à lire son état ou les deux. Le
nombre de registre de contrôle et la nature de commandes varient radicalement d‟un
périphérique à l‟autre. Par exemple, un pilote de souris, doit accepter les
informations provenant de la souris et qui lui indiquer la distance à parcourir, ainsi
que le bouton sur lequel on a appuyé. Par contre, un pilote de disque doit connaitre
les secteurs, pistes, cylindres, têtes, mouvements du bras, mouvement du moteur,
temps d‟établissement de la tête et tout autre mécanisme permettant au disque de
fonctionner correctement. Ces pilotes sont par conséquent, très différents.
Par conséquent, chaque périphérique d‟Entrée/Sortie connecté à un ordinateur doit
disposer d‟un programme spécifique au périphérique pour le contrôler. Ce
programme appelé pilote de périphérique (device driver), est généralement écrit par
le fabricant du périphérique et livré avec.
Dans la mesure où chaque système d‟exploitation a besoin de ses propres pilotes,
les fabricants de périphériques fournissent généralement les pilotes pour plusieurs
systèmes d‟exploitation.
Pour accéder au périphérique, autrement dit aux registres de commande, le pilote de
périphérique doit faire partie du noyau du système d‟exploitation, tout au moins dans
les architectures actuelles. Il est effectivement possible de construire des pilotes qui
s‟exécutent dans l‟espace utilisateur, en réalisant des appels systèmes pour lire et
écrire les registres des périphériques. Cela permet d‟éliminer la principale source de
pannes systèmes due aux pilotes logués qui interfèrent avec le noyau d‟une façon
ou d‟une autre.
Il sied de signaler que MINIX 3 est un exemple de système d‟exploitation dont les pilotes de
périphériques s‟exécutent en tant que processus utilisateur.
Les pilotes de périphériques interviennent normalement dans une couche située sous le
reste du système d‟exploitation, comme le montre la Fig.5.33., ci-dessus.
© Kasengedia motumbe pierre 199
Page 200 sur 270
Fig.5.33. Place du pilote de périphérique dans l‟architecture.
En réalité toutes les communications entre les pilotes et les contrôleurs de périphériques
passent par les bus.
Les systèmes d‟exploitation classifient généralement les pilotes par catégories :
Périphériques d‟Entrée/Sortie par
blocs ; Périphériques d‟Entrée/sortie
de caractères.
Périphériques d’Entrée/Sortie par blocs
Par exemple les périphériques qui contiennent plusieurs blocs de données qu‟on peut
adresser séparément.
Périphériques d’Entrée/Sortie de caractères
Par exemple, le clavier, l‟imprimante, qui génèrent ou acceptent des flots de caractères.
5.5.3.3. Logiciel d’indépendance par rapport au matériel
© Kasengedia motumbe pierre 200
Page 201 sur 270
La fonction de base de logiciel d‟indépendance par rapport au matériel consiste à
assurer des fonctions d‟Entrée/Sortie communes à tous les périphériques et fournir
une interface uniforme au logiciel utilisateur.
Parmi les fonctions du logiciel d‟indépendance au matériel, il y‟ a lieu citer :
Interface uniforme pour les pilotes de périphériques;
Gestion des erreurs;
Allocation et libération des périphériques dédiés;
Fournir une taille de bloc indépendante du périphérique.
5.5.3.4. Mise en mémoire tampon
La mise en mémoire tampon (buffering) est un autre aspect important, tant pour les
périphériques d‟Entrée/Sortie par bloc, que pour les périphériques d‟Entrée/Sortie
par caractères.
Prenons l‟exemple d‟un processus qui veut lire les données d‟un modem. Pour
traiter les caractères entrants, le processus utilisateur peut émettre un appel read et
se bloquer dans l‟attente d‟un caractère. La procédure de service de l‟interruption
remet le caractère au processus utilisateur et se bloque une fois le caractère placé à
un emplacement défini, le processus lit un autre caractère et se bloque à nouveau.
Ce modèle est illustré à la Fig.5.34.
Processus utilisateur
Espace
Utilisateu
r
2 2
Espace
Noyau
1 1 3
Modem Modem Modem Modem
(a)
(b) (c) (d)
© Kasengedia motumbe pierre 201
Page 202 sur 270
Fig.5.3. (a) Entrée caractère sans mémoire tampon
(b)
mise en mémoire tampon dans l‟espace utilisateur
(c)
mise en mémoire tampon dans le noyau, suivi d‟une copie dans
l‟espace utilisateur
(d) double mémoire tampon dans le noyau
Le problème que pose cette méthode est que le processus utilisateur doit être exécuté à
chaque caractère entrant.
En vue d‟améliorer l‟efficacité, dans Fig.5.31.(b), (c), (d), sont proposés :
Mise en mémoire tampon dans l‟espace utilisateur ;
Mise en mémoire tampon dans le noyau, suivie d‟une copie dans l‟espace
utilisateur ; Double mémoire tampon dans le noyau.
5.5.3.5. Gestion des erreurs
Les erreurs sont bien plus courantes dans le contexte des Entrées/Sorties que dans
d‟autres contextes. Lorsqu‟elles se produisent, le système d‟exploitation doit les
gérer de la bonne manière possible. De nombreuses erreurs sont spécifiques au
périphérique et doivent être gérées par le pilote approprié, mais la structure de la
gestion des erreurs est indépendante du périphérique.
Les erreurs de programmation, par exemple sont un type d‟erreur d‟Entrée/Sortie.
Elles peuvent se produire dans les cas ci-dessous, quand un processus demande
une opération impossible :
Ecrire dans un périphérique d‟entrée (clavier, souris, scanner, ….)
Lire, à partir d‟un périphérique de sortie (imprimante, écran, table traçante,….).
On trouve, également des erreurs telles que :
Une adresse de mémoire tampon incorrecte ;
Un périphérique non valide, inexistant (par exemple, se référer au disque 3, alors
que le système ne contient que deux disques.
Pour prendre ces erreurs en charge, il suffit de retourner au processus appelant, le code
d‟erreur.
© Kasengedia motumbe pierre 202
Page 203 sur 270
Les erreurs d‟Entrée/Sortie sont un autre type d‟erreurs.il convient de signaler les scenarios
suivants :
On tente d‟écrire dans un bloc de disque endommagé ;
On tente de lire les données provenant d‟un caméscope éteint.
Dans de tels cas, il appartient au pilote de déterminer, ce qu‟il convient de faire. S‟il ne le
sait pas, il retourne le problème au logiciel d‟indépendance du matériel.
L‟action entreprise par ce logiciel dépend alors de l‟environnement et de la nature de
l‟erreur. S‟il s‟agit d‟une simple erreur de lecture et qu‟il existe un utilisateur en
mode interactif, le logiciel peut afficher une boite de dialogue qui demande à
l‟utilisateur ce qu‟il veut faire:
Recommencer un certain nombre de fois;
Ignorer l‟erreur;
Arrêter le processus appelant.
S‟il n‟y a pas d‟utilisateur, la seule option réellement disponible, est l‟échec de l‟appel
système ; avec un vide d‟erreur.
Certaines erreurs ne peuvent pas être traitées de cette manière. Par exemple une
structure de donnée importante, comme le répertoire racine, ou une liste de blocs
libres, peut avoir été détruite. Dans ce cas, le système doit afficher un message et
s‟arrêter.
© Kasengedia motumbe pierre 203
Page 204 sur 270
IIème PARTIE
TRAVAUX PRATIQUES
SOUS L’ENVIRONNEMENT LINUX
© Kasengedia motumbe pierre 204
Page 205 sur 270
I. INTRODUCTION : LES NOTION FONDAMENTALES
1. Quelles sont les deux principales fonctions d‟un système d‟exploitation ?
2. Que fait l‟UC quand il n‟y a aucun programme à exécuter ?
3. Quelle est la caractéristique commune aux déroutements, aux interruptions, aux
appels au superviseur et aux appels aux sous programmes.
4. Qu‟est-ce qui différencient les déroutements, les interruptions et les appels aux sous
programmes ?
5. Quel est le rôle d‟un système d‟exploitation ? Les interpréteurs de commandes et les
compilateurs font-ils parties du système d‟exploitation ?
6. Qu‟est-ce qu‟un système multiprogrammé ? Un système de traitement par lots ? Un
système en temps partagé ?
7. Parmi les instructions suivantes, lesquelles doivent être privilégié (à savoir, lesquelles
ne peuvent être exécutés qu‟en mode superviseur ?
a) Changement des registres de gestion des mémoires
b) Ecriture du compteur de programme
c) Lecture de l‟horloge
d) Réglage de l‟horloge
e) Changement de la priorité du processeur.
8. Un S.E. peut mettre en œuvre un périphérique d‟E/S de mémoire. Les opérations
d‟E/S du périphérique provoquent la lecture ou l‟écriture de l‟emplacement de la
mémoire correspondante. Quel est l‟inconvénient de ce type de périphérique ? doit-il
être accessible aux utilisateurs ou simplement aux administrateurs systèmes ?
9. Les applications suivantes, sont-elles des applications par lots ou interactives ?
a) Traitement de texte
b) Production de relevés bancaires mensuels
c) Calcul du nombre pi jusqu‟à un million de chiffres après la virgule
10. Pourquoi un ordinateur doit-il démarrer en mode superviseur lors de sa première mise
sous tension ?
© Kasengedia motumbe pierre 205
Page 206 sur 270
11. Quelle est la taille maximale d‟un programme d‟initialisation du niveau 1 au début du
disque dur, sachant que le profil binaire valide est de 2 octets et la taille du secteur du
512 octets.
12. Enumérer les caractéristiques matérielles conçues pour assister de manière explicite
le système d‟exploitation ?
13. Qu‟est-ce qui différencie le déroutement, les appels aux superviseurs et les appels
aux sous programmes des interruptions ?
14. Qu‟est-ce qui différencie les appels aux sous programmes et les appels aux
superviseurs du déroutement et des interruptions ?
15. Pourquoi les programmes utilisateurs n‟ont-ils pas l‟autorisation d‟écrire dans des
emplacements de mémoires contenant un vecteur d‟interruption ?
16. Quelles sont les instructions suivantes qui doivent être privilégiées (à savoir lesquelles
ne peuvent être exécuté qu‟en mode superviseur ? a) Réglage du mode en mode
superviseur
b) Réamorçage
c) Lecture du registre d‟état
d) Désactivation de l‟interruption
e) Ecriture dans le registre d‟instruction
17. Les applications suivantes sont-elles les applications par lots ou des applications
interactives ?
a) Génération d‟un formulaire de déclaration de revenu
b) Génération d‟un formulaire de déclaration de TVA dans une entreprise
c) Simulateur des vols
18. Le S.E. et le programme d‟amorçage qui copie le système d‟exploitation dans la
mémoire doivent-ils être situés sur le même disque ? pourquoi ?
19. Quelles sont les caractéristiques communes aux déroutements, aux interruptions, aux
appels au superviseur et aux appels procéduraux ?
20. Qu‟est-ce qui différencie les déroutements, les interruptions, et les appels au
superviseur des appels procéduraux ?
© Kasengedia motumbe pierre 206
Page 207 sur 270
21. Qu‟est-ce qui différencie les déroutements, les, appels procéduraux et les appels au
superviseur des interruptions?
22. Détailler ce qu‟est une interruption et le mécanisme de sa prise en compte.
23. Répondre à la question précédente en considérant le cas d‟un déroutement (trappe).
24. Préciser les différences entre interruption et déroutement.
25. Etablir les correspondances entre les termes :
(1) Multiprogrammation
(2) Système d'exploitation
(3) Machine virtuelle
(4) Temps partagé
(5) BIOS
(6) Système réparti
et les définitions :
A- gère les composants de l'ordinateur
B- permet d'augmenter le rendement du processeur
C- teste les composants de l'ordinateur
D- le processeur est équitablement partagé entre les utilisateurs
E- permet de partager des ressources sur un réseau
F- permet de masquer la complexité du matériel
26. Un système d'exploitation est un logiciel qui regroupe un certain nombre de services
nécessaires à l'exécution des programmes qu'un utilisateur peut ordonner. C'est à
travers sa composante logiciels de base (ou noyau système) qu'il gère toutes les
opérations destinées à contrôler et à commander de l'ordinateur et ses divers
périphériques. Sa seconde composante est formée quant à elle d'un ensemble
d'utilitaires qui ne sont vraisemblablement pas nécessaires pour démarrer à froid
l'ordinateur. Dans ce qui suit, on s'intéresse à classer divers services système selon
leur appartenance. Pour cela on vous demande de remplir le tableau suivant en
mettant une croix dans la case qui convient.
© Kasengedia motumbe pierre 207
Page 208 sur 270
1) GESTION DE PROCESSUS
1. Que fait chacun des programmes
suivants : 1) int main( ) { int p=1 ;
while(p>0) p=fork() ; execlp(“prog”,
“prog”, NULL) ;
return 0 ;
} 2) int
i=2 ; int
main ( )
{ j=10;
int p ;
while(i-- && p = fork())
if(p<0) exit(1) ; j += 2;
© Kasengedia motumbe pierre 208
Page 209 sur 270
if (p == 0) { i *= 3; j *=
3; }
else { i *= 2; j *= 2; }
printf(« i=%d, j=%d »,
i,j) ; return 0 ; }
3)
#include
<stdio.h>
#include
<unistd.h> int
main ( ) { int fd[2],
i=2; char ch[100];
while ( i)
{ pipe(fd);
if( fork())
{ close(fd[0]);
dup2(fd[1],1);
close(fd[1]);
break; } else
{ close(fd[1]);
dup2(fd[0],0);
close(fd[0]); }
i--; } scanf("%s",
ch);
printf("%s\n",ch)
; exit(0); } 4) int
i=4, j=10; int
main ( ) { int p ;
p = fork(); if(p<0)
exit(1) ; j += 2;
if (p == 0) { i *=
3; j *= 3; }
© Kasengedia motumbe pierre 209
Page 210 sur 270
else { i *= 2; j *= 2; }
printf(“i=%d, j=%d”, i,j) ;
return 0 ;
} 5) int main ( ) { int p=1 ; for(int i=0 ;
i<=4 ; i++) if (p>0) p=fork( ) ; if(p !=-1)
execlp(“prog”, “prog”, NULL) ; else
exit(1) ; while( wait(NULL) !=-1) ;
return 0 ;
}
2. ORDONNANCEMENT DES PROCESSUS
Considérons n processus P1, P2, …, Pn, arrivés en même temps et insérés
dans cet ordre dans la file des processus prêts. Ces processus ne font pas
d‟E/S et leurs temps d‟exécution sont respectivement c1,… et cn. Le temps
de commutation est supposé nul.
a) Quel est le temps d‟attente moyen des n processus dans chacun des cas
suivants : - D‟un ordonnanceur circulaire avec un quantum qt.
- D‟un ordonnanceur sans préemption fonctionnant selon la discipline
premier arrivé, premier servi.
Dans quel cas, obtient-on un meilleur temps d‟attente moyen ?
b) Supposons que le nombre de processus est 5 et que leurs temps
d‟exécution sont égaux à : 2*qt + r avec r<qt.
Montrez comment les processus vont utiliser le processeur dans le cas d‟un
ordonnanceur circulaire avec un quantum qt. Calculer le temps moyen de
séjour des processus.
Quel serait le temps moyen de séjour des 5 processus dans le cas d‟un
ordonnanceur sans préemption fonctionnant selon la discipline premier arrivé,
premier servi. Dans quel cas, obtient-on un meilleur temps de séjour moyen ?
© Kasengedia motumbe pierre 210
Page 211 sur 270
3. On considère 4 processus, A, B, C, D. On suppose que l‟exécution des
processus nécessite :
• Pour A : 7 unités de temps CPU, 3 unités de temps d'E/S et 5 unités de temps CPU.
• Pour B : 6 unités de temps CPU, 4 unités de temps d‟E/S, 4 unités de temps CPU.
Pour C : 5 unités de temps CPU.
• Pour D : 1 unité de temps CPU, 4 unités de temps d‟E/S et 2 unités de temps CPU.
On suppose que
• A se présente en premier, à l‟instant 0,
• B se présente à l‟instant 1,
• C se présente à l‟instant 9,
• D se présente à l‟instant 12.
Montrez comment les 4 processus vont utiliser le processeur dans chacun des
cas suivants :
Chaque processus a son propre périphérique d‟E/S et l‟ordonnanceur
fonctionne selon Premier Arrivée Premier Servi PAPS (sans préemption).
Chaque processus a son propre périphérique d‟E/S et l‟ordonnanceur utilise
l'algorithme du tourniquet, avec un quantum de 5. Le temps de commutation
est égal à 0. Donnez, dans ce cas, les temps de séjour des processus A, B, C
et D.
Les trois processus utilisent le même périphérique d'E/S dont la file d'attente
est gérée premier arrivée premier servi. L‟ordonnanceur du processeur utilise
l'algorithme du tourniquet, avec un quantum de 5.
Le temps de commutation est supposé égal à 0.
4. Les processus suivants sont soumis à l‟ordonnanceur aux temps indiques avec
la durée et le niveau de priorité associés (5 la plus faible priorité). Ils sont listés
dans le format (arrivée : durée : priorité): P1(0:10:3), P2(2:6:4), P3(4:8:2),
P4(6:12:1), P5(8:4:5), P6(8:3:5). A chaque unité de temps, l‟ordonnancement
peut changer en fonction des nouvelles taches arrivées. Donnez le diagramme
de GANNT, le temps de séjour, le rendement et le temps d‟attente pour chacun
des algorithmes d‟ordonnancement suivants:
© Kasengedia motumbe pierre 211
Page 212 sur 270
tourniquet avec un quantum de 3 où une tâche nouvellement arrivée est placée
en début de tourniquet et obtient immédiatement la main lorsqu‟un quantum vient
de se terminer,
selon les priorités,
La tâche avec le temps d‟exécution le plus court (SJF), la tâche avec le plus
court temps restant en premier (SRT),
Selon l‟ordre d‟arriver (FCFS).
5. Soient trois processus concurrents P1, P2 et P3 qui partagent les
variables n et out. Pour contrôler les accès aux variables
partagées, un programmeur propose les codes suivants :
Semaphore mutex1 = 1 ;
Semaphore mutex2 = 1 ;
Code du processus p1 :
P(mutex1) ;
P(mutex2) ;
out=out+1 ;
n=n-1 ;
V(mutex2) ;
V(mutex1) ;
Code du processus
p2 : P(mutex2) ;
out=out-1 ;
V(mutex2) ;
Code du processus
p3 : P(mutex1) ;
n=n+1 ; V(mutex1) ;
Cette proposition est-elle correcte ? Sinon, indiquer parmi les 4 conditions requises
pour réaliser une exclusion mutuelle correcte, celles qui ne sont pas satisfaites ?
Proposer une solution correcte.
© Kasengedia motumbe pierre 212
Page 213 sur 270
6. On veut effectuer en parallèle le produit de deux matrices A et B d‟ordre n
(nxn). Pour se faire, on crée m (m<n) processus légers (threads). Chaque
processus léger se charge de calculer quelques lignes de la matrice résultat
R: Pour j = 0 à n-1 R[i,j] = ¦ k=0,n-1 A[i,k]*B[k,j] ;
Donner sous forme de commentaires (en utilisant les sémaphores et les
opérations P et V), le code des processus légers : CalculLignes ( ).
Préciser les sémaphores utilisés et les variables partagées.
7. Deux villes A et B sont reliés par une seule voie de chemin de fer. Les trains
peuvent circuler dans le même sens de A vers B ou de B vers A. Mais, ils ne
peuvent pas circuler dans les sens opposés. On considère deux classes de
processus : les trains allant de A vers B (Train Avers B) et les trains allant de
B vers A (Train B vers A).
Ces processus se décrivent comme suit :
Train Avers B :
Demande d‟accès à la voie par A ;
Circulation sur la voie de A vers
B; Sortie de la voie par B; Train
B vers A :
Demande d‟accès à la voie par B ;
Circulation sur la voie de B vers A;
Sortie de la voie par A;
1) Parmi les modèles étudiés en classe (producteur/consommateur,
lecteur/rédacteur), ce problème correspond à quel modèle ?
2) Ecrire sous forme de commentaires en utilisant les sémaphores, les opérations P
et V, les codes de demandes d‟accès et de sorties, de façon à ce que les
processus respectent les règles de circulation sur la voie unique.
8. Considérons le problème producteur/consommateur, vu en classe. Adaptez la solution
suivante :
a) cas de n producteurs, n consommateurs et un seul tampon de taille (Max, il
peut contenir au plus Max messages). Les producteurs produisent des
© Kasengedia motumbe pierre 213
Page 214 sur 270
messages et les déposent dans le tampon. Chaque message déposé dans le
tampon est récupéré (consommé) par un seul consommateur.
b) Au cas d‟un seul producteur, n consommateurs et n tampons de même taille
(Max). Chaque message produit par le producteur est déposé dans tous les
tampons en commençant par le premier. Le consommateur i récupère
(consomme) les messages déposés dans le tampon i.
Semaphore Mutex =1, Vide=Max, Plein=0 ;
Message tampon [Max] ;
Producteur ( )
{ int ip =0 ;
Message m ;
Repeter
{ m = creermessage() ;
P(Vide) ;
P(Mutex) ;
Tampon[ip]=
m; V(Mutex) ;
ip++ ;
V(Plein) ;
}tant que vrai ;
}
Consommateur( )
{ int ic =0 ;
Message m ;
Repeter
{
P(Plein) ;
P(Mutex) ; m =
Tampon[ic];
V(Mutex) ;
ic++ ; V(Vide) ;
© Kasengedia motumbe pierre 214
Page 215 sur 270
}tant que vrai ; }
9. En utilisant le modèle de Réseau de Petri, modélisez le déterminisme du match de
football de FC RENAISSANCE & AS. VITA CLUB
10. On considère un ensemble de six tâches séquentielles {A, B, C, D, E ,F}. La tâche
A doit précéder les tâches B, C, D. Les tâches B et C doivent précéder la tâche E.
Les tâches D et E doivent précéder la tâche F. Réaliser la synchronisation de ces
tâches en utilisant les sémaphores
11. Etablir la matrice d‟incidence avant (Pre), la matrice d‟incidence arrière (Post) et
la matrice d‟incidence W du réseau ci-dessous :
© Kasengedia motumbe pierre 215
Page 216 sur 270
T1
T5
P1
T2
P2 P5 P6
P4
T3
P3 T6
T4
12. Etablir la matrice d‟incidence avant (Pre), la matrice d‟incidence arrière (Post) et la
matrice d‟incidence W du réseau ci-dessous :
© Kasengedia motumbe pierre 216
Page 217 sur 270
13. Déterminer la matrice d‟incidence ainsi que sa transposée associée au réseau de
Pétri de la Figure ci-dessus :
14. Sur un système doté de n U.C, quel est le nombre maximum de processus pouvant
se trouver dans les états prêt, exécution et bloqué ?
15. Sur un système doté de n U.C. quel est le nombre minimum de processus pouvant
se trouver dans l‟état prêt, exécution et bloqué ?
16. Quel est le principal avantage de la multiprogrammation ?
17. Quel est le principal inconvénient qui découle d‟un abus de multiprogrammation ?
18. Le pourcentage d‟attente des E/S, ω, d‟un processus est le pourcentage de temps
pendant lequel ce processus attend l‟achèvement des E/S, lors de l‟exécution dans
un environnement de monoprogrammation. Sur un système qui a recours à
l‟ordonnancement de tourniquet avec n processus, tous ayant le même
pourcentage d‟attente des E/S, quel est le pourcentage de temps d‟inactivité de
l‟UC en termes de ω.
19. Pour chacune de transition suivante entre les états d‟un processus, indiquez si la
transition est possible. Si c‟est possible, donnez un exemple d‟un élément qui peut
en être à l‟origine.
a) En exécution – prêt
b) En exécution – bloqué
© Kasengedia motumbe pierre 217
Page 218 sur 270
c) En exécution – permuté – bloqué
d) Bloqué – en exécution
e) En exécution – terminé
20. Soit un système avec n processus, combien existe – t – il des manières
d‟ordonnancer ces processus ?
21. Sur un système recourant à l‟ordonnancement à tourniquet, quelle serait la
conséquence de l‟introduction d‟un meme processus à deux reprises dans la liste
des processus ?
22. Avec les processus répertoriers dans le tableau ci-après dessiner un schéma
illustrant leur exécution à l‟aide de : a) L‟algorithme FCFS
b) L‟algorithme SJF
c) L‟algorithme SRT
d) L‟algorithme à tourniquet (quantum = 2)
e) L‟algorithme à tourniquet (quantum = 1)
Processus Temps d‟arriver Temps de traitement
A 0,000 3
B 1,001 6
C 4,001 4
D 6,001 2
23. Pour les processus du tableau précédent, quel est le temps moyen de rotation
(arrondi au centième) si l‟on utilise. a) L‟algorithme FCFS
b) L‟algorithme SJF
c) L‟algorithme SRT
d) L‟algorithme à tourniquet (quantum = 2)
e) L‟algorithme à tourniquet (quantum = 1)
24. Pour les processus du tableau précédent, quel est le temps d‟attente de chaque
processus (arrondi au centième) si l‟on utilise.
© Kasengedia motumbe pierre 218
Page 219 sur 270
1) L‟algorithme FCFS
2) L‟algorithme SJF
3) L‟algorithme SRT
4) L‟algorithme à tourniquet (quantum = 2)
5) L‟algorithme à tourniquet (quantum = 1)
25. Pour le processus du tableau précédent, quel est débit si l‟on utilise.
a. L‟algorithme FCFS
b. L‟algorithme SJF
c. L‟algorithme SRT
d. L‟algorithme à tourniquet (quantum = 2)
e. L‟algorithme à tourniquet (quantum = 1)
26. Pour les processus de tableau ci-après, dessiner un schéma illustrant leur
exécution en utilisant l‟ordonnancement de priorité. Un nombre de priorité
élevé correspond à une priorité plus importante.
a) Préemptif
b) Non préemptif
Processus Date d‟arrivée Cycle priorité
A 0,0000 4 3
B 1,0001 3 4
C 2,0001 3 6
D 3,0001 5 5
27. Pour le processus du tableau du numéro 13, quel est le temps de rotation (arrondi
au centième de chaque chiffre ? a) Préemptif
b) Non préemptif
28. Pour les processus du tableau précédent, quel est le débit moyen ?
29. Sur un système utilisant un les files multi niveaux à retour, un processus
entièrement tributaires de l‟UC a besoin de 14 secondes pour s‟exécuter. Si la
© Kasengedia motumbe pierre 219
Page 220 sur 270
première file utilise un quantum de temps est 2 et qu‟à chaque niveau, le quantum
de temps augmente de 5 unités de temps. Combien de fois sera interrompu le
travail et dans quelle file se trouvera – t – il lorsqu‟il s‟achèvera ?
30. Sur un système Unix, un appel système permet d‟augmenter ou de réduire la
valeur de la priorité associée à un processus. Après l‟augmentation de la valeur de
la priorité de processus, on observe que le système semble s‟exécuter plus
lentement. Pourquoi ?
31. Le choix d‟un algorithme d‟ordonnancement non – préemptif est – il un choix
judicieux pour un système interactif. expliquer brièvement pourquoi.
32. Un système fait appel à un algorithme d‟ordonnancement avec priorité préemptif
(les processus au numéro de priorité élevé ont une priorité plus importante). Les
processus ont introduits dans le système avec une priorité de 0. Lors de l‟attente
dans la file des processus prêts, la priorité d‟un processus change au rythme α.
Lors de l‟exécution du processus, sa priorité est modifiée au rythme β. a) Quel
algorithme résulte de β ˃ α ˃ 0 ?
b) Quel algorithme résulte de β ˂ α ˂ 0 ?
33. Si un système utilise l‟algorithme du travail le plus court d‟abord pour
l‟ordonnancement à court terme et une moyenne exponentielle de α = 0,5, quel est
le prochain cycle processeur estimé pour un processus aux cycles processeur de
5, 8, 3 et 5 et une valeur initiale de 10 pour e1 .
34. Dans quelle mesure peut-on affirmer que l‟ordonnancement du travail le plus court
d‟abord est une forme particulière de l‟ordonnancement des priorités ?
35. Sur un système utilisant l‟ordonnancement à tourniquet, s représente le temps
nécessaire pour réaliser une commutation de processus, q, le quantum de temps à
tourniquet et r, le temps moyen d‟exécution d‟un processus avant de bloquer les
E/S. donner une formule pour l‟efficacité de l‟UC en fonction de ce qui suit : a) q =
∞
b) q ˃ r
c) s ˂ q ˂ r
d) s = q ˂ r
e) q proche de 0
© Kasengedia motumbe pierre 220
Page 221 sur 270
36. A quel degré les algorithmes suivants favorisent-ils les processus tributaires de
l‟UC ?
a) FSFC
b) SJF
c) SRT
d) RR
e) MFQ
37. Donnez un exemple de situation dans laquelle il peut être utile d‟avoir un
programme qui est exécuté par l‟utilisateur effectif de son propriétaire plutôt que
d‟avoir un utilisateur réel qui exécute le programme.
38. Répondre par OUI ou NON et par d‟éventuels commentaires.
1. Un processus est une entité produite après compilation
2. Un processus est une entité produite après chargement d‟un binaire en mémoire
3. Le pseudo-parallélisme impose aux processus de se connaître mutuellement
4. Le quasi-parallélisme impose la connaissance mutuelle des identités des
processus
39. Pourquoi fait-on la distinction entre le concept programme et celui de processus ?
40. Quelle différence y a-t-il entre un appel d‟une procédure et un appel au
superviseur (ou appel d‟une primitive du noyau système) ?
41. Existe-t-il une grande différence dans le traitement d‟un appel au superviseur et
celui d‟un traitant d‟interruption (handler interrupt) ? Pourquoi ?
42. Qu'est-ce qu'un code réentrant ? De quelle manière peut-on transformer un code
nonréentrant en code réentrant ? Est-ce toujours facile ? Pourquoi ?
43. Schématiser un diagramme d‟états/transitions pour les cas suivants :
a) Système de monoprogrammation
b) Système de multiprogrammation
c) Système à temps partagé.
44. a) Expliquez la différence entre les systèmes multitâches non préemptifs et
préemptifs.
b) Indiquez quels sont les avantages des seconds par rapport aux premiers.
© Kasengedia motumbe pierre 221
Page 222 sur 270
Hypothèse : un ordinateur avec un unique processeur central.
45. Répondez aux questions suivantes :
a) Qu‟est-ce qu‟un commutateur ?
b) Quand est-ce qu‟il peut être activé ? et par qui ?
c) Quel est son principe de fonctionnement ?
46. Le parallélisme regroupe un certain nombre de concepts relatifs à l‟exécution en
parallèle de plusieurs processus. Rappeler donc les caractéristiques inhérentes
au :
- vrai parallélisme,
- quasi- parallélisme,
- pseudo- parallélisme
47. Préciser quelles sont les propriétés d‟une exclusion mutuelle ?
48. Qu‟est-ce qu‟un sémaphore et pour quelles raisons ses primitives sont-elles
considérées être des opérations atomiques (indivisibles) ?
49. Quelles différences existe-t-il entre un sémaphore binaire, un sémaphore à
compteur et un sémaphore privé ?
50. Répondre par OUI ou NON et par d‟éventuels commentaires.
a) La synchronisation est un mécanisme dû à l‟existence de relations de
coopération inter-processus
b) La compétition des processus pour l‟acquisition d‟une ressource partagée
impose une synchronisation de leur activité
c) la propriété de l‟exclusion mutuelle décrite par une utilisation correcte d‟un
sémaphore d‟exclusion mutuelle mutex implique que : nf(mutex) = nv(mutex)
+ 1 où nf et nv sont des fonctions donnant respectivement le nombre de
franchissement et le nombre d‟opérations V sur le sémaphore mutex
initialisé à 1.
d) La propriété de l‟exclusion mutuelle décrite par uneutilisation correcte d‟un
sémaphore d‟exclusion mutuelle mutex implique que : nf(mutex) = np(mutex)
+ 1 où nf et np sont des fonctions donnant respectivement le nombre de
© Kasengedia motumbe pierre 222
Page 223 sur 270
franchissement et le nombre d‟opérations P sur le sémaphore mutex
initialisé à 1.
51. Ecrire un programme qui réalise, à l‟aide des sémaphores, l‟exécution des actions
P0 à P7 données par la figure ci-dessous décrivant leur précédence.
52. Le problème à traiter concerne la mise au point d‟un rendez-vous de travail entre
N personnes. Chaque personne doit se rendre au lieu du rendez-vous et attendre
le début de travaux qui ne peut commencer que lorsque tout le monde est présent.
Le dernier arrivé donc débloquera la situation et les travaux de l‟assemblée
peuvent démarrer. Résoudre ce problème en utilisant des sémaphores et
considérant que les personnes sont des processus citoyens.
53. Soit un fichier partagé par N processus ayant chacun une clé d‟accès de 0 à k.
Ces processus sont autorisés à accéder simultanément au fichier à condition que
la somme des clés en cours d‟accès soit inférieure ou égale à M. Donner une
solution à ce problème en utilisant des sémaphores.
54. Pour chacun des algorithmes d‟ordonnancement suivants, indiquer s‟il nécessite
ou pas une réquisition, expliciter son fonctionnement et donner ses
avantages/inconvénients.
a) Premier arrivé premier servi
b) Plus court d‟abord
c) Tourniquet
d) Plus court en temps restant
e) Selon priorité
55. On suppose, qu‟à la date t=0, le CPU est libre et que la liste des processus à
l‟état prêt sont ceux listés dans le tableau suivant.
© Kasengedia motumbe pierre 223
Page 224 sur 270
Processus Date d‟arrivée Temps de traitement
A 0 3
B 1 6
C 4 4
D 6 2
On s‟intéresse à l‟ordonnancement de ces processus lorsque l‟algorithme mis
en œuvre est FCFS, SJF, SRTF, RR (q=2). En prenant en considération que
le temps nécessaire pour la commutation est nul, calculé pour chacun de ces
algorithmes : a) le temps moyen de rotation
b) le temps d‟attente de chaque processus
c) le débit
56. Supposons un système d‟exploitation monoprocesseur, un temps de
commutation nul et une liste de processus à l‟état prêt décrite par le tableau
suivant :
Processus Date d‟arrivée (a) Durée d‟exécution (e)
A 0 3
B 1 5
C 3 2
D 9 5
E 12 5
En supposant que l‟ordonnancement des processus se fait selon la stratégie
tourniquet
(Round Robin), calculer pour chaque processus selon la valeur du quantum Q
la date de début de l‟exécution : d
la date d‟achèvement de l‟exécution : f
le temps de réponse T= f –a
© Kasengedia motumbe pierre 224
Page 225 sur 270
le temps d‟inactivité M= T-e
le ratio de pénalité P= T/a
le ratio de réponse R= 1/P
On prendra pour Q les valeurs 1 puis 4.
57. On considère un système monoprocesseur avec une seule unité de disque. On
suppose qu‟à la date t=0 la liste des processus à l‟état prêt renferme 4
processus A, B, C et D. Ceux-ci ont été soumis au système dans cet ordre et
effectuent du calcul et des entrées/sorties avec le disque selon les temps
donnés ci-dessous :
Représentez sur un graphe le chronogramme d'exécution de ces 4 processus et
donnez le temps de réponse moyen obtenu lorsque :
a) l'ordonnancement sur le processeur se fait selon une politique FCFS et que
l'ordre de services des requêtes d'E/S pour le disque se fait également en
FIFO.
b) l'ordonnancement sur le processeur se fait selon une politique en tourniquet
avec un quantum égal à 1 (RR, Q=1) et que l'ordre de services des requêtes
d'E/S pour le disque se fait également en FIFO.
Hypothèses : A la date t=0, le processeur est libre et le disque dur est disponible,
La durée d‟une commutation de contexte est nulle,
58. A l‟état initial, le système considéré dispose de l‟ensemble de ressources qui
suit :
© Kasengedia motumbe pierre 225
Page 226 sur 270
Plus tard la configuration du système indique un état sein définit pr les structures des
données suivantes :
Donner l‟algorithme du banquier pour savoir si un interblocage peut se produire.
Indiquez si non la suite fiable des demandes à honorer.
59. La situation illustrée par le graphe d'allocation de ressources ci-après, peut-elle
causer un interblocage. Justifier.
Sur ce graphe les processus sont représentés par des ronds, les ressources
par des rectangles contenant des points explicitant le nombre d‟exemplaires
d‟une ressource, les flèches qui partent des rectangles vers les ronds
désignent ce qui a déjà été octroyé à un processus, et les flèches dans l‟autre
sens ce qui lui manque.
60. Indiquez comment l‟exclusion mutuelle peut être mise en œuvre au moyen des
boites aux lettres, avec une primitive non bloquante send_mailbox et une
© Kasengedia motumbe pierre 226
Page 227 sur 270
primitive bloquante receive_mailbox. Partez du principe que les primitives sont
exécutées comme des opérations élémentaires indivisibles.
61. L‟embouteillage (gridlock) est un problème de circulation dans lequel aucun
mouvement n‟est possible dans le trafic. Démontrer que les quatre conditions
d‟interblocage s‟appliquent.
62. Compte tenu de l‟utilisation et de la disponibilité des ressources décrites dans le
tableau ci-après, dessinez le graphe d‟allocation des ressources.
63. Compte tenu de l‟utilisation et de la disponibilité des ressources des processus
décrites dans le tableau du numéro précédent, dessinez le graphe réduit
d‟allocation des ressources.
3) GESTION DE MEMOIRE
1. Pour chacun des schémas de gestion de la mémoire, décrivez brièvement les
fonctions réalisées par le logiciel de système d‟exploitation. a) Partition
contigüe (avec les registres base)
b) Multiprogrammation à partitions variables
c) Système des zones siamoises
d) Pagination simple
2. Pour chacun des schémas de gestion de la mémoire, décrivez brièvement les
fonctions réalisées par le matériel de gestion de la mémoire.
Partition contigüe (avec les registres base)
Multiprogrammation à partitions variables
Système des zones siamoises
© Kasengedia motumbe pierre 227
Page 228 sur 270
Pagination simple
3. Un programme contenant du code translatable a été créé, en partant du
principe qu‟il serait chargé dans l‟adresse 0. Dans son code, le programme
fait référence aux adresses suivantes 50, 78, 150, 152, 154. Si le programme
est chargé en mémoire en commençant à l‟emplacement 250, comment
doivent être adressées ces adresses ?
4. Dans quelle mesure un schéma de partition absolue qui utilise du code
translatable estil comparable à un schéma de partition translatable ? dans
quelle mesure sont-ils différents ?
5. Sur un système doté de 224 octets de mémoires et de partitions fixes, toutes
d‟une taille de 65536 octets, quel est le nombre minimum de bits nécessaires
dans une entrée de la table de processus pour enregistrer la partition à
laquelle a été louée un processus ?
6. Sur un système doté de 224 octets de mémoires et de partitions fixes, toutes
d‟une taille de 65536 octets, combien de bits doit avoir le registre limite ?
7. Sur un système qui utilise les partitions fixes de taille 216, 223 et 232, combien
de bits doit avoir le registre limite ?
8. Sur un système qui utilise l‟allocation de la première zone libre, supposons
que la mémoire est allouée comme spécifiée dans la figure ci-après, avant
que d‟autres requêtes de 20, 10 et 5 Ko (dans cet ordre ci) soient reçues. A
quelle adresse de départ vont être allouées chacune des autres requêtes ?
9. Sur un système qui utilise l‟allocation du meilleur ajustement, supposons que
la mémoire est allouée comme spécifiée dans la figure du numéro 8, avant
© Kasengedia motumbe pierre 228
Page 229 sur 270
que d‟autres requêtes de 20, 10 et 5 Ko (dans cet ordre ci) soient reçues. A
quelle adresse de départ vont être allouées chacune des autres requêtes ?
10. Sur un système qui utilise l‟allocation du pire ajustement, supposons que la
mémoire est allouée comme spécifiée dans la figure du numéro 8, avant que
d‟autres requêtes de 20, 10 et 5 Ko (dans cet ordre ci) soient reçues A quelle
adresse de départ vont être allouées chacune des autres requêtes ?
11. Sur un système qui utilise l‟allocation de la zone libre suivante, supposons
que la mémoire est allouée comme spécifiée dans la figure du numéro 8,
avant que d‟autres requêtes de 20, 10 et 5 Ko (dans cet ordre ci) soient
reçues A quelle adresse de départ vont être allouées chacune des autres
requêtes ?
12. Sur un système doté de 1 Mo de mémoire et qui utilise des zones siamoises,
dessiner un schéma qui illustre l‟allocation de la mémoire après chacun des
événements suivants :
a) Processus A, requête 50 Ko
b) Processus B, requête 150 Ko
c) Processus C, requête 60 Ko
d) Processus D, requête 60 Ko
e) Processus E, requête 60 Ko
f) Processus D, sortie
g) Processus C, sortie
h) Processus E, sortie
i) Processus A, sortie
j) Processus F, requête 150 Ko
k) Processus G, requête 150 Ko
l) Processus F, sortie
m) Processus G, sortie
n) Processus B, sortie
© Kasengedia motumbe pierre 229
Page 230 sur 270
13. Sur un système doté de 1 Mo de mémoire et qui utilise des zones siamoises,
quelle est la première requête à échouer dans la chaine suivante de requêtes,
en raison d‟un manque de mémoire disponible ?
Requêtes : 50 Ko, 150 Ko, 90 Ko, 130 Ko, 70 Ko, 80 Ko, 120 Ko, 180 Ko, 60 Ko,
14. Dans le problème de l‟exercice précédent, au moment de l‟échec de la
requête, combien de mémoire est gaspillée en raison de la fragmentation
interne et combien l‟est en raison de la fragmentation externe ?
15. Pourquoi la taille de la page est toujours une puissance de 2 ?
16. Dans la pagination (en partant du principe que la taille de la page est une
puissance de
2), pourquoi n‟est-il pas nécessaire d‟ajouter l‟offset de la page à l‟adresse du
départ du cadre de page pour générer une adresse physique ?
17. Sur un système de pagination simple de 224 octets de mémoire physique, 256
pages d‟espace d‟adressage logique et une taille de page de 210 octets,
combien de bits se trouvent dans une adresse logique ?
18. Sur un système de pagination simple de 224 octets de mémoire physique, 256
pages d‟espace d‟adressage logique et une taille de page de 210 octets,
combien de bits de l‟adresse physique spécifient le cadre de page ?
19. Sur un système de pagination simple de 224 octets de mémoire physique, 256
pages d‟espace d‟adressage logique et une taille de page de 210 octets,
combien de bits sont nécessaires pour stocker une entrée dans la table de
pages (de quelle largeur est la table de pages) partons du principe que
chaque entrée de table d‟adressage contient un bit valide / invalide en plus du
numéro de cadre de page.
20. Sur un système de pagination simple avec une table de pages contenant 64
entrées de 11 bits (bit valide et invalide y compris) chacune et une taille de
page de 512 octets, combien de bit dans l‟adresse logique spécifient l‟offset à
l‟intérieur d‟une page ?
© Kasengedia motumbe pierre 230
Page 231 sur 270
21. Sur un système de pagination simple avec une table de pages contenant 64
entrées de 11 bits (bit valide et invalide y compris) chacune et une taille de
page de 512 octets, quelle est la taille de l‟espace d‟adressage logique.
22. Sur un système de pagination simple avec une table de pages contenant 64
entrées de 11 bits (bit valide et invalide y compris) chacune et une taille de
page de 512 octets, combien de bit dans l‟adresse physique spécifient l‟offset
au sein d‟un cadre de page ?
23. Sur un système de pagination simple avec une table de pages contenant 64
entrées de 11 bits (bit valide et invalide y compris) chacune et une taille de
page de 512 octets, quelle est la taille de l‟espace d‟adressage physique ?
24. Sur un système de pagination simple, l‟espace d‟adressage logique peut-il
être plus grand que l‟espace d‟adressage physique ? peut-il être plus petit ?
25. Un ordinateur possède un espace d‟adressage virtuel de 32 bits et des pages
de 1024 octets. Une entrée de table de pages prend 4 octets. Une table de
page de plusieurs niveaux est utilisée car chaque table doit être contenue
avec une page. Combien faut-il de niveaux ?
26. Sur un système paginé simple, des registres associatifs contiennent des
entrées de pages les plus actives et la table de pages entière est stockée
dans la mémoire principale. Si les références satisfaites par les registres
associatifs prennent 90 ns, et que les références à travers les tables de pages
de la mémoire principale prennent 220 ns, quel est le temps d‟accès effectif si
60% de toutes les références de la mémoire trouvent leur entrée dans les
registres associatifs.
27. Quel avantage offre la segmentation par rapport à la multiprogrammation à
partition variables ?
28. Sur un système utilisant la pagination et la segmentation, l‟espace
d‟adressage virtuel se compose au maximum de 8 segments, chacun d‟entre
eux pouvant avoir une longueur qui atteint 229. Le matériel pagine chaque
segment en page de 256 octets.
Combien de bits de l‟adresse virtuelle spécifient ?
29. Pourquoi la pagination est-elle plus rapide que la segmentation ?
© Kasengedia motumbe pierre 231
Page 232 sur 270
30. Quelles sont les deux principales différences entre la segmentation et la
pagination ?
31. Dans ce problème, utilisez des valeurs décimales, une taille de page de 2000
octets et la table de pages suivante :
Int /out cadre
In 20
Out 22
In 200
In 150
Out 30
Out 50
In 120
In 101
Parmi les adresses virtuelles suivantes, laquelle génère un défaut de page ?
Pour celles qui ne génèrent pas de défauts de page, quelle est leur adresse
physique après translation ?
a) 10451
b) 5421
c) 14123
d) 9156
32. Donnez un exemple d‟accès à des variables à l‟intérieur d‟un programme
conduisant à une localité temporelle.
33. Donnez un exemple d‟accès à des variables à l‟intérieur d‟un programme
conduisant à une localité spatiale.
34. Soit un système d‟exploitation, qui utilise l‟allocation contiguë par partition
variable. On considère à l‟instant T l‟état suivant de la mémoire centrale (les
zones hachurées sont libres):
© Kasengedia motumbe pierre 232
Page 233 sur 270
A B C D E F
(210Ko) (280Ko) (490Ko) (560Ko) (280Ko) (140Ko)
140Ko 350Ko 630Ko 700Ko 840Ko
A) Représenter l‟évolution de la mémoire centrale, en fonction de l‟arrivée des
processus K, L, M et O, selon cet ordre: K (280 Ko), L (630 Ko), M (350 Ko) et O (70
Ko) :
1) en utilisant la stratégie d‟allocation First Fit
2) en utilisant la stratégie d‟allocation Best Fit
3) en utilisant la stratégie d‟allocation Worst Fit
B) Nous désirons choisir un moyen de mémorisation des parties libres et parties
occupées de la mémoire, ainsi qu‟elle était représentée avant l‟arrivée des nouveaux
processus.
1) Donner la table de bits correspondant à la répartition précédente, en supposant
que l‟unité d‟allocation est le 70Ko.
2) Soit une représentation des parties libres/occupées sous la forme d‟une liste
chaînée, dont chaque nœud contient un bit d‟état (L/O), la taille de la partition, et
un pointeur sur la prochaine partition. Représenter la liste chaînée correspondant
à la répartition précédente (unité d‟allocation : 70Ko).
35. Soit une mémoire centrale utilisant la technique d‟allocation contiguë par
partitionnement fixe. Cette mémoire est composée de 5 partitions P1, P2, P3,
P4 et P5. Ces partitions ont pour tailles respectives 100, 500, 200, 300 et 600
KO. Soient 4 processus A, B, C et D de tailles respectives 212, 417, 112 et
426 KO. Donner les différents états de la mémoire centrale pour charger les 4
processus A, B, C et D (dans l‟ordre) en utilisant les algorithmes d‟allocation
suivants :
a- FIRST-FIT
b- BEST-FIT
c- WORST-FIT
d- NEXT-FIT
© Kasengedia motumbe pierre 233
Page 234 sur 270
36. On dispose d‟un espace adressable virtuel 4 Go (adressable sur 32 bits), et
d‟un espace physique 32 Mo (adressable sur 25 bits). Une page occupe 1 Ko
(déplacement sur 10 bits). Quelle est la taille de la table des pages (en octet),
sachant qu‟une case de la table de page comporte 1 bit de présence et un n°
physique de la page ?
37. Considérons une architecture caractérisée par les hypothèses suivantes :
Une table de page de taille 128Ko ;
Chaque entrée de la table contient une référence vers un cadre de page et un bit de
présence/absence ;
La taille d‟une page est de 64ko ;
La taille de la mémoire physique est de 2Go ;
Une adresse virtuelle indexe un octet ;
Répondez aux questions suivantes en justifiant toujours votre réponse :
1. Combien de cadre de page contient la mémoire physique ?
2. Quelle est la taille en bit d‟une entrée de la table de pages ? 3. Quel est le nombre
d‟entrées dans la table de pages ?
4. Quelle est la taille de la mémoire virtuelle de cette
architecture ? 5. Quelle est la taille en bit du bus d‟adresse de
cette architecture ?
38. On considère un système utilisant la technique de pagination et ayant les
caractéristiques suivantes :
Une table de page ayant 216 entrées ;
Chaque entrée de la table de pages est codée sur 16 bits. Une entrée contient un
numéro de cadre de page et un bit de présence/absence.
Le déplacement (offset) est codé sur 16 bits
Une adresse virtuelle indexe 1 octet
1. Quelle est la taille d‟une page ?
© Kasengedia motumbe pierre 234
Page 235 sur 270
2. Quelle est la taille de la mémoire physique ?
3. Quelle est la taille de la mémoire virtuelle ?
4. Quelle est la taille (en bit) du bus d‟adresse de ce système ?
39. Soit la suite des pages suivantes {1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5}. Donner
l‟évolution de la mémoire centrale en utilisant les algorithmes de
remplacement de page suivants et en donnant le nombre de défauts de page:
Pour l'algorithme FIFO avec nombre de case mémoire=3, puis avec nombre de case
mémoire =4. Que constatez-vous ? Expliquez.
Pour l'algorithme optimal avec nombre de case mémoire=4.
4) GESTION DE SYSTEME DES FICHIERS
1. Dans quelle mesure un fichier avec deux noms est-il différent des deux copies d‟un
même fichier
2. Sur un système qui monte les systèmes de fichiers sur des dispositifs individuels
dans un seul système de fichier, une disquette a été montée au point /usr/mount. Si
le système de fichiers de la disquette contient un fichier de nom de /data/jan, quel
sera le nom de ce fichier dans le système de fichiers global ?
3. Donnez un avantage d‟avoir la partition spécifiée comme faisant partie du nom de
fichier (comme c‟est le cas dans DOS)
4. Donnez un avantage de permettre aux partitions d‟être montées sur un espace de
nommage unifié.
5. Quel avantage présente l‟autorisation des objets qui ne sont pas des fichiers dans
une structure de système des fichiers ?
6. Pourquoi l‟ajout d‟une opération copy (copie) n‟accroit pas les fonctionnalités ?
7. Il est possible de renommer un fichier en copiant ce dernier, puis en supprimant
l‟original. L‟existence d‟une opération de renommage offre-t-elle des nouvelles
fonctionnalités ?
© Kasengedia motumbe pierre 235
Page 236 sur 270
8. Dans quelle mesure le fait d‟avoir un fichier avec plusieurs noms complique-t-il
l‟opération de suppression dans un système de fichiers ?
9. Est-il possible de simuler dans un logiciel une structure de répertoire multiniveaux
sur un système qui ne prend en charge qu‟une arborescence à un niveau ?
10. Le système DOS considère chaque fichier comme étant simplement une séquence
d‟octets de 8 bits. Quelle structure d‟enregistrement un tel système peut-il utilisé ?
11. Un fichier à accès séquentiel possède des enregistrements d‟une taille fixe de
15 octets. Si l‟on part du principe que le premier enregistrement est l‟enregistrement
1. A quel emplacement logique se trouve le premier octet de l‟enregistrement 5 ?
12. Un fichier à accès direct possède des enregistrements d‟une taille fixe de 15
octets. Si l‟on part du principe que le premier enregistrement est
l‟enregistrement 1. A quel emplacement logique se trouve le premier octet de
l‟enregistrement 5 ?
13. Un fichier à accès séquentiel ou direct possède des enregistrements d‟une
taille fixe de S octets. A quel emplacement logique possède commence le
premier octet de l‟enregistrement N ?
14. Un programme vient de lire le premier enregistrement d‟un fichier à accès
direct. Il veut ensuite lire le dixième enregistrement. Combien
d‟enregistrement doit lire le programme avant d‟entrer dans le dixième ?
15. Sur un système qui a recours à l‟accès indexé, que ce passe-t-il si aucun
enregistrement ne correspond à la valeur d‟index sur une requête de lecture ?
16. Sur un système basé sur la capacité, chaque fichier est associé à une valeur
unique de 16 bits. Pour chaque fichier, chaque utilisateur peut avoir la
capacité d‟écriture ou celle de lecture. Combien d‟octets sont nécessaires
pour stocker chaque donnée d‟accès de l‟utilisateur ?
17. Sur un système qui a recours à l‟attribution fixe de blocs avec des
enregistrements de 20 octets et des blocs de 50 octets, combien d‟espace est
gaspillé dans chaque bloc ?
© Kasengedia motumbe pierre 236
Page 237 sur 270
18. Sur un système qui utilise l‟attribution non étendue de blocs et de blocs de
100 octets, un fichier contient des enregistrements de 20, 50, 35, 70, 40, 20.
Quel pourcentage d‟espace est gaspillé dans les blocs alloués au fichier ?
19. Sur un système qui utilise l‟allocation contiguë, calculer le numéro du bloc
physique correspondant au bloc logique, sachant que le fichier est stocké en
commençant au bloc physique indiqué (en partant du principe que le numéro
de blocs commence par
1).
a) Bloc physique de départ : 1000 ; bloc logique : 12
b) Bloc physique de départ : 75 ; bloc logique : 2000
c) Bloc physique de départ : 150 ; bloc logique : 25
20. Prenons un système dans lequel une entrée de répertoire peut stocker jusqu‟à
16 adresse de blocs de disque. Pour les fichiers qui ne dépassent pas 16
blocs, les 16 adresses servent de table d‟index du fichier. Pour les fichiers
supérieurs à 16 blocs, les adresses pointes vers les blocs indirects qui à leur
tour pointent vers des 256 blocs de fichiers. Un bloc se compose de 1024
octets. Quelle taille peut avoir le plus gros fichier ?
5) GESTION DES ENTREES ET SORTIES
1. sur un système avec un bus unique de 32 bits et 100 MHz (cycle de 10 ns), le
contrôleur du disque utilise l‟accès direct à la mémoire pour transférer des
données depuis et vers la mémoire, à un débit de 40 Mo/s. supposons que
l‟ordinateur récupère et exécute une instruction de 32 bits par cycles,
lorsqu‟aucun cycle n‟a été volé. A quel pourcentage le contrôleur de disque
va-t-il ralentir l‟exécution des instructions ?
2. un S.E qui a recours aux E/S mappées en mémoire possède un espace
d‟adressage de 16 bits. Les adresses comportant des uns dans les deux bits
© Kasengedia motumbe pierre 237
Page 238 sur 270
les plus significatifs font références aux périphériques. Quel est le volume
maximal de mémoire pouvant être référencé dans un tel système ?
3. sur un système de mémoire virtuelle, donnez une fonction pouvant être
proposée aux utilisateurs d‟un système mappé en mémoire et qui ne peut être
offert sur un système à ports d‟E/S ?
4. l‟attente active d‟E/S est-elle appropriée pour le type suivant des systèmes ?
un système dédié au contrôle d‟un seul périphérique d‟E/S
un ordinateur personnel exécutant un système d‟exploitation mono tâche
un poste de travail s‟exécutant comme un serveur web de manière intensive.
5. Un fichier disque contient des enregistrements de taille fixe de 32 octets. Les
E/S physiques sont des blocs de 512 octets stockés dans un tampon du S.E.
si un processus lit les enregistrements du fichier de manière séquentielle, quel
pourcentage des requêtes lues finira en opération d‟E/S ?
6. Les E/S bloquantes empêchent un processus de poursuivre son exécution
jusqu‟à la réalisation de l‟E/S. comment les processus peuvent-ils atteindre
cette fonctionnalité sur des systèmes avec des E/S non bloquantes ? cette
implémentation présente-t-elle des inconvénients ?
7. Où sont implémentées les tâches suivantes, dans l couche des E/S logiques
dans les pilotes des périphériques ou dans les deux ? a) Vérification des
autorisations d‟accès
b) Ordonnancement des opérations d‟E/S
c) Vérification pour savoir si les informations requises se trouvent dans les caches
d) Traitement d‟une interruption d‟un périphérique.
8. Sur un système qui utilise un cache de disque, le temps d‟accès moyen est
fonction du temps d‟accès moyen du cache, du temps d‟accès moyen au
disque et du taux de réussite. Quel est le temps d‟accès moyen d‟après les
paramètres suivants :
a) Cache : 1 ms disque : 100 ms taux de réussite : 25%
b) Cache : 1 ms disque : 100 ms taux de réussite : 50%
© Kasengedia motumbe pierre 238
Page 239 sur 270
9. Citez un périphérique sur un ordinateur personnel ordinaire pour lequel la mise
en cache par écriture différée est une politique souhaitable ? trouvez un autre
périphérique pour lequel la mise en cache par écriture immédiate serait un choix
plus judicieux.
10. Si la mémoire vidéo commence à l‟adresse A0000000 (hex) pour un moniteur
couleur de 16 bits et une résolution de 1024 x 768, où se termine-t-elle ?
11. Expliquez brièvement l'interaction entre le pilote de périphériques, le contrôleur
et le périphérique lui-même.
© Kasengedia motumbe pierre 239
Page 240 sur 270
ETUDE DE CAS : LE SYSTEME D’EXPLOITATION LINUX
PRESENTATION DE LINUX
Unix est né, en 1969, dans les Bell Laboratoires (AT&T) sous l‟impulsion de deux
hommes, Ken Thompson et Dennis Ritchie. Il était destiné à fournir aux
programmeurs maison un environnement de développement auquel ils avaient goûté
avec Multics (MULTiplexed Information and Computing Service). Suite au
développement par Dennis Ritchie du langage C, adapté à ce type de
programmation, une nouvelle version d‟Unix est réécrite, en grande partie en C, en
1973. Pour la première fois, un système d‟exploitation est écrit en langage non
assembleur, et devient donc portable, du moins en principe.
En 1974, la version 4 d‟Unix est « donnée » à l‟université de Berkeley, Californie, qui
commence alors son propre développement du système. C‟est le début d‟une
divergence entre les deux versions d‟Unix : AT&T et BSD (Berkeley Software
Distribution). Le succès d‟Unix devient alors considérable dans les universités
américaines : seul système d‟exploitation disponible en source, sur mini–ordinateur
(PDP11), il est adopté par les départements de « computer science » des universités
pour la formation des étudiants en informatique système. Le nombre d‟experts Unix
croît à une vitesse considérable. De 1977 à 1979, Ken Thompson et Dennis Ritchie
© Kasengedia motumbe pierre 240
Page 241 sur 270
réécrivent Unix pour le rendre réellement portable. Et en 1980 les premières licences
de distribution d‟Unix System V d‟AT&T sont délivrées aux constructeurs.
L‟année 1984 voit la création du groupe X/Open, composé de constructeurs
informatiques ayant adopté Unix et se donnant pour but de normaliser les différentes
versions d‟Unix. Cette même année est créée par le MIT la norme X Window :
système de multifenêtrage graphique, indépendant d‟Unix, mais qui contribuera au
succès de ce système.
En 1987, AT&T, propriétaire d‟Unix, et Sun, un des leaders du marché des stations
de travail et utilisant la version BSD, concluent une alliance visant à une
convergence entre les deux systèmes.
En 1988 sont créés deux consortiums :
OSF (Open Software Fondation), (DEC, HP, IBM, …) travaillant à la
normalisation d‟un nouvel Unix baptisé OSF1 ;
Unix International (AT&T, Sun, …) cherchant à imposer Unix System V. En
1992, Digital Equipment propose DEC/OSF1, première version
commercialement disponible d‟OSF1, et Sun propose la première version
commerciale résultant de la convergence entre System V et BSD. Il y a
encore plusieurs Unix, mais les différences ne représentent plus une difficulté
pour l‟utilisateur.
Le succès d‟Unix tient à plusieurs facteurs :
Le plus important, à l‟origine, est son adoption par les universités américaines
pour la formation des étudiants, ce qui a sans aucun doute permis de former
plus d‟experts sur ce système que sur aucun autre.
Un autre facteur déterminant est le besoin de standard exprimé par les
utilisateurs, qu‟ils soient sociétés de développement de logiciel ou utilisateurs
finals. Dans un monde où le changement de fournisseur avait toujours été
catastrophique pour l‟utilisateur, les systèmes ouverts offrent des
perspectives d‟évolution en douceur tout en maintenant une concurrence
entre fournisseurs. Cette pression des utilisateurs est un fait nouveau dans
© Kasengedia motumbe pierre 241
Page 242 sur 270
l‟histoire de l‟informatique. La participation de groupes d‟utilisateurs et
d‟éditeurs de logiciels aux consortiums dirigeant l‟évolution d‟Unix n‟a de réel
équivalent pour aucun autre système d‟exploitation.
© Kasengedia motumbe pierre 242
Page 243 sur 270
Unix est le seul système d‟exploitation multi–utilisateur disponible à faible coût
pour une société développant un système à base de processeur standard.
Linux
Unix est l‟un des systèmes d‟exploitation le plus populaire au monde, en raison du
grand nombre d‟architectures qu‟il supporte. Il existe des versions d‟Unix pour tous
les types d‟ordinateurs, y compris les ordinateurs personnels.
SCO Unix est le système le plus ancien sur cette plateforme. Le premier package
Unix, de nom SCO Xenix System pour Intel 8086 et 8088, date de 1983. La société
SCO est maintenant propriétaire de la marque Unix, qu‟elle a achetée à la société
Novell, qui l‟avait elle–même achetée à une filiale d‟ATT (Unix System Labs).
SCO Unix existe toujours. Unix est maintenant une marque déposée de
l‟OpenGroup.
L‟idée d‟un système d‟exploitation libre est né en 1984 avec la Free Software
Foundation (FSF). Les bases de l‟environnement ont été définies. Puis des outils,
tels des éditeurs, des compilateurs, des shells ... ont été développés. Linux, système
Unix libre sur plate–forme PC, était au départ un projet de loisirs de Linus Torvalds,
étudiant finlandais. Linux fut inspiré de Minix, un petit système Unix développé par
Andrew Tanenbaum. Les premières discussions autour de Linux se passèrent sur le
forum comp.os.minix. Ses débuts furent la maîtrise de la commutation de tâches du
mode protégé du processeur 80386, tout fut écrit en assembleur. Le 5 octobre 1991,
Linus Torvalds annonça la première version « officielle » de Linux, la version 0.02.
Après la version 0.03, Linus passa directement en version 0.10.
Linux a continué à évoluer grâce à Linus Torvalds et aussi aux efforts de nombreux
volontaires répartis aux 4 coins du monde, reliés entre eux par le réseau Internet.
Sous la pression de ces co–développeurs, Linus Torvalds a accepté que tout le code
soit sous licence GPL (General Public Licence), créant ainsi un noyau Unix
totalement libre. Grâce à ce réseau, toute personne intéressée par le
développement de ce système peut aider : porter des programmes, écrire de la
© Kasengedia motumbe pierre 243
Page 244 sur 270
documentation, corriger des bogues… On compte actuellement plus de 18 millions
d‟utilisateurs de Linux, et nombreux sont ceux qui contribuent d‟une façon ou d‟une
autre au développement de ce système et de son environnement.
À ce jour, Linux est un vrai système 32 bits, multitâches, multi-utilisateurs, réseau et
complet.
Il s‟installe sur la plupart des PC (avec ou sans autre système d‟exploitation). Il
supporte une large gamme de programmes tels que X Window, TCP/IP, C/C ++GNU
et d‟autres outils GNU, le courrier électronique, les news, des outils dérivés de
LateX (LyX), ou des outils de bureautique. Une machine sous Linux est modulaire et
paramétrable à souhait. Elle peut donc servir de station personnelle ou de serveur
(Web, ftp…).
Linux est une libre implémentation des spécifications POSIX, avec des extensions
System V et Berkeley. Ceci accélère la propagation de Linux au sein de
l‟administration, qui exige la conformité POSIX de la plupart des systèmes qu‟elle
utilise. Linux est un phénomène très important et peut devenir une alternative au
système Microsoft Windows, grâce notamment aux outils bureautiques…
Linux est le plus souvent diffusé sous forme d‟une distribution, un ensemble de
programmes (noyau, sources des utilitaires, commandes, applications) formant
après installation un système complet. Par conséquent, il est de plus en plus utilisé
dans les sociétés commerciales comme station de travail et serveur.
Le succès de Linux tient à plusieurs facteurs :
Le code source du système, ainsi que le noyau, les programmes utilisateurs,
les outils
de développement sont librement distribuables (licence GPL, ou GNU),
Linux est compatible avec un certain nombre de standards Unix au niveau du
code source, incluant les spécifications POSIX, system V et BSD,
Un très grand nombre d‟applications Unix gratuites disponibles sur Internet se
compilent sous Linux sans aucune modification,
© Kasengedia motumbe pierre 244
Page 245 sur 270
Le système Linux a été développé pour les processeurs Intel et utilise toutes
les fonctionnalités de ce processeur.
LES DISTRIBUTIONS DE LINUX
DEBIAN : Debian a longtemps été la seule distribution entièrement et
uniquement composée de logiciels libres et open source ce qui lui vaut
toujours le nom officiel de Debian GNU/Linux.
un nombre gigantesque de packages qui se chiffre en milliers, un logiciel
d‟installation appelé APT très pratique et performant,
une distribution 100 % open source,
une stabilité à toute épreuve pour un environnement de production, de
nombreux dépôts de logiciels.
Ces avantages entraînent aussi quelques inconvénients :
des packages souvent anciens dans les dépôts stables,
des mises à jour de la distribution irrégulières et trop espacées,
des risques liés à la multiplication des paquets et des dépendances,
une installation et une configuration parfois compliquées pour le débutant.
UBUNTU : Le mot Ubuntu est un mot du langage africain bantou signifiant «
humanité aux autres » ou encore « je suis ce que je suis grâce à ce que nous
sommes tous ». Cette définition reflète ce qu‟est la distribution : un dérivé de
Debian dont le but est de fournir des logiciels plus récents et très fortement
axés sur la convivialité et l‟ergonomie à l‟aide du support du plus grand
nombre :
© Kasengedia motumbe pierre 245
Page 246 sur 270
une distribution issue de Debian,
une compatibilité avec les packages de Debian,
un système d‟installation très simple,
une sortie tous les 6 mois,
un environnement graphique agréable.
RED HAT, FEDORA ET CENTOS : Les distributions Red Hat ont très
fortement marqué les esprits car elles sont restées la référence pendant
presque vingt ans.
Chaque version était innovante tant dans l‟intégration des logiciels que dans
son installateur (appelé Anaconda) et ses outils de configuration.
En 2003 la version 9.0 est la dernière destinée officiellement au grand public.
Les versions suivantes ont été confiées au projet communautaire Fedora qui
continue tous les six mois à sortir une nouvelle version. Red Hat se concentre
maintenant sur le monde de l‟entreprise avec des distributions commerciales
appelées RHEL (Red Hat Enterprise Linux).
des versions professionnelles destinées aux entreprises,
des solutions du poste de travail au plus gros serveur,
des architectures matérielles nombreuses,
un support commercial,
des mises à jour assurées pendant sept ans, voire plus avec un support
étendu, 100 % libre.
Red Hat est l‟une des distributions préférées des entreprises et ceci pour de
nombreuses raisons :
c‟est une distribution historique ayant acquis le support d‟un grand nombre
d‟éditeurs, Red Hat propose un support de très haut niveau,
© Kasengedia motumbe pierre 246
Page 247 sur 270
Red Hat ne propose pas qu‟un système d‟exploitation, mais tout un
écosystème (Cloud, Virtualisation, Serveurs applicatifs, stockage,
automatisation)
OpenSUSE : Se prononçant opensousse, OpenSUSE est une distribution
d‟origine allemande datant de 1992. Le nom de l‟entreprise luimême était un
hommage au célèbre Konrad Zuse l‟inventeur des ordinateurs modernes.
La distribution est originellement basée sur la distribution Slackware. En 1996
SuSE se rapproche d‟une distribution française appelée Jurix créée par
Florian La Roche qui est utilisée comme base à la place de Slackware. Cette
même année le développement de l‟outil YaST est démarré et la version 4.2,
en fait totalement nouvelle, sort. Au même moment SuSE utilise le nouveau
gestionnaire de packages de Red Hat appelé RPM.
Etc.
Installation
L‟installation de Linux sur une machine est une opération assez simple car
interactive dans chaque distribution. Toutefois, le meilleur conseil que nous
pourrions donner est de choisir une distribution accompagnée d‟une documentation
papier d‟installation complète. Il est également possible (et recommandé pour un
débutant) d‟acheter une nouvelle machine avec Linux déjà installé. Si vous voulez
installer Linux sur une machine existante, avant de commencer, vous devriez savoir
répondre aux quelques questions suivantes :
Quel est le débit de ma connexion à l‟Internet ? Si l‟accès à l‟Internet se fait
par un modem, même à 56K, une distribution gratuite téléchargée coûtera
beaucoup plus cher qu‟un jeu de CD avec la documentation !
© Kasengedia motumbe pierre 247
Page 248 sur 270
Mes sauvegardes me permettront-elles de remettre mon système dans son
état actuel en cas de problème ? Si la réponse est oui, je peux passer à la
suite.
Mon système dispose-t-il d‟un espace disque disponible d‟au moins 1 Go ? Si
ce n‟est pas le cas, il est inutile d‟aller plus loin. Si cet espace disque
disponible se trouve dans des partitions déjà formatées et utilisées par ailleurs,
il faudra libérer cet espace en réduisant la taille des partitions (et ceci nous
ramène à la question précédente sur les sauvegardes). Linux aura besoin de
ses propres partitions.
Ce système Linux sera-t-il autonome ou intégré à un réseau local ? Dans le
premier cas, préférer une installation de type « station de travail » alors que
dans le deuxième, une installation de type « serveur » sera peut-être plus
adaptée. Dans ce dernier cas, vous devrez toutefois acquérir des
connaissances d‟administration Unix et réseau.
de choisir une installation de type workstation ;
si votre poste est à votre domicile et que vous utilisez une connexion ADSL,
mettre en place une protection dite « firewall moyen ».
Une fois l‟installation terminée, il est important de créer un deuxième utilisateur. Ce
compte sera en fait votre compte de travail. Vous ne vous connecterez en tant
qu‟administrateur système (root) que pour lancer des commandes purement
système.
Il sied de préciser que les informations présentées sur cette partie ne donnent que
les outils de bases permettant aux étudiants d'utiliser Unix/Linux. Nous
recommandons aux étudiants d‟exploiter d'autres documentations sur internet et
dans la bibliothèque centrale de l'université mais aussi les différentes présentations
complémentaires lors de travaux pratiques pendant les séances de Laboratoires.
A la fin de ces travaux Pratiques, l'étudiant doit être capable de :
© Kasengedia motumbe pierre 248
Page 249 sur 270
Pratiquer les concepts théoriques (processus, gestion de mémoire,
communication entre processus) appris lors du cours magistral dans un
système Unix/Linux.
Travailler d'une manière autonome dans un système d'exploitation Unix/Linux.
Maîtriser les commandes des bases pour administrer un système
d'exploitation Unix/Linux
Automatiser les taches d'administration moyennant des programmes écrits en
scripts Shell
Maîtriser les concepts et philosophies des logiciels libres
Les notions apprises lors de travaux pratiques pourront aider l'étudiant à se préparer
pour un examen international de certification Linux Junior mais aussi viser le métier
d'administrateur système Unix/Linux plus-tard.
Unix en tant que système d'Exploitation
Unix est un système d‟exploitation, constitué du noyau Unix, d‟un interpréteur de
commandes et d‟un grand nombre d’utilitaires.
Le noyau assure la gestion des ressources physiques (processeur, mémoires,
périphériques) et logicielles (processus, fichiers…). L‟interface entre les
programmes des utilisateurs et le noyau est définie par un ensemble de procédures
et de fonctions, soit directement au niveau du noyau, soit par l‟intermédiaire de
bibliothèques. Pour ce qui concerne l‟architecture du noyau proprement dit, les
éléments caractéristiques sont les suivants :
Le noyau est constitué d‟un ensemble de procédures et de fonctions écrites
pour l‟essentiel en langage C
La structure du noyau est monolithique et la notion de couche, contrairement
à d‟autres systèmes, n‟existe pas.
Comme c‟est le cas avec tout système d‟exploitation, l‟utilisateur d‟Unix n‟accède
pas directement au noyau mais à un interpréteur de commandes : le shell (le choix
© Kasengedia motumbe pierre 249
Page 250 sur 270
de ce terme indique qu‟Unix est « caché » à l‟intérieur de cette coquille qui en est la
seule partie visible par l‟utilisateur).
Une différence importante entre Unix et les autres systèmes d‟exploitation est qu‟il
existe plusieurs shells différents : richesse incomparable, mais source de confusion.
L‟interface utilisateur d‟Unix est donc constituée :
D‟un ensemble de programmes exécutables : les commandes.
Du shell lui–même, interpréteur de commandes mais aussi, plus que dans
n‟importe quel autre système d‟exploitation, langage de commandes
permettant d‟écrire des programmes d‟une grande complexité. Ces
programmes de commandes, appelés scripts, seront développés à la partie
appropriée.
Parmi les utilitaires, on trouve :
différents langages de programmation : C++, Fortran , Java, Perl, TCL/TK,
GTK;
des utilitaires de développement et maintenance de logiciels : make,
assembleur, éditeurs de lien ;
des outils de bureautique : messagerie, traitement de
textes ; des outils de mise au point de programmes ;
des éditeurs de textes (sed, vi et vim, emacs, gnotepad) ;
des formateurs de textes ;
un système de messagerie complet (courrier, conversation en temps réel…) ;
un analyseur syntaxique yacc, un générateur d‟analyseur lexical lex ;
un environnement graphique distribué : X11 ;
les outils pour le Web (Apache, Netscape…)
VUE GÉNÉRALE D’UNIX
Unix est un système multi–utilisateur « temps partagé », c‟est–à–dire qu‟il est
possible de connecter sous Unix plusieurs utilisateurs simultanément. Chacun a à sa
© Kasengedia motumbe pierre 250
Page 251 sur 270
disposition l‟ensemble des ressources du système, le partage étant effectué par
découpage du temps et récupération des temps morts d‟entrée–sortie. Comme tout
système multi–utilisateur, Unix comporte des mécanismes d‟identification et de
protection permettant d‟éviter toute interférence (accidentelle ou malveillante) entre
utilisateurs.
Unix est un système multitâche, c‟est–à–dire qu‟un utilisateur peut lancer plusieurs
tâches simultanément. Un processus (ou tâche) correspond à l‟exécution d‟un
programme à un instant donné, le programme étant en lui–même quelque chose
d‟inerte rangé sur disque sous la forme d‟un fichier ordinaire exécutable.
Le système de fichiers est un système hiérarchisé arborescent. Il se retrouve sur
beaucoup d‟autres systèmes d‟exploitation (GCOS, DOS, VMS…). Les entrées–
sorties sont généralisées. Les périphériques sont considérés, du point de vue de
l‟utilisateur, comme des fichiers.
Le système est écrit à 99 % en C, ce qui facilite l‟appel au noyau par des
applications écrites en langage C. Ce système a été écrit de façon à être réellement
portable.
CONNEXION D’UN UTILISATEUR
L'utilisateur
Pour permettre à de nombreux utilisateurs de travailler sur la même machine, Linux
met en oeuvre des mécanismes d‟identification des utilisateurs, de protection et de
confidentialité de l‟information, tout en permettant le partage contrôlé nécessaire au
travail en groupe. Tout utilisateur est identifié par un nom (login name) et ne peut
utiliser le système que si son nom a préalablement été défini par l‟administrateur du
système (ou super–utilisateur), dont le nom est généralement root. Ce dernier a tous
les droits et aucune restriction d‟accès ne lui est applicable.
Connexion
Lors du démarrage d‟une machine, plusieurs étapes se succèdent :
© Kasengedia motumbe pierre 251
Page 252 sur 270
mise sous tension de la machine et de ses périphériques,
bootstrap du système (charger le noyau Linux),
montage des disques,
vérification des systèmes de fichiers (fsck), passage en multi–utilisateur,
lancement des services.
On obtient alors, affichée à l‟écran, l‟invite “ login : ”
Le système Linux étant un système multi–utilisateur et multitâche, plusieurs
personnes sont connectées simultanément et peuvent travailler sans interférer les
unes avec les autres. Cela nécessite un système de protection des fichiers propre à
chaque utilisateur, système que nous développerons à la partie concernant la
gestion des droits et protection des utilisateurs. Ainsi pour qu‟un utilisateur puisse
travailler avec le système Linux, il doit établir une connexion (on dit aussi ouvrir une
session).
Il est à signaler que le système d'exploitation Linux offre deux types de connexions à
savoir :
a) connexion en mode graphique : vous utilisez l'outil graphique pour ouvrir une
session.
b) connexion en mode texte : vous utilisez la Console pour ouvrir une session.
Tout au long de nos travaux pratiques, c'est le mode texte qui sera utilisé.
Remarques
En cas d‟erreur lors de la saisie du nom ou du mot de passe, le système
donne à l‟utilisateur la possibilité de recommencer.
Une erreur lors de la saisie du nom peut être annulée par la combinaison de
touches <ctrl–u>.
Mot de passe
© Kasengedia motumbe pierre 252
Page 253 sur 270
Lors d‟une première connexion, il est fortement conseillé à l‟utilisateur de s‟attribuer
un mot de passe. Ce mot de passe sera chiffré (le chiffrage est purement logiciel et
non inversible). Il sera impossible de le retrouver à partir du mot chiffré, même pour
le super–utilisateur
(l‟administrateur de la machine). Si l‟utilisateur oublie son mot de passe,
l‟administrateur ne peut que le détruire pour lui permettre d‟en définir un nouveau.
Un utilisateur peut à tout moment changer son mot de passe, ou s‟en attribuer un
par la commande passwd. Lors du changement, il faut fournir l‟ancien mot de passe.
Si vous avez réalisé vous-même l‟installation, une fois cette dernière terminée,
connectezvous au système en tant qu‟administrateur (répondre root au login :). Il
faut immédiatement définir un mot de passe pour cet utilisateur root aussi appelé
super-utilisateur. Ce mot de passe doit contenir plus de six caractères. Il vous
permettra de vous connecter en tant qu‟utilisateur root et ainsi d‟avoir tous les droits
sur le système.
Mais attention il ne faut jamais l‟utiliser comme un compte personnel. Il doit être
utilisé pour réaliser des modifications dans votre système. C‟est pourquoi la
première action d‟un administrateur est de créer un compte personnel. Pour ceci, il
suffit d‟utiliser la commande useradd.
Fichiers /etc/passwd et /etc/group
La liste des utilisateurs du système est généralement dans le fichier /etc/passwd. Ce
fichier est accessible en lecture à tous les utilisateurs et contient, pour chaque
utilisateur, les champs suivants :
nom de connexion (login) de l‟utilisateur,
un caractère x
le numéro de l‟utilisateur (UID = user identifier),
le numéro de groupe (GID = group identifier),
[ commentaire ],
© Kasengedia motumbe pierre 253
Page 254 sur 270
le répertoire
d‟accueil,
[ programme à
lancer ].
NB : Les points cités entre crochets ne sont pas obligatoires.
Exemple : voici un extrait du fichier /etc/passwd et /etc/group
Un groupe d’utilisateurs rassemble un certain nombre d‟utilisateurs pouvant
facilement partager des fichiers. Ce groupe est répertorié dans un fichier (/etc/group)
qui est constitué par
:
nom du groupe,
un champ vide ou contenent un caractère x ou * numéro du groupe (GID =
group identifier), [ liste des utilisateurs membres du groupe ].
Les notions d‟UID et de GID sont importantes pour la protection des fichiers (il ne
faut pas les changer inconsidérément). Un utilisateur a un groupe principal de
rattachement et peut appartenir à plusieurs autres groupes.
Déconnexion
Elle peut se réaliser de deux manières à savoir :
En mode texte
Pour sortir de session, vous pouvez utiliser la commande exit. La déconnexion est
effective lorsqu‟apparaît l‟invite login :.
En mode graphique
Pour sortir de session, il faut sélectionner avec le bouton gauche de la souris le
menu démarrer puis choisir la commande log out. La déconnexion est effective
lorsqu‟apparaîtra l‟invite graphique login.
© Kasengedia motumbe pierre 254
Page 255 sur 270
LES SHELLS
Après toute entrée en session (login), le système positionne l‟utilisateur dans son
répertoire privé (home directory ou répertoire d’accueil), qui a été créé par
l‟administrateur du système au moment de l‟ouverture de son compte et qui devient
son répertoire de travail courant (current working directory). Puis le système active
l‟interpréteur de commandes désigné dans le dernier champ du fichier /etc/passwd.
Il existe plusieurs interpréteurs de commandes : le Bash, le TC–shell, et d‟autres.
Historiquement, le Bourne–shell fut le premier et a donc fait partie de la première
version d‟Unix. Il a été maintenu dans la version System V d‟AT&T ainsi que dans la
version Berkeley (BSD).
Autres shells
TC–shell (Tenex C–shell) de souche Berkeley
le Z–shell totalement libre
le Bash, shell standard sous Linux
Le TC–shell est un descendant très amélioré du C–shell d‟origine Berkeley. Le shell
standard de Linux est le Bash, descendant très amélioré du Bourne–shell. Cet
interpréteur de commandes est présenté plus en détail un peu plus loin.
(a) TC–shell
Le TC–shell doit son nom au fait que sa syntaxe est inspirée du langage C. Il
possède des fonctionnalités supérieures à celles du Bourne–shell, entre autres :
un mécanisme d‟historique avec rappel et édition des commandes ;
la possibilité de création d‟alias ;
des possibilités accrues pour le contrôle de processus.
Il exécute deux fichiers d‟initialisation, qui sont les deux fichiers de commandes
(scripts) du répertoire privé de l‟utilisateur : .cshrc et .login. Puis l‟interpréteur se met
en attente d‟une commande de l‟utilisateur.
© Kasengedia motumbe pierre 255
Page 256 sur 270
Le fichier d‟initialisation .cshrc est exécuté lors de chaque appel au TC–shell. Il est
destiné à positionner des variables du TC–shell, à affecter pour certaines
commandes des arguments implicites et à définir d‟autres commandes (alias). Il
affecte une valeur :
à la variable prompt qui définit l‟invite,
à la variable path qui contient les répertoires de recherche des commandes,
aux variables nécessaires à la gestion de l‟historique des commandes, etc.
Le fichier .login, qui est exécuté après le fichier .cshrc, une seule fois lors de la
connexion, est destiné à positionner des variables d‟environnement de la session. Il
contient lesn initialisations standard, principalement les caractéristiques du terminal
utilisé.
Les principales variables du TC–shell sont :
1. prompt : valeur du prompt.
2. path : précise le chemin d‟accès aux répertoires contenant les principaux
programmes.
3. home : indique le répertoire d‟accueil de l‟utilisateur.
En sortie de session, à l‟aide de la commande exit, le fichier de commandes .logout
est exécuté.
(b) Bash
Après une entrée en session (login) sur un système Linux, vous êtes pris en charge
par un interpréteur de commandes (shell) qui est le Bash (bash). A la connexion,
avant l‟interprétation des commandes, c‟est à dire apparition du prompt, le Bash
exécute les fichiers d‟initialisation : /etc/profile et .bash profile.
Le fichier /etc/profile est généralement géré par l‟administrateur système alors que le
fichier .bash profile, se trouvant dans le répertoire d‟accueil (Home Directory), est à
la disposition de l‟utilisateur. L‟existence (ou non), l‟accès en lecture d‟un de ces
fichiers, peut changer l‟ordre d‟accès à ces fichiers ou à d‟autres fichiers, .bash
login par exemple.
© Kasengedia motumbe pierre 256
Page 257 sur 270
Ces fichiers permettent de modifier ou de créer des variables internes au shell, ou
des variables d‟environnement, de créer des fonctions, etc.
Les principales variables du Bash sont :
PS1 : valeur du prompt.
PATH : précise le chemin d‟accès aux répertoires contenant les principaux
programmes.
HOME : indique le répertoire d‟accueil de l‟utilisateur.
En sortie de session, à l‟aide de la commande exit, le fichier de commandes .bash
logout est exécuté s‟il existe.
© Kasengedia motumbe pierre 257
Page 258 sur 270
COMMANDES LINUX
Il existe sous Linux de nombreuses commandes dont on trouvera les plus courantes
en annexe et que nous présenterons dans cette partie qui est totalement dédiées
aux travaux pratiques sous Linux.
Une commande est composée en premier d‟un code mnémonique (son nom
proprement dit), suivi parfois d‟options et/ou de paramètres. Une option dans une
ligne de commandes Unix est une lettre. Elle commence par un tiret "–". Sous Linux,
les options peuvent être de la forme :
-c c = caractère
--mot mot = un mot explicite l‟espace est le caractère séparateur des différents
éléments d‟une commande. Cette dernière est prise en compte et n‟est interprétée
que lorsque l‟utilisateur a tapé la touche <return>.
Remarque
Pour obtenir la totalité des options d‟une commande, il faut faire appel à
l‟option help. Exemple : root@junior-kaningini-laptop:/home/juni-kaningini# ls
–i<return> root@junior-kaningini-laptop:/home/juni-kaningini# ls inode<return>
Il est possible, à tout moment avant la saisie de <return>, de modifier ou d‟effacer
une commande saisie au clavier et affichée à l‟écran. La touche <backspace> (sur
le clavier 102 touches, la touche situé au-dessus du <return>) ou la combinaison
de touches <ctrl–h> permet d‟annuler le dernier caractère saisi et ainsi de modifier la
commande. La combinaison
<ctrl–u> permet d‟effacer tous les caractères situés à gauche du curseur.
Exemple
root@junior-kaningini-laptop:/home/juni-kaningini# ls –lz § erreur de frappe : z en
trop § la touche <backspace> permet
§ d’annuler le dernier caractère root@junior-kaningini-
laptop:/home/juni-kaningini# ls –l
© Kasengedia motumbe pierre 258
Page 259 sur 270
L‟interpréteur Bash permet de modifier des commandes déjà exécutées et de les
relancer. Linux autorise la frappe anticipée des caractères, c‟est–à–dire qu‟il est
possible de saisir une réponse à une question sans que cette dernière soit apparue
à l‟écran (à n‟utiliser que lorsque l‟on a une parfaite maîtrise du système).
L‟exécution d‟une commande peut être interrompue à l‟aide de la combinaison
<ctrl–c>. Si vous avez saisi une commande inconnue du système, ce dernier vous
l‟indiquera par un message d‟erreur.
Exemple
root@junior-kaningini-laptop:/home/juni-kaningini# date
Tue May 9 10:50:24 CEST 2000 root@junior-kaningini-
laptop:/home/juni-kaningini# dte bash: dte: Command
not found.
root@junior-kaningini-laptop:/home/juni-kaningini#
Si la commande existe, elle est exécutée et affiche à l‟écran le résultat. En cas
d‟une erreur d‟option, le programme indique l‟erreur à l‟écran et parfois affiche la
liste des options disponibles.
Exemple
root@junior-kaningini-laptop:/home/juni-kaningini# who
root@junior-kaningini-laptop:/home/juni-kaningini# pts/1 May 9
10:49 root@junior-kaningini-laptop:/home/juni-kaningini# pts/0
May 9 09:27 root@junior-kaningini-laptop:/home/juni-kaningini#
who c who: invalid option c
Try `who help' for more information.
root@junior-kaningini-laptop:/home/juni-kaningini#
Remarque
Pour les utilisateurs de machines Linux, il est formellement déconseillé de
redémarrer la machine (couper le secteur, reset). En effet, un arrêt brutal de Linux a
© Kasengedia motumbe pierre 259
Page 260 sur 270
pour conséquence de rendre le système de fichiers incohérent. Ainsi, si vous êtes «
planté », c‟est–à–dire si l‟une de vos applications bloque l‟écran, que la combinaison
de touches <ctrl–c> ne permet pas de détruire le programme, contrairement à ce
que vous feriez avec le DOS, surtout n’éteignez pas l’ordinateur. Une solution existe :
lancer un écran virtuel par la combinaison de touches <alt–ctrl–F2>. Dans cet écran,
vous pourrez lancer des commandes de destruction de programmes et vous pourrez
ainsi récupérer la main.
LE TERMINAL
Il est possible sous Linux d‟activer simultanément plusieurs consoles de connexion.
En mode texte, le basculement entre les consoles est obtenu par la combinaison de
touches <alt–ctrl– Fx>, où Fx représente les touches de fonction F1 à F8 situées sur
le haut de votre clavier.
Remarque
Pour les utilisateurs de machines Linux, il est formellement déconseillé de
redémarrer la machine (couper le secteur, reset). En effet, un arrêt brutal de Linux a
pour conséquence de rendre le système de fichiers incohérent. Ainsi, si vous êtes «
planté », c‟est-à-dire si l‟une de vos applications bloque l‟écran, que la combinaison
de touches <ctrl–c> ne permet pas de détruire le programme, contrairement àce que
vous feriez avec le DOS, surtout n‟éteignez pas l‟ordinateur. Une solution existe :
lancez un écran virtuel par la combinaison de touches <alt–ctrl–F2>. Dans cet écran,
vous pourrez lancer des commandes de destruction de programmes et vous pourrez
ainsi récupérer la main. Si vous êtes en mode graphique et que vous ne pouvez plus
déplacer la souris, la combinaison de touches <alt–ctrl–backspace> permet de
revenir à un mode texte. Le mode graphique est relancé à partir du mode texte par
la commande startx.
© Kasengedia motumbe pierre 260
Page 261 sur 270
EXERCICES LINUX
1) Dans le système UNIX, les véritables appels système sont effectués à partir :
d‟un programme utilisateur ;
d‟une commande shell ;
d‟une procédure de la bibliothèque standard
Sont-ils exécutés en mode superviseur ou en mode utilisateur ?
2) Comment sont organisés les fichiers dans le système UNIX ? Un utilisateur peut-il
accéder à un fichier d‟un autre utilisateur ? Si oui, comment ?
3) Dans le système UNIX, est-ce que tout processus a un père ? Que se passe-t-il
lorsqu‟un processus devient orphelin (mort de son père) ? Quand est-ce un
processus passe à l‟état Zombie ?
4) Pour lancer en parallèle plusieurs traitements d‟une même application, vous avez
le choix entre les appels système fork( ) et pthread_create( ). Laquelle des deux
possibilités choisir ? Pourquoi ?
5) Citez quatre événements qui provoquent l‟interruption de l‟exécution d‟un
processus en cours, dans le système UNIX.
© Kasengedia motumbe pierre 261
Page 262 sur 270
6) Quel est le rôle de l‟ordonnanceur ? Décrire brièvement l‟ordonnanceur du
système UNIX
? Favorise-t-il les processus interactifs ? 7) Pourquoi le partage de
données pose des problèmes dans un système multiprogrammé en temps partagé ?
Le système UNIX permet-il de contrôler les accès aux données partagées ? Qu‟est-
ce qu‟une section critique ?
8) Les commandes linux
1. Que réalise la commande : chmod 751 ~/*.pl?
2. Que réalise la ligne de commandes : ls -l | grep '^[^09]+$'
3. Quelle est la commande qui permet de changer de répertoire ? (proposez un
exemple).
4. Afficher par ordre alphabétique les utilisateurs définis dans le fichier /etc/passwd.
5. Rechercher tous les fichiers du répertoire /etc contenant la chaîne de caractères
"root".
6. Créer un répertoire "Old".
7. Déplacer tous les fichiers avec l'extension old vers le répertoire "Old".
8. Sous votre répertoire de départ, créez un lien matériel "Mon_lien" équivalent à
"Mon_fichier_2".
9. Quelle est la taille totale des fichiers contenue dans votre répertoire?
9) Exercice
1. Créez deux groupes "Group1" et "Group2".
2. Créez quatre utilisateurs "user1, user2, user3 et user4" ?
3. Rendez les utilisateurs dans les groupes :
• Les premiers et deuxièmes utilisateurs sont membres du premier groupe.
• Les troisièmes et quatrièmes utilisateurs sont membres du second groupe.
10) Exercice
Lister tous les fichiers qui :
• se terminent par 5.
© Kasengedia motumbe pierre 262
Page 263 sur 270
• commencent par annee4.
• commencent par annee4 et de 7 lettres en maximum.
• commencent par année avec aucun chiffre numérique.
• contiennent la chaîne "reda".
• commence par r ou R.
11) Exercice
Si on applique la commande Umask 024. Quels sont les droits qui seront appliqués
aux fichiers et aux dossiers au moment de leur création?
12) Exercice
Pour exécuter la commande : cp rep1/file1 rep2/rep3
Quels droits d'accès devez-vous avoir sur rep1, rep2, rep3 et file1?
13) Exercice
Créer un script permettant d'afficher la liste des fichiers du répertoire /etc accessible
en exécution?
14) Exercice
Créer un script qui permet d'afficher le mois correspond à un chiffre de 1 à 12.
15) Exercice
Créez un fichier premiertexte contenant une ou deux phrases.
16) Exercice
Visualisez le contenu de premiertexte sans l'éditer
17) Exercice
Quelle est la taille de premiertexte ?
18) Exercice
Éditez PREMIERTEXTE. Que constatez-vous ?
Utilisez les commandes cp, ls, mv
19) Exercice
a) Faites une copie de premiertexte appelée double
b) Comparez leurs tailles
c) Renommez double en introduction
d) Quelle différence y a-t-il entre mv double introduction et cp double
introduction ? Utilisez les commandes mkdir, cd, cp, ls, mv
© Kasengedia motumbe pierre 263
Page 264 sur 270
20) Eexercice
a) Créez un répertoire essai/
b) Déplacez double dans essai/
c) Faites une copie de premiertexte appelée copie, et placez-la également dans
essai
d) Affichez une liste de ce que contient essai/
Utilisez les commandes rmdir, cd, rm
21) Exercice
a) Essayez de détruire essai/. Que se passe-t-il ? Que faut-il faire pour détruire
un répertoire ?
b) Détruisez tout ce que contient essai/
c) Détruisez essai/
CRITERES POUR LES NOMS DE FICHIER
Exercice 1:
Dans votre répertoire courant, créez en une commande les fichiers suivants: annee1
Annee2 annee4 annee45 annee41 annee510 annee_saucisse banane
Exercice 2:
Créer le répertoire Year dans votre répertoire courant, en une commande déplacez
les fichiers précédemment créés dans le répertoire Year.
Exercice 3:
Lister tous les fichiers : se terminant par 5 commençant par annee4
commençant par annee4 et de 7 lettres
maximum commençant par annee avec aucun
chiffre numérique
© Kasengedia motumbe pierre 264
Page 265 sur 270
contenant la chaîne ana
commençant par a ou A
Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le répertoire /tmp
en une seule commande.
Exercice 4:
Dans votre répertoire courant, créez un répertoire courant essai_droit, par défaut ce
répertoire est à 755 (rwxr-xr-x), quelles sont les commandes (en notation symbolique
et en base 8) pour
propriétaire groupe les autres
droit en droit en droit droit en droit en droit droit en droit en droit
lecture écriture d'accès lecture écriture d'accès lecture écriture d'accès
commande
oui oui oui oui non oui non non oui
1
commande
oui non oui non oui non non non oui
2
commande
non oui non non non oui oui non non
3
commande
non non oui oui non oui non non non
4
lui donner les droits suivant (on suppose qu'après chaque commande on remet le
répertoire à 755:
Exercice 5:
Créez un fichier droit dans le répertoire essai_droit, par défaut ce fichier est à 644
(rw-r--r--). En partant du répertoire courant, pour chaque commande de l'exercice
précédent, essayez d'accèder au répertoire essai_droit (commande cd), de faire un
ls dans essai_droit et de modifier le fichier avec un éditeur quelconque (vi par
exemple).
© Kasengedia motumbe pierre 265
Page 266 sur 270
Exercice 6:
Tapez la commande umask, de manière à ce que les fichiers lors de leur création
aient par défaut les droits 640 (rw-r-----), et les répertoires 750 (rwxr-x---).
GREP
Exercice 7:
Créer un répertoire essai-grep dans votre home directory. Dans ce répertoire créer
les fichiers suivants:
Tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Editez les fichiers (sortie de la commande ls redirigée vers grep) avec les critères sur
leur nom suivant:
Critère Le nom doit être Fraise ou fraise
1
Critère se est en fin de nom
2
Critère ai est présent dans le nom
3
Critère Nom contenant un chiffre
4 numérique
Critère Nom contenant la chaîne mm ou
5 MM
Exercice 8
Copiez le fichier /etc/passwd dans votre home directory. Editez la ligne commençant
par votre nom de login.
© Kasengedia motumbe pierre 266
Page 267 sur 270
Exercice 9
Dans le fichier passwd qui est dans votre home directory, éditez les lignes
commençant par des noms de login ne contenant pas de chiffre.
Exercice 10
Editez les lignes du fichier passwd commençant par des noms de login de 3 ou 4
caractères.
LES FILTRES
Exercice 11
Copiez le fichier /etc/passwd dans votre home directory. Editez uniquement les
champs contenant le login et la home directory.
Exercice 12
Triez passwd sur le nom
Exercice 13
Extraire les noms de login et UID puis triez suivant les UID, le tout en une seule
commande, vous redirigerez le tout vers un fichier
Exercice 14
Dans le fichier de résultat précédent remplacer les ":" par des " " (espace).
Exercice 15
Editez les cinq dernières lignes du fichier.
© Kasengedia motumbe pierre 267
Page 268 sur 270
Exercice 16
Editez les cinq premiers caractères du fichier.
Find
Exercice 17
Cherchez dans toute l'arborescence les fichiers dont le nom se termine par .c,
redirigez les erreurs vers le fichier poubelle /dev/null Commençant par X ou x.
Dont les noms ne contiennent pas de chiffre.
Exercice 18
Chercher dans /usr les fichiers dont la taille dépasse 1Mo (2000 blocs de 500Ko) et
dont les droits sont fixés à 755 (-rwxr-xr-x).
Exercice 19
Combien il y a de fichiers dans toute l'arborescence vous appartenant et ayant les
droits fixés à 666 (-rw-rw-rw-).
Exercice 20
Trouver tous les fichiers core dans l'arborescence et supprimez-les après
confirmation.
© Kasengedia motumbe pierre 268
Page 269 sur 270
BIBLIOGRAPHIE
1. Crocus. Système d'exploitation des ordinateurs.DUNOD. BORDAS 1975
2. Daniel Tshirrhart. Commande en temps réels. Dunod 1991
3. KASENGEDIA MOTUMBE Pierre. Concepts fondamentaux d'un système à
microprocesseurs. Syllabus.Fac.Sciencess UNIKIN 1999.
4. Harold Lorin Harvey, M. Dertel. Operating systms. ADDISON-WESLEY.
Publishing company. 1981
5. Paolo Zanella. Architecture et technologies des ordinateurs. DUNOD 1999
6. Frederic j .Hill. Digital Systems: hardware organisation and design. John
Willey & Sons .New york 1978
7. ANDREW S. TANENBAUM. Systemes d'exploitation. Université Libre
D'Amsterdam Intereditions. 1991
© Kasengedia motumbe pierre 269
Page 270 sur 270
8. ANDREW S. TANENBAUM. Systèmes d‟exploitation, Edition Pearson 3ème,
2008
9. ANDREW S. TANENBAUM. Architecture d'ordinateur. Université Libre
D'Amsterdam. Intereditions. 1991
10. Ellis horonsitz, Sartaj sahm : Fundamentals of computer algorithms computer
Science pression
11. virga, Jean-Pierre Lovinosse. Organiser la memoire de notre ordinateur.
Marabont. Alleur(Belgique).1993
12. J. Archet Harri. Systemes d'exploitation. SCHAUM'S. Ediscience Dunod. Paris
2002.
13. Jean-Paul, Armspach, Pierre Colin, Frédérique Ostré Waerzeggers. LINUX :
Initiation et utilisation, 2e édition, Dunod, Paris, 2000, 2004 ISBN 2 10 007654
X
14. Saria HATOUM, note de TPs Systèmes d‟exploitation Séance 2 : Les
Processus fork et wait, Université de Namur, 2015-2016
15. Divers URL Internet
© Kasengedia motumbe pierre 270