Vous êtes sur la page 1sur 232

Iset Siliana

Systéme
d’exploitation 1

 TI11-16
http://www.academiepro.com/enseignants-104-Chaabani.Nizar.html

IsetSiliana CHaabani Nizar 1


PLAN du COURS

I. Chapitre 1: Introduction
II. Chapitre 2: Gestion de Processus
III. Chapitre 3: Gestion de la mémoire physique
IV. Chapitre 4: Gestion de la mémoire virtuelle
V. Chapitre 5: Gestion des entrées-sorties
VI. Chapitre 6: Gestion des fichiers

http://www.academiepro.com/enseignants-104-Chaabani.Nizar.html

IsetSiliana CHaabani Nizar 2


Chapitre 1: Introduction

 C’est quoi un OS?


 Grands Systèmes
 Systèmes Personnels
 Systèmes Multiprocesseurs
 Systèmes Distribués
 Systèmes Temps Réel
 Systèmes “à la main”
 Historique des OSs et des Concepts
 Architecture pour les systèmes

IsetSiliana CHaabani Nizar 3


C’est quoi un OS?

 Programme intermédiaire entre l’utilisateur d’un


ordinateur et le matériel

 But d’un OS:


 Exécuter les programmes des utilisateurs
 Rendre l’ordinateur (système informatique) facile
à utiliser

 Exploiter le système informatique d’une manière


efficace

IsetSiliana CHaabani Nizar 4


Quelques mots sur les systèmes d’exploitation
Définition
Un système d'exploitation (SE; en anglais: OS =
operating system) est un ensemble de programmes de
gestion du système qui permet de gérer les éléments
fondamentaux de l'ordinateur:
Le matériel - les logiciels - la mémoire - les données –
les réseaux.
• Typiquement, un Système d'Exploitation est composé
 d'un noyau ;
 de bibliothèques dynamiques ;
 d'un ensemble d'outils système ;
 de programmes applicatifs de base.

IsetSiliana CHaabani Nizar 5


Le système d’exploitation
Le noyau

IsetSiliana CHaabani Nizar 6


Le système d’exploitation
Le noyau
gestion des périphériques (au moyen de pilotes)
• gestion des processus :
 attribution de la mémoire à chaque processus
 ordonnancement des processus (répartition du temps
d’exécution sur le ou les processeurs)
 synchronisation et communication entre processus
(services de synchronisation, d’échange de messages,
mise en commun de segments de mémoire, etc.)
• gestion des fichiers (au moyen de systèmes de fichiers)
• gestion des protocoles réseau (TCP/IP, IPX, etc.)

IsetSiliana CHaabani Nizar 7


Le système d’exploitation
Autres composantes de l’OS
• Les bibliothèques dynamiques regroupent les opérations
les plus utilisées dans les programmes informatiques
– éviter la redondance de ces opérations dans tous les
programmes
– certains systèmes ne proposent pas de bibliothèques
dynamiques
• Les outils système permettent :
– de configurer le système
– de passer le relais aux applications proposant des services à un
ou plusieurs utilisateurs ou à d'autres ordinateurs
• Les programmes applicatifs de base offrent des services à
l'utilisateur (calculatrice, éditeur de texte, navigateur web,
etc.)
IsetSiliana CHaabani Nizar 8
Petit retour historique
• 1ère génération (1945-1955)
– Tubes à vides
– Tableaux d’interrupteurs, cartes perforées
• 2ème génération (1955-1965)
– Transistors
– Traitements par lots
• 3ème génération (1965-1980)
– Circuits intégrés
– Mini-ordinateurs, faible rapport qualité/prix
• 4ème génération (1980-aujourd’hui)
– Microprocesseurs (circuits intégrés

IsetSiliana CHaabani Nizar 9


Système d’exploitation (SE)

 Fournit l’interface usager/machine:


 Masque les détails du matériel aux applications
 Le SE doit donc traiter ces détails
 Contrôle l’exécution des applications
 Le fait en reprenant périodiquement le contrôle de
l’UCT
 Dit à l’UCT quand exécuter tel programme
 Il doit optimiser l’utilisation des ressources pour
maximiser la performance du système

IsetSiliana CHaabani Nizar 10


Différents niveaux d’un Système

IsetSiliana CHaabani Nizar 11


Kernel Mode vs. User Mode
Kernel mode: User Mode
• Mode de fonctionnement  Mode de
du S.E fonctionnement de
 – Acces complet et total a tous
toutes les ressources les programmes
materielle  Une partie seulement
 Execute n’importe qu’elle des instructions sont
instruction que la machine accessibles
peut executer  Les instructions qui
affectent les I/O sont
inaccessibles

IsetSiliana CHaabani Nizar 12


Fonctions d’un système
d’exploitation
 Gestion de la mémoire
 Gestion des systèmes de fichiers
 Gestion des processus
 Mécanismes de synchronisation
 Gestion des périphériques
 Gestion du réseau
 Gestion de la sécurité.

IsetSiliana CHaabani Nizar 13


Vue abstraite d’un SE

IsetSiliana CHaabani Nizar 14


Ressources et leur gestion
 Ressources:
 physiques: mémoire, unités E/S, UCT...
 Logiques = virtuelles: fichiers et bases de données
partagés, canaux de communication logiques,
virtuels...
 les ressources logiques sont bâties par le logiciel sur les
ressources physiques
 Allocation de ressources: gestion de ressources, leur
affectation aux usagers qui les demandent, suivant
certains critères

IsetSiliana CHaabani Nizar 15


Évolution historique des SE
 Le début: routines d’E/S, amorçage système
 Systèmes par lots simples
 Systèmes par lots multiprogrammés
 Systèmes à partage de temps
 Ordinateurs personnels
 SE en réseau
 SE répartis
 Les fonctionnalités des systèmes simples se retrouvent dans les
systèmes complexes.
 Les problèmes et solutions qui sont utilisés dans les systèmes
simples se retrouvent souvent dans les systèmes complexes.

IsetSiliana CHaabani Nizar 16


Systèmes de traitement par lots (batch) simples

Sont les premiers SE (mi-50)


 L’usager soumet un job (ex: sur cartes perforées) à un
opérateur
 L’opérateur place un lot de plusieurs jobs sur le
dispositif de lecture
 Un programme, le moniteur, gère l'exécution de
chaque programme du lot
 Le moniteur est toujours en mémoire et prêt à être
exécuté
 Les utilitaires du moniteur sont chargés au besoin
 Un seul programme à la fois en mémoire, et les
programmes sont exécutés en séquence
 La sortie est normalement sur un fichier, imprimante,
ruban magnétique…
IsetSiliana CHaabani Nizar 17
Schéma Mémoire d’un Système de Traîtement par lots

IsetSiliana CHaabani Nizar 18


Systèmes Batch Multiprogrammés
Plusieurs tâches sont simultanément en mémoire, et le CPU est
multiplexé entre elles; si une doit attendre une E/S, une autre tâche est
choisie

IsetSiliana CHaabani Nizar 19


Systèmes à Temps Partagé
 Sert pour le pilotage et le contrôle des déroulements
externes (p.ex. centrale électrique)

 doit garantir des temps de réactions données pour des


signaux extérieur urgents

 plusieurs systèmes d'exploitations n'y arrivent pas car


l'interruption de certaines activités met le système dans
un état instable

IsetSiliana CHaabani Nizar 20


Systèmes Personnels
 Ordinateurs Personnels – Systèmes dédiés à un seul
utilisateur
 Périphériques d’E/S – clavier, souris, écrans,
imprimante, ….
 Convivialité et interactivité avec l’utilisateur
 Peuvent tourner différents types d’OS (Windows,
MacOS, UNIX, Linux)

IsetSiliana CHaabani Nizar 21


Systèmes Parallèles
 Systèmes avec plusieurs CPUs en communication
 Aussi connus comme systèmes multiprocesseurs
 Systèmes fortement couplés – processeurs partagent la
mémoire et l’horloge; communication a lieu via la
mémoire partagée
 Avantages des systèmes parallèles:
 Augmentation de la capacité de traitement
 Economiques
 Tolérance aux pannes

IsetSiliana CHaabani Nizar 22


Systèmes Répartis
 Répartir la computation sur plusieurs processeurs
physiques
 Systèmes faiblement couplés – chaque processeur possède
sa propre mémoire; les processeurs communiquent entre
eux via des lignes de communication, tels des bus, des
lignes de téléphone, des réseaux, etc …
 Avantages des systèmes répartis
 Partage des ressources
 Puissance de computation plus grande – Partage de charge
 Tolérance aux pannes
 Communications

IsetSiliana CHaabani Nizar 23


Systèmes Répartis (cont)
 Requière une infrastructure réseau
 Réseaux Locaux (LAN) ou Réseaux Large Echelle
(WAN)
 Peuvent être des systèmes client-serveur ou peer-to-
peer

IsetSiliana CHaabani Nizar 24


Structure Générale d’un Client-
Serveur

IsetSiliana CHaabani Nizar 25


Systèmes Temps Réel

 Souvent utilisés dans des


environnements spécialisés, tels les
expérimentations scientifiques,
l’imagerie médicale, les systèmes de
contrôle industriels, …
 Contraintes de temps bien définies
 Systèmes temps réel souples ou rigides

IsetSiliana CHaabani Nizar 26


Systèmes “à la main”

 Personal Digital Assistants (PDAs)


 Téléphones Mobiles
 Contraintes:
 Mémoire limitée
 Processeurs lents
 Ecrans d’affichage petits

IsetSiliana CHaabani Nizar 27


Introduction au système d’exploitation
(Ex : MS-DOS).

http://www.academiepro.com/enseignants-104-Chaabani.Nizar.html

IsetSiliana CHaabani Nizar 28


Exemples :

Système Mono-utilisateur Multi-utilisateur Mono-Tâche Multi-Tâche

DOS X X

WIN9X X X

WIN NT\2000 X X

Unix X X

Mac \ OS X X X

IsetSiliana CHaabani Nizar 29


Organisation de fichiers et répertoires

Organisation basée sur le concept


d'arbres : " \ " racine de' l'arborescence correspondant
à un disque (C: ou A:)

Repertoire1 R2 R3 R4 ..

fichier1 fichier2 R5 R6 R7 R8 .

fichier3

IsetSiliana CHaabani Nizar 30


IsetSiliana CHaabani Nizar 31
Introduction au système MS-DOS
(MicroSoft Disk Operating System)
Le DOS, comme tout système d'exploitation, contrôle les activités de
l'ordinateur. Il gère des opérations telles que la circulation, l'affichage, et
l'entrée de données entre les divers éléments constitutifs du système.

Le rôle du DOS est d'interpréter les commandes saisies au clavier par


l'utilisateur.
Ces commandes permettent d'effectuer les tâches suivantes:
•la gestion des fichiers et des répertoires.
•la configuration du matériel.
•l'optimisation de la mémoire.
•l'exécution des programmes.
•…

IsetSiliana CHaabani Nizar 32


Les fichiers sous MS-DOS

Sous MS-DOS chaque fichier peut être aussi volumineux que possible,
cependant le nom que vous lui donnez est soumis à des restrictions, on ne peut
en effet lui donner un nom d'une longueur maximale de 8 caractères plus 3 pour
l'extension.
De plus, les fichiers ne doivent contenir que les caractères suivants:
•lettres de A à Z
•chiffres de 0 à 9
•caractères spéciaux suivants: _ ^ $ ~ ! # % & - { } ( ) @ '
Enfin, les noms de fichiers ne doivent pas contenir:
•de blanc (espace).
•de virgule.
•de barre oblique inverse.
•de point (hormis le point qui sépare le nom de l'extension).

IsetSiliana CHaabani Nizar 33


Les fichiers sous MS-DOS

et ils ne doivent pas non plus appartenir à la liste de noms


réservés:
CLOCK$ CON AUX COM1 COM2 COM3 COM4
LPT1 LPT2
LPT3 NUL PRN

Sous MS-DOS, les noms de ces répertoires sont soumis aux


mêmes restrictions de longueur que les fichiers (8 caractères pour
le nom).

IsetSiliana CHaabani Nizar 34


Quelques commandes MS-DOS

Rôle : Afficher le contenu d'un répertoire

La commande " DIR " fait la liste des fichiers


correspondant aux spécifications précisées par
l ’argument de la commande et donne quelques
renseignements sur les fichiers.
Remarque : Si on veut afficher la liste des fichiers
dont l ’extension est « .txt », on envoie la commande :
C:\DIR *.txt

IsetSiliana CHaabani Nizar 35


Quelques commandes MS-DOS

Rôle : Créer un répertoire


La commande MKDIR (MaKe DIRectory)
peut être abrégée en MD.
Il suffit de taper :
C:\MD Nom du répertoire

IsetSiliana CHaabani Nizar 36


Quelques commandes MS-DOS

Rôle : Effacer un répertoire


La commande RMDIR (ReMove DIRectory)
peut être abrégée en RD.
C:\RD Nom du Répertoire
Rôle : Changer de répertoire
La commande "CD" ou encore "CHDIR"
permet de passer d'un répertoire à
l'autre (CD pour Change Directory)
C:\cd Nom du Répertoire
IsetSiliana CHaabani Nizar 37
Quelques commandes MS-DOS

Rôle : copier un ou une liste de fichiers


Syntaxe : COPY [fichier départ] [fichier
destinataire]

Il faut passer en premier argument le nom du


fichier à copier, et en deuxième argument le
nom que nous voulons donner à la copie.

IsetSiliana CHaabani Nizar 38


Quelques commandes MS-DOS

Exemple : Pour copier « fichier1.txt » dans le


sous répertoire « R2 » en lui donnant un
nouveau nom copie1.txt.
" \ " racine de' l'arborescence correspondant
Répertoire à un disque (C: ou A:)
courant

Repertoire1 R2 R3 R4

fichier1 fichier2 R5 R6 R7 R8

fichier3

IsetSiliana CHaabani Nizar 39


Quelques commandes MS-DOS

Rôle : Renommer un fichier

• La commande RENAME peut être abrégée


en REN

• Exemple :
C:\ren fichier1.txt surnom.txt

IsetSiliana CHaabani Nizar 40


Quelques commandes MS-DOS

Rôle : Supprimer un fichier


Elle sert à détruire un fichier ou une liste de
fichier. On lui donne comme argument le nom
d ’un fichier (et éventuellement son extension)
ou bien les spécifications d ’une liste de fichiers
à l ’aide des caractères « ? » ou « * ».
Il est possible de supprimer tous les fichiers d ’un
répertoire en une seule fois : ERASE *.*
Exemple:
C:\erase Nom de fichier

IsetSiliana CHaabani Nizar 41


Quelques commandes MS-DOS
dir liste le contenu d'un répertoire

cd change de répertoire

cd .. répertoire parent

md ou mkdir crée un nouveau répertoire

deltree supprime un répertoire, ainsi que l'ensemble de ses sous-répertoires.

copy, xcopy copie de fichier

move déplacement de fichier

del supprime le fichier

help aide sur la commande demandée

format formate le lecteur demandé

ver donne le numéro de version

IsetSiliana CHaabani Nizar 42


IsetSiliana
IsetSiliana CHaabani
CHaabaniNizar
Nizar 4343
La commande EXECUTER
Commandes DOS et WINDOWS
 MsConfig  CleanMGR (Nettoyage de disque)
 RegEdit  CONF (NetMeeting)
 SysEdit  DxDiag (DirectX Diagnostics)
 MsInfo32  HelpCtr (Centre d’aide)
 MMC  IcwConn1 (Assistant connexion)
 WinMSD  Magnify (Utilisation de la loupe)
 Ping  MstSc (Assistant de bureau à distance)
 IpConfig  Wab (Carnet d’adresse Outlook Express)
 MsMsgs  Sfc (Intégrité des fichiers « système »
 Perfmon  Winver (N° version Windows)
 Charmap (table des caractères

IsetSiliana CHaabani Nizar 44


Ordinateur
Un ordinateur est une machine électronique
qui permet l'exécution des programmes
 Un programme est un ensemble d'instructions qui
seront traduites en signaux électriques
 La sortie de ces programmes est convertie à nouveau
pour que l'utilisateur puisse la comprendre
 Un ordinateur est composé au moins de :
 processeur, carte mère;
 mémoire vive;
 mémoires de masse;
 périphériques

IsetSiliana CHaabani Nizar 45


Principes de fonctionnement
Ordinateur

Unité centrale
de traitement
Unité de contrôle Mémoire
ou Cache Mémoire centrale
Unité de commande
ou principale
Unité arithmétique Instructions
et logique
ou
Unité de traitement Données
ou
Unité de calcul

Unités d’entrée/sortie
ou d’I/O

Contrôleur de Carte
périphériques réseau

IsetSiliana CHaabani Nizar 46


Autre représentation

Bus de données

Périphériques
Mémoire Unité
CPU Centrale d ’E/S

Bus d ’adresses

Bus de contrôle

IsetSiliana CHaabani Nizar 47


Principes de fonctionnement CPU
 Mémoire centrale

Reg Adr Reg Mot résultats


adresse mot
instruction mémoire
PC ou CO RI Unité de
Horloge commande
Décodeur

État Séquenceur

Unité arithmétique
Unité de et logique
calcul opérandes
Registres
résultat

IsetSiliana CHaabani Nizar 48


Chap. I I GESTION DES PROCESSUS et
THREADS
Partie 1. La GESTION DES PROCESSUS

 Un SE tourne en permanence après son démarrage avec l’ordinateur

 il permet le développement et l’exécution de nouveaux

programmes

 Description le fonctionnement d’un SE

 Concept fondamental : La décomposition !

 Le SE fait tourner les programmes utilisateurs sur le


processeur

 Abstraction du processeur ?  Introduire la notion de


Processus
IsetSiliana CHaabani Nizar 49
IsetSiliana CHaabani Nizar 50
IsetSiliana CHaabani Nizar 51
Processus et terminologie
(aussi appelé job, task, user program)
Concept de processus: un programme en exécution
Possède des ressources de mémoire, périphériques, etc

Ordonnancement de processus

Opérations sur les processus

Processus coopérants

Processus communicants

IsetSiliana CHaabani Nizar 52


1. Notion de Processus
 Qu’est-ce qu’un programme ?
 Ensemble de modules sources/objets
 Résultat de l'édition de liens (actions manipulant des données)
Description Statique (Code + données)
 Que désigne le terme processeur ?
 Entité matérielle capable d'exécuter des instructions
 ‘’parfois ’’ aussi entité logicielle (interpréteur, ...)
 Qu’est-ce qu’un processus ?
 Entité dynamique représentant l’exécution d’un programme sur un
processeur
 créée à un instant donné, a un état qui évolue au cours du temps et
qui disparaît, en général, au bout d’un temps fini

Etat Temps t Fin


Début
Un programme est une suite d'instructions (un objet statique).
• Un processus est un programme en exécution et son contexte (un objet dynamique).
IsetSiliana CHaabani Nizar 53
Notion de Processus (suite)

 Définition technique: un processus est l’abstraction du SE pour


 l’allocation de la MC (code, données, pile)  espace d’adressage
 l’allocation du processeur (CO, …)

 Intérêt de la notion de processus


 Abstraction de la notion d'exécution séquentielle
 Représentation des activités parallèles et de leurs interactions –unité
de structuration
 Exemples de processus :
 L'exécution d’un programme
 Copie d’un fichier sur disque
 la transmission d ’une séquence de données sur un réseau

IsetSiliana CHaabani Nizar 54


2. Parallélisme et Concurrence
 Soient deux processus P1 et P2 en mémoire centrale (prêts à s’exécuter)
 Mise en œuvre concrète de l’exécution de P1 et P2 :

P1 P2 Exécution séquentielle
(1 processeur)

P1
Exécution parallèle
P2 (2 processeurs)

P2

P1 Exécution concurrente
(1 processeur)
Système
T

IsetSiliana CHaabani Nizar 55


Parallélisme et Concurrence (2)
 Multiprogrammation / Pseudo-parallélisme :

 Un SE doit, en général, traiter plusieurs processus en même temps

 Il y a un seul processeur (la plupart du temps)

 Entrelacement des exécutions (simuler une exécution parallèle)


 A tout moment le SE ne traite qu’un seul processus à la fois

 La commutation étant très rapide

 Les processus utilisateurs sont lancés par un interprète de commandes.


 Ils peuvent eux-mêmes lancer ensuite d’autres processus

Hiérarchie des processus P1 Père : processus créateur


(arborescence)
P2 P3

Fils : processus créés P4 P5

 Au lancement du système, il n’existe qu’un seul processus : l'ancêtre de tous

IsetSiliana CHaabani Nizar 56


3. Processus en Mémoire Centrale
 L'état de la mémoire centrale associé à un processus est défini par le
contenu de 3 segments (le code, la pile et les données) et d’un contexte.

 Segment code -- Lecture seulement


 Contient les instructions Pile
d’exécution
 Invariant (toute la durée d'exécution du processus).
 Segment données -- Lecture/Ecriture
 Contient les variables globales + données statiques
(Constantes), qui sont initialisées à la compilation
Données
 Pile d'exécution -- Lecture/Ecriture
 Un programme est constitué d’un ensemble de fonctions Code
(procédures) qui s'échangent d ’informations
 Contient les variables échangées + variables locales
Les segments
 File d’attente gérée selon LIFO d’un processus

IsetSiliana CHaabani Nizar 57


4. Notion de Ressources -- Contexte du Processeur

 Contexte du processeur:
Hypothèses : 1 seul processeur + plusieurs
processus le processeur est réservé à l’usage
d’un seul processus
Contexte = Contenu des registres
adressables/spécialisés -- Mot d'état (PSW -
Program Status Word )
 Etat d'exécution: Actif/Attente
 Mode de fonctionnement : Superviseur/utilisateur
 Masque d’interruption
 Contexte accessible en mémoire

IsetSiliana CHaabani Nizar 58


Contexte d’exécution d’un processus
Etat courant du processus
 Code du programme exécuté
 Données statiques et dynamiques
 Informations qui caractérisent l’état dynamique
du processus
 Compteur de programme (PC / CO)
 Etat des registres
 Liste des fichiers ouverts
 Variables d’environnement
 Image mémoire (état de l’espace d’adressage)
 À sauvegarder lorsque le processus est commuté
 À restaurer lorsque le processus reprend la main
IsetSiliana CHaabani Nizar 59
Ordonnanceur UCT
Dans un système multitâches, le système
d'exploitation doit gérer l'allocation du processeur
aux processus. On parle d'ordonnancement des
processus

IsetSiliana CHaabani Nizar 60


État de processus
IMPORTANT
 Au fur et a mesure qu’un processus exécute, il change d’état
 nouveau: le processus vient d’être créé
 exécutant-running: le processus est en train d ’être exécuté par
une UCT
 attente-waiting: le processus est en train d ’attendre un
événement (p.ex. la fin d’une opération d’E/S)
 prêt-ready: le processus est en attente d’être exécuté par une UCT
 terminated: fin d’exécution

IsetSiliana CHaabani Nizar 61


5. Contexte d’un Processus (1)
 Quand un processus n’est pas en exécution, son état doit
être sauvegarde dans son descripteur associé.

Exécuter Changer
processus Etat

Sauvegarder
Etat

 Qu’est-ce qu’on sauvegarde? Le contexte du processus (info. nécessaires à la gestion


des processus)
PID
Contexte du Etat
processus CO
d’exécution
Contexte du Mode de
Info. processeur fonctionnement
d’ordonnancem
ent Masque d’It
Info. Contexte accessible
Complem. + Allocation
divers mémoire CO
PSW
BCP Contexte de processus
(Process Control Block) 6
IsetSiliana CHaabani Nizar 2
62
Contexte d’un Processus (2)

 Contexte d’un processus: ensemble de paramètres regroupés dans les

segments du programme en cours d'exécution (code + données)

 Le SE détient une table, contenant la liste de tous les processus

 chaque entrée conserve le descripteur de processus, appelé Bloc de

Contrôle de processus –BCP ((Process Control Block)

 BCP : structure de données associée à l'exécution

de chaque programme Représente la situation actuelle d ’un

processus

IsetSiliana CHaabani Nizar 63


6. Etat d’un Processus

 Commutation des taches (passage d ’une tache à une autre) est


réalisé par un ordonnanceur (dispatcher/short term scheduler)

Nouveau Commutatio
processus n Terminaison
PRET It -- Tps ACTIF
dépassé

E/S Demande
terminées d’E/S
BLOQUE
Attente

 3 états d’un processus : actif, prêt, bloqué


 actif  bloqué = action volontaire (lecture sur disque)
 bloque  prêt = action extérieure au processus (ressource disponible)
 prêt  actif = Décision de l’allocateur du processeur

IsetSiliana CHaabani Nizar 64


Le multithreading
En fait, chaque processus peut lui-même fonctionner
comme le système d'exploitation en lançant des sous-
tâches internes au processus
 Ces sous-tâches sont nommées "flux d'exécution"
"processus légers "ou Threads.

IsetSiliana CHaabani Nizar 65


Trait de Texte ultithreaded
Absbjshd Absbjshd Absbjshd
DnddjkjdqDnddjkjdqDnddjkjdq
HqdjlqdjlHqdjlqdjlHqdjlqdjl
JddmkmJddmkmJddmkm
Djdlqjdjdq
Djdlqjdjdq
Djdlqjdjdq
djdqkmkd djdqkmkd djdqkmkd

clavier
Disque
noyau

Thread 1: remet en forme le document


Thread 2: interaction avec l’utilisateur
Thread 3: écrit périodiquement le contenu de la RAM sur le disque

IsetSiliana CHaabani Nizar 66


Différences et similitudes entre
threads et processus :
 La communication entre les threads est plus
rapide que la communication entre les
processus.
 Les Threads possèdent les mêmes états que les
processus.
 Deux processus peuvent travailler sur une même
donnée (un tableau par exemple) en lecture et en
écriture dans une situation de concurrence de
Deux processus  il en est de même pour les
threads.
IsetSiliana CHaabani Nizar 67
7. Mécanisme de Commutation (1)

 pointeur: les PCBs sont rangés dans des listes


enchaînées (à voir)
 état de processus: ready, running, waiting…
 compteur programme: le processus doit reprendre à l
’instruction suivante
 autres registres UCT
 bornes de mémoire
 fichiers qu’il a ouvert
 etc., v. manuel

IsetSiliana CHaabani Nizar 68


Mécanisme de Commutation (2)

 Commutation de processus = commutation des


contextes de processus
 Quand l’UCT passe de l’exécution d ’un processus 0
à l ’exécution d`un proc 1, il faut mettre à jour et
sauvegarder le PCB de 0
 reprendre le PCB de 1, qui avait été sauvegardé avant
remettre les registres d ’UCT tels que le compteur
d ’instructions etc. dans la même situation qui est décrite
dans le PCB de 1

IsetSiliana CHaabani Nizar 69


Mécanisme de Commutation (3) -- Schéma

IsetSiliana CHaabani Nizar IsetSiliana CHaabani Nizar 70


70
8. Relations entre Processus (1) -- Compétition
 Il existe entre les processus un certain nombre de relations,
appelées INTERACTIONS;
 ces interactions peuvent être de compétition ou de coopération s
 Compétition
 Situation dans laquelle plusieurs processus doivent utiliser
simultanément une ressource à accès exclusif (1 seul processus à
la fois), encore appelée ressource critique.
 Exp.
 L ’usage du processeur (pseudo-parallélisme)
 Accès à un périphérique (imprimante)
 2 processus en compétition sont dits en exclusion mutuelle
pour cette ressource.
 Une solution possible : Faire attendre les processeurs demandeurs que
l ’occupant actuel ait fini (FIFO)
P2
P1

R Ordre d’utilisation : Indifférent


Ressource
P1; P2 ou P2; P1
Critique

IsetSiliana CHaabani Nizar 71


Relations entre Processus (2) -- Coopération
 Coopération
 Situation dans laquelle plusieurs processus collaborent à une
tache commune et doivent se synchroniser pour réaliser
cette tache.
 Deux processus qui coopèrent peuvent également se trouver
en exclusion mutuelle pour une ressource commune.
P2 imprime
P1 produit le fichier F
un fichier F P2 ne peut s'exécuter que si:
P1 a terminé son exécution
F P1 < P2

 Synchronisation
 Un processus doit attendre qu’un autre processus ait franchi un certain point
de son exécution point de synchronisation
 Imposer des contraintes de synchronisation aux processus
 Précédence des processus
 Conditions de franchissement de certains points critiques

IsetSiliana CHaabani Nizar 72


Relations entre Processus (3) -- Faire Attendre un Processus
 Relations entre deux processus í Faire attendre un processus
Solution 1: attente active
P1 P2
while (ressouce occupee) Ressource
occupee = True;
{ }; Utiliser Ressource;
Ressource occupee = True; Ressource
occupee = False;
....
 Très peu économique si pseudo-parallélisme
 Difficulté d’une solution correcte (chap. Suivant)
 Solution 2 : Blocage du Processus
 Processus bloqué : attente d ’une ressource non disponible jusqu’a son réveil
explicite par un autre processus
Blocage
Arrêter l'exécution
ACTIF BLOQUE
Réveil
Reprendre exécution

IsetSiliana CHaabani Nizar 73


9. Conditions d'Exécution Concurrente (1)
 Augmenter le degré de multi-programmation et donc
le taux d’utilisation du processeur ?
 Etablir les contraintes de précédence (relation <)
 Construire un graphe de précédence : graphe acyclique

 chaque nœud, Si, représente une instruction
 chaque arc SiSj signifie que l ’instruction Sj ne pourra
s'exécuter que si Si ait terminée son exécution.
 Exemple : Soit la séquence d ’instructions suivante :
S1 lire(x) S1 S2
S2 lire(y)
S3 z=x*y S3
S4 écrire(z)
S4

IsetSiliana CHaabani Nizar 74


Iset Siliana

IsetSiliana CHaabani Nizar 75


Chap. I I GESTION DES PROCESSUS et
THREADS
Partie 2. ORDONNANCEMENT DES PROCESSUS

1. Introduction
2. Types d’ordonnancement
3. Modèle simple d'ordonnancement
4. Politiques d’ordonnancement
 Organisations des files d’attente
 Ordonnancement FCFS / SJF/ RR/ priorité/ SRTF/ Multi-
niveaux
5. Hiérarchie d’ordonnancement

IsetSiliana CHaabani Nizar 76


1. Introduction -- Généralités
 Le SE permet 2 types de décisions sur le processeur :
 Ordonnancement des processus : L’ordonnanceur (scheduler) choisit quel est le
processus qui doit tourner
 Problème: Dans quel ordre les processus sont servis?; par exemple, un
processeur et plusieurs processus.
 Allocation du processeur : l’allocateur (dispatcher) lance l’exécution du processus
choisi par le scheduler
 Ordonnanceur -- Scheduler
 Objectif :
Sur un intervalle de temps assez grand, faire progresser tous les processus, tout en
ayant, à un instant donné, un seul processus actif (dans le processeur).
 Rôle : Prendre en charge la commutation de processus, qui règle les transitions
d’un état à un autre des différents processus.

IsetSiliana CHaabani Nizar 77


Types d’ordonnancement
Il existe différentes politiques d'allocation :
- avec ou sans priorité
sans : premier arrivé premier servi (first come, first
served : FCFS)
avec :
• la priorité peut être fixe ou dynamique
• il peut y avoir préemption, ou non

IsetSiliana CHaabani Nizar 79


3. Modèle Simple d’Ordonnancement

 Représentation de l’ordonnancement des processus

File des processus prêts Terminaison

Scheduler dispatch
UC

File d’attente E/S


E/S Demande E/S

Tranche de temps expirée

exit
Fils s’exécute Fork un fils

Interruption Attente It

IsetSiliana CHaabani Nizar 80


4. Politique d’Ordonnancement – Organisations des FAs
 H : Un seul processeur + plusieurs processus
 Une file d’attente, soit FA, des processus prêts
 Principe de chaînage d’une FA : avant/ arrière/ mixte
 Plusieurs processus sont mis dans une FA, et le service demandé
leur est fourni tour à tour, en fonction de critères de gestion
spécifiques à la FA.

Réquisition

File d’attente des prêts


Arrivée Service
UC Sortie
satisfait

Dispatcher =
Scheduler= Ordi
allocateur
Gère la FA : Arrivée des processus et Gère l’allocation du processeur,
leur placement il peut réquisitionner

IsetSiliana CHaabani Nizar 81


4. Politiques d’ordonnancement – Algorithmes sans
préemption (sans réquisition) (FCFS, SJF, Priorité) (1)
 Algorithme FCFS (First Come First Served) -- Premier Arrivé Premier Servi
 Un processus s'exécute jusqu'à sa terminaison, sans retrait forcé de la ressource.
 Modèle adapté au partage du processeur par des processus de même priorité (aucun privilège entre les
processus)
 Avec les algorithmes d'ordonnancement sans réquisition, un processus affecté au processeur ne peut pas
être interrompu.
 Facile à implanter, mais peu efficace (le choix n’est pas lié à l’utilisation de l’UC)
 Exemple
Processus Durée estimée Date d’arrivée

P1 24 0
P2 8 1
P3 12 2
P4 3 3
 Schématiser l’exécution des processus selon leur ordre d'arrivée. Pour cela, on utilise le DIAGRAMME
DE GANTT

P1 P2 P3 P4
0 24 32 44 47 Temps de vie des processus
 Temps de traitement moyen = [(24 - 0) + (32 - 1) + (44 -2) + (47 -3)]/4 = 35,25

IsetSiliana CHaabani Nizar 82


4. Politiques d’ordonnancement – Algorithmes sans
préemption (FCFS, SJF, Priorité) (2)
 Algorithme SJF -- Shortest Job First (STCF -- Shortest Time to Completion First)
: Algorithme du ’’Plus Court d’Abord ’’ :
 Suppose la connaissance des temps d'exécution : estimation de la durée de
chaque processus en attente
 Les processus sont disponibles simultanément ë Algorithme optimal (sans
préemption)
 Exécuter le processus le plus court ë
Minimise le temps moyen d'exécution
 Dans le cas où plusieurs processus possèdent la même durée, la politique FCFS
sera alors utilisée.

IsetSiliana CHaabani Nizar 83


4. Politiques d’ordonnancement – Algorithmes sans
préemption (FCFS, SJF, Priorité) (2)
 Le principe de cet algorithme consiste à attribuer à chaque
processus une valeur qui indique sa priorité.
 Le processeur est alloué au processus de plus haute priorité.
 Un classement possible des processus est donné comme suit
(des processus les plus prioritaires aux processus les moins
prioritaires) :
1. Processus système.
2. Processus interactifs.
3. Processus batch.
4. Processus utilisateurs.
 L'ordonnancement avec priorité sans réquisition peut engendrer
un problème de famine puisque les processus de faible priorité
risquent d'attendre indéfiniment.
IsetSiliana CHaabani Nizar 84
4. Politiques d’ordonnancement – Algorithmes avec
préemption (Priorité, RR, SRTF) (1)
 L'idée de la réquisition est d'interrompre un processus en cours d'exécution à
n'importe quel moment.
 A chaque processus est assignée (automatiquement par le SE /externe) une priorité
 Assignation statique -- priorités fixes ë
facile à implanter
 Assignation dynamique : la priorité initiale assignée à un processus peut être ajustée à
d ’autres valeurs ë difficile à implanter
 Pb. de famine : un processus de faible priorité peut ne jamais s'exécuter si des processus
plus prioritaires se présentent constamment
Recalculer périodiquement le numéro de priorité des processus (plusieurs FA) ë la

priorité d’un processus décroît (croit) au cours du temps pour ne pas bloquer les autres
FA
 Principe : On lance le processus ayant la plus grande priorité

Algorithme d’ordonnancement à classes de priorité

IsetSiliana CHaabani Nizar 85


IsetSiliana CHaabani Nizar 86
IsetSiliana CHaabani Nizar 87
IsetSiliana CHaabani Nizar 88
IsetSiliana CHaabani Nizar 89
IsetSiliana CHaabani Nizar 90
IsetSiliana CHaabani Nizar 91
4. Politiques d’ordonnancement – Algorithmes avec
préemption (Priorité, RR, SRTF) (1)

Algorithme d’ordonnancement à classes de priorité

IsetSiliana CHaabani Nizar 92


4. Politiques d’ordonnancement – Algorithmes avec préemption (Round
Robin, Priorité, SRTF) (2)
 L'idée de la réquisition est d'interrompre un processus en cours d'exécution à
n'importe quel moment.
 Algorithme tourniquet -- RR : l’un des algorithmes les plus utilises et des plus fiables
 Ordonnancement selon l’ordre FCFS ë Equitable
 Chaque processus possède un quantum de temps pendant lequel il s’exécute
 Lorsqu’un processus épuise son quantum de temps : au suivant !
 S’il n’a pas fini : le processus passe en queue du tourniquet et au suivant !
 Exemple : Le quantum de temps, Q, est égale à 2 unités; quel est le temps de traitement
moyen?

P2 P3
(4 unités) (2 unités)

Exécution P1 Q Q P4
CPU (3 unités) (3 unités)
Q Q

P8 Q Q P5
(2 unités) Q Q (3 unités)

P7 P6
(4 unités) (5 unités)

IsetSiliana CHaabani Nizar 93


Algorithme Tourniquet -- Round Robin (suite)

P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6
0 2 4 6 8 10 12 14 16 17 19 20 21 23 25 26 Temps de vie
Diagramme de Gantt (Q=2 unités)

 Temps de traitement moyen =


[(17-0) + (19-1) + (6-2) + (20-3) + (21-4) + (26-5) + (25-6) + (16-7)] /8 = 15,25
 Problème = réglage du quantum (petit/grand; fixe/variable; est-il le même pour tous les processus ?)
 Les quanta égaux rendent les différents processus égaux
 Quantum trop petit provoque trop de commutations de processus
 Le changement de contexte devient coûteux (perte de temps CPU)
 Quantum trop grand : augmentation du temps de réponse d’une commande (même simple)
 RR dégénère vers FCFS
 Réglage correct : varie d’un système (resp. d’une charge) à un autre et d’un processus à un autre
 Il existe d ’autres variantes de RR, telle que RR avec priorités

IsetSiliana CHaabani Nizar 94


 Le système de gestion possède n FA à différents niveaux de priorités (+ différents quanta)

Algorithme Tourniquet avec priorités


- FA n-1 (Q n-
1)
Réquisition

FA1 (Q1) Q 0  Q 1  Q 2  ...


 Q n-1
Arrivée Terminaison
FA 0 (Q 0) CPU

+
Priorité Scheduler Dispatcher

 A son arrivée, le processus est rangé dans la FA la plus prioritaire FA0


 Si un processus dans FAi épuise son quantum de temps Qi (0  i  n-2), il sera placé dans la FAi+1 (moins
prioritaire)
 Une FAi (0 < i  n-1) ne peut être servie que si toutes les FAj (0  j< i) sont vides
 un processus qui a traversé toutes les FA sans épuiser son temps de traitement reste dans la FA la moins prioritaire.

IsetSiliana CHaabani Nizar 95


4. Politiques d’ordonnancement – Algorithmes avec préemption
(Round Robin, Priorité, SRTF) (3)
 Algorithme SRTF (Shortest Remaining Time First) -- SJF avec réquisition
 Choisir le processus dont le temps d'exécution restant est le plus court
 Il y a réquisition selon le critère de temps d'exécution restant et l'arrivée d’un
processus
 Nécessité de sauvegarder le temps restant
 Exemple :
Processus Durée estimée Date d’arrivée
P1 8 0
P2 5 2
P3 5 3
P4 2 4
Diagramme de Gantt
P1 P2 P4 P2 P3 P1 P1
0 2 4 6 9 14 20
Temps de vie
 Temps de traitement moyen = [(20 - 0) + (9 -2) + (14 -3) + (6-4)]/4 = 9,5
 Théoriquement, + SRTF offre un minimum de temps d’attente; - difficile de prédire le futur

IsetSiliana CHaabani Nizar 96


Pour TAB 1 ,Donner et comparer le temps moyen d'exécution produit
par les algorithmes d'ordonnancement
a. FIFO (FCFS, PAPS)
b. PCTE (SJF),
c. tourniquet avec un quantum de 5
d. Algorithme SRTF (Shortest Remaining Time First )
Pour TAB 2,Donner le diagramme de Gantt et le temps
moyen d’exécution pour un ordonnancement de type
tourniquet avec priorités
TAB1 TAB2
Etudiant Ordre Temps Etudiant Date Temps Priorité
d’arrivée requis ‘arrivée requis
E1 0 45 min E1 0 45 min 1
E2 1 15 min E2 5 15 min 2
E3 2 10 min E3 5 10 min 3
E4 4 5 min E6 5 20 min 1
IsetSiliana CHaabani Nizar 97
5. Hiérarchie d’Ordonnancement (1)
 L’ensemble des processus prêts est-il souvent en mémoire centrale?
 Un processus élu, qui est sur disque, prend beaucoup plus de temps qu’un
processus en RAM pour être chargé.
 Les algorithmes d’ordonnancement complexes permettent de distinguer entre 2
types différents:
 Ordonnancement à court terme (short term scheduling) : considère
seulement les processus prêts en mémoire centrale.
 Ordonnancement à long terme (long term scheduling) : consiste à utiliser
un deuxième algorithme d’ordonnancement pour gérer les ‘’swapping ’’ des
processus prêts entre le disque et la RAM

’’Swap out’’ Processus

File d’attente des Prêts Sortie


Arrivée
UC

E/S Files d’attente des E/S

IsetSiliana CHaabani Nizar 98


5. Hiérarchie d’Ordonnancement (2)
 Ordonnancement multi-niveaux permet de satisfaire :
 Favoriser les processus courts
 Favoriser les processus ‘’’, qui ne demandent pas trop l ’UC
 Déterminer la nature de chaque processus le plutôt possible et effectuer
l’ordonnancement correspondant
 Files d’attente sans liens : un processus se trouvant dans dans FAi ne peut se
trouver dans FAj (j i); il reste dans FAi jusqu’à ce qu’il se termine’I/O Bound

FA n-1
(RR)
Réquisition

FA1
(FCFS/SJF) Processus Interactifs
Terminaison
CPU
+ FA
Priorité fixe 0 Processus Système

IsetSiliana CHaabani Nizar 99


5. Hiérarchie d’Ordonnancement (3)
 Files d’attente avec liens : hiérarchiser les FAs

Arrivée niveau n-1 FA n-1


(RR)

Réquisition
Arrivée niveau 1
FA1
(FCFS)

Terminaison
Arrivée niveau 0 CPU
FA
(FCFS) 0
 Un processus dans FAi ne peut être sélectionné que si toutes les FAj (j<i) sont
toutes vides
 Permettre aux processus de se déplacer d’une FA à une autre
 Hiérarchie descendante/ascendante/bidirectionnelle
 Changement dynamique dans le comportement des processus
 Chaque FA a son propre algorithme d’ordonnancement
 Descendante FAn-1 est gérée avec FCFS
 Ascendante F0 est gérée avec FCFS
IsetSiliana CHaabani Nizar 100
IsetSiliana CHaabani Nizar 101
Plan du chapitre
1. Introduction
2. Fonctions attendues
3. Va-et-vient (swapping)
4. Mémoire Virtuelle
5. Algo. de Replacements de Pages

http://www.academiepro.com/enseignants-104-Chaabani.Nizar.html

IsetSiliana CHaabani Nizar 102


1. Introduction
 La mémoire centrale est une ressource requise par tout
processus
 Un programme doit être chargé dans la mémoire centrale
pour être exécuté
 Demarrer_processus(p) Allouer(taille(p))
 Terminer_processus(p) Liberer(zone_allouée_à (p))

 Problématique
 Gérer les processus associés à des programmes trop volumineux
 Gérer le partage de la mémoire physique entre différents processus

IsetSiliana CHaabani Nizar 103


2. Fonctions attendues
 Monoprogrammation:
 Mémoire réservée au SE
 Mémoire réservée au seul processus en exécution.
 Multiprogrammation:
 La Multiprogrammation améliore le taux d’utilisation du
CPU mais requiert un bon partitionnement de la mémoire.
 A l’initialisation du système, la mémoire est divisée en n
partitions de taille fixe.
 De préférence, des partitions inégales en taille.
 Comment allouer les processus aux partitions?
 une file d’attente par partition –(a)
 une file d’attente pour toutes les partitions –(b)

IsetSiliana CHaabani Nizar 104


Multiprogrammation avec des partitions
de taille fixe

File vide

File pleine

IsetSiliana CHaabani Nizar 105


2. Fonctions attendues
Principe de partage de la ressource mémoire
Fournir une mémoire logique à chaque processus (2K)
Gérer les translations entre les mémoires logiques et la
mémoire physique (liaisons d'adresses)

IsetSiliana CHaabani Nizar 106


2. Fonctions attendues
 Mémoire physique: mémoire principale RAM de la machine
 Adresses physiques: les adresses de cette mémoire
 Mémoire logique: l’espace d`adressage d’un programme
Mémoire physique :
 Suite contiguë de mots (8, 16, 32, 64 bits selon processeur)
 Adressage direct aléatoire
 Tailles courantes : 256 Mega 2 à 4 Giga
Mémoire logique :
 Espace logiquement contigu
 Adressage direct aléatoire de mots
 Taille maximum = 2K – 1 (k = la capacité d’adressage)
IsetSiliana CHaabani Nizar 107
2. Fonctions attendues
 Mise en œuvre des mémoires logiques au dessus de la
mémoire physique
 Swapping (partage de la mémoire dans le temps)
 Découpage (partitionnement)
 Multiplexage

Il est difficile de donner à chaque programme son propre


espace d’adressage  solution Réallocation dynamique

Réallocation dynamique: mapper l’espace d’adressage de


chaque processus sur une partie différente de la mémoire
physique.

IsetSiliana CHaabani Nizar 108


…Ex. d’application
 Un ordinateur dispose de 32Mo de mémoire.

 L’OS occupe 16Mo

 Un processus utilisateur nécessite 4Mo

 Déterminer le niveau de multiprogrammation max?

 Déterminer le taux d’utilisation de CPU, si les


processus sont indépendants et qu’un processus
passe 80% de son temps en attente d’E/Ss ?
 De combien améliore-t-on ce taux si on ajoute 16Mo
de mémoire?

IsetSiliana CHaabani Nizar 109


3. Le va-et-vient (swapping)
 C’est l’utilisation de la mémoire secondaire : la « swap file »
 Stratégie pour pallier les pénuries en mémoire.
 Elle considère chaque processus dans son intégralité:
 Le processus est dans son intégralité en mémoire
 ou est supprimé intégralement de la mémoire

IsetSiliana CHaabani Nizar 110


IsetSiliana CHaabani Nizar 111
Le va-et-vient (swapping)
i. (a) A est en mémoire

ii. (b,c) B et C sont crées


ou chargés depuis le
disque
iii. (d) A est transférer sur
le disque

iv. (e,f) D arrive, tandis


que B s’en va

v. (g) A revient

IsetSiliana CHaabani Nizar 112


Les différentes techniques de partitionnement de la
mémoire centrale
Fonction attendue :
 Allouer-zone (t : taille)  adresse
 Libérer-zone (a : adresse, t : taille)
Objectifs :
 Optimiser l’utilisation de la mémoire (limiter la fragmentation)
 Optimiser les algorithmes d’allocation / libération
Techniques :
 Zones contiguës de taille fixées
 Zones contiguës de taille variables
 Zones non contiguës de taille fixe (systèmes paginés)
 Zones non contiguës de taille variable (systèmes segmentés)

IsetSiliana CHaabani Nizar 113


Allocation Contigue

Registre de relogement contient la valeur de l’adresse


physique la plus petite; le registre de limite contient
l’étendue des adresses logiques possibles
chaque adresse logique doit être plus petite que la
valeur du registre limite
IsetSiliana CHaabani Nizar 114
Allocation Contigue (Cont.)
 Allocation à plusieurs partitions
 Trous – bloc de mémoire disponible; trous de taille variable
dispersés dans la mémoire physique
 Quand un processus arrive, on lui alloue de la mémoire
dans un trou assez large pour accomoder ses besoins
 OS retient de l’information sur:
a) blocs alloués b) blocs libres (trous)

OS OS OS OS

process 5 process 5 process 5 process 5


process 9 process 9
process
process 8
10

process 2 process 2 process 2 process 2

IsetSiliana CHaabani Nizar 115


Traduction adresses logiques adr.
physiques

MMU: unité de gestion de mémoire


unité de traduction adresses
(memory management unit)

Module 7 116
Fragmentation: mémoire non utilisée

 Un problème majeur dans l`affectation contiguë:


 Il y a assez d ’espace pour exécuter un programme,
mais il est fragmenté de façon non contiguë
 La fragmentation peut être:
 externe: l`espace inutilisé est entre partitions
 interne: l ’espace inutilisé est dans les partitions

IsetSiliana CHaabani Nizar 117


Partitions fixes
 Mémoire principale
subdivisée en régions
distinctes: partitions
 Les partitions sont soit
de même taille ou de
tailles inégales
 N’importe quel progr.
peut être affecté à une
partition qui soit
suffisamment grande

(Stallings)
IsetSiliana CHaabani Nizar 118
Algorithme de placement pour (Stallings)
partitions fixes
 Partitions de tailles inégales: utilisation
de plusieurs files
 assigner chaque processus
à la partition de la plus
petite taille pouvant le
contenir
 1 file par taille de partition
 tente de minimiser la 8M
fragmentation interne
12M
 Problème: certaines files
seront vides s’il n’y a pas de
processus de cette taille (fr.
externe)
IsetSiliana CHaabani Nizar 119
Algorithme de placement pour partitions
fixes
 Partitions de tailles inégales:
utilisation d’une seule file
 On choisit la plus petite
partition libre pouvant
contenir le prochain
processus
 le niveau de
multiprogrammation
8M
augmente au profit de la
fragmentation interne
 On pourrait allouer trop 12M
de mémoire à un
programme

(Stallings)
IsetSiliana CHaabani Nizar 120
Partitions dynamiques: exemple
(Stallings)

 (d) Il y a un trou de 64K après avoir chargé 3 processus


 Le prochain processus pourrait demander plus
 Si tous les proc sont bloqués (p.ex. attente d’un événement), P2 peut
être suspendu ou permuté et P4=128K peut être chargé.
Swapped out

IsetSiliana CHaabani Nizar 121


Partitions dynamiques: exemple (Stallings)

 (e-f) Progr. 4 est chargé. Un trou de 224 – 128 = 96K est créé (fragmentation
externe)
 (g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre
trou de 320-224=96K...
 Nous avons 3 trous petits et probabl. inutiles. 96+96+64=256K de fragmentation
externe  COMPACTAGE pour en faire un seul trou de 256K

IsetSiliana CHaabani Nizar 122


la mémoire centrale comporte 3 zones libres mais aucune d'elles n'est
assez grande pour contenir un programme 8 de 180K.
Pourtant l'ensemble des 3 zones libres forme un espace de 120 + 20 +
150 = 350K suffisant pour le programme 8.
Pour permettre l'allocation du programme 8, il faut donc réunir

l'ensemble des zones libres compactage

IsetSiliana CHaabani Nizar 123


Compactage
 Une solution pour la fragmentation externe
Définition : Le compactage (ou défragmentation) est
une opération réalisée par le système d'exploitation
consistant à déplacer toutes les pages vers des
emplacements contigües pour avoir un grand espace
libre et minimiser ainsi le nombre de trous mémoires.
désavantages
 temps de transfert programmes
 besoin de rétablir tous les liens entre adresses de différents
programmes

IsetSiliana CHaabani Nizar 124


Problème de l’Allocation Dynamique
Comment satisfaire une requête de taille n à partir d’une liste de blocs

 First-fit: Allouer le premier bloc assez grand


 Best-fit: Allouer le plus petit bloc assez grand;
doit parcourir la liste entière de blocs, sauf si
ordonnée par taille. Produit des restes de blocs les
plus petits.
 Worst-fit: Allouer le plus grand bloc; doit aussi
rechercher dans toute la liste, sauf si ordonnée.
Produit des restes de blocs les plus larges.

First-fit et best-fit sont meilleurs que worst-fit en termes de rapidité


et utilisation de la mémoire
IsetSiliana CHaabani Nizar 125
Exercice
 On considère le schéma d'allocation de la mémoire
représenté par la Figure 1 et les processus A, B, C et D (c.
Ces processus sont ordonnés suivant l'ordonnancement
Round Robin avec Quantum égal à 2. Il est demandé de
représenter le schéma d'allocation mémoire en traitant
les deux cas suivants : L'allocation first Fit ;•
• L'allocation Best Fit ;• L'allocation Worst Fit.

IsetSiliana CHaabani Nizar 126


Systèmes d'Exploitation

Chapitre 2. La Gestion de la Mémoire Centrale

Partie II. La Mémoire Virtuelle


Contenu du cours
 Présentation
 La pagination -- transformation des adresses
 Les algorithmes de Remplacement
 FIFO/LRU/OPTIMAL/NRU

IsetSiliana CHaabani Nizar 127


1. Présentation
 Objectif : fournir un espace d’adressage indépendant de celui de la
mémoire physique :
 Les processus n’utilise pas tous les mémoire alloué et il y’a des programmes qui
nécessite un grand partition pour exécuté.
 La mémoire virtuelle permet d'exécuter des programmes dont la taille excède
celle de la mémoire physique
 L ’espace d’adressage > l’espace physique
 Réalisation de la mémoire virtuelle (MV)
 Représentation physique : MC + MS (disque)
 Gestion basée sur les techniques de pagination

 Pagination -- Principe :
 l’espace d’adressage virtuel est divisé en petites unités -- PAGES
 l‘ espace d’adressage physique est aussi divisé en petites unités -- CASES
(frames)
 Les pages et les cases sont de même tailles

IsetSiliana CHaabani Nizar 128


128
Pagination

 Espace d’adressage virtuel est divisé en pages.


 Les unités correspondantes dans la mémoire physique
sont appelées cadres de pages (page frame).

IsetSiliana CHaabani Nizar 129


2. Pagination -- Principe
 l'espace d'adressage du programme est découpé en morceaux linéaires de même de
taille : la page.
 L'espace de la mémoire physique est lui-même découpé en morceaux linéaires de
même taille : la case.
  charger un programme en mémoire centrale consiste à placer les pages dans
 n'importe quelle case disponible taille case = taille page
Page
7 3
6 X Case
5 0 3
4
X 2
3
2 1
2
1 1 0
0 X
Disque (MV)
X Processus
en MC
Espace
d’adressage charger un programme en mémoire
 Ne charger que les pages utiles
Virtuel centrale consiste à placer les pages dans
à un instant donné
n'importe quelle case disponible.
IsetSiliana CHaabani Nizar 130
130
IsetSiliana CHaabani Nizar 131
IsetSiliana CHaabani Nizar 132
IsetSiliana CHaabani Nizar 133
Pagination
Table de Pages
 Processeur 16 bits 
216 adresses virtuelles et
64Ko
 Mémoire physique de
32Ko
 Page de 4Ko
 Nbr pages virtuelles =
64/4 = 16
 Nbr cadres de pages =
32/4 = 8
8192 - 12287
4096 - 8191
0 - 4095
IsetSiliana CHaabani Nizar 134
2.1. Transformation des adresses virtuelles (1)
 Les adresses manipulées par le programmes sont des adresses virtuelles

 Lorsqu’une adresse est générée, elle est transcodée, grâce à une table, pour lui
faire correspondre son équivalent en mémoire physique

UC Nºpage déplacement Nºcase déplacement

Nº case

Table des pages Mémoire physique

L'adresse d'un octet est donc formé par le couple <n°de page à laquelle appartient
l'octet, déplacement relativement au début de cette page >.

IsetSiliana CHaabani Nizar 135


Transformation des adresses virtuelles (2)
 Ce transcodage est effectué par des circuits matériels de gestion : unité de gestion
de mémoire -- MMU (Memory Management Unit)

Carte CPU
CPU
@ Virtuelle

MMU B. Données (lecture/écriture)


@ Physique

Mémoire Centrale

 Si l’adresse générée correspond à une adresse mémoire physique, le MMU transmet sur le bus
l’adresse réelle, sinon il se produit un DEFAUT DE PAGE
 Chaque table des pages contient les champs nécessaires au transcodage, avec notamment :
 1 bit de présence (P 1/0) pour marquer la présence de la page en mémoire physique
 1 bit de modification (M 0/1) pour signaler si on écrit dans la page
IsetSiliana CHaabani Nizar 136
136
Mémoire Virtuelle
P1

P0

IsetSiliana CHaabani Nizar 137


Mémoire Virtuelle
Dans cet exemple, les pages ont une taille de 4Ko.
L’adresse virtuelle 12292= (1024*12)+4 . elle correspond
à un déplacement de 4octets dans la page virtuelle 3,
correspondant à son tour à la page physique 2.
Donc l’adresse physique correspond à un déplacement de
4 octets dans la page physique 2 soit: (8*1024)+4=8196.
● La page virtuelle 2 n’est pas mappée. Donc toute
adresse virtuelle comprise entre 8192 et 12287, donnera
lieu à un défaut de page.
● L’accès à une adresse virtuelle correspondant à une
page non mappée donne lieu à un défaut de page.

IsetSiliana CHaabani Nizar 138


8192 =
1024*8
12287 =
1024*12 (8*102
12292 4)+4
= =
8196
(1024
*12)
+4

IsetSiliana CHaabani Nizar 139


IsetSiliana CHaabani Nizar 140
Bit de Présence et Défaut de Page
3 la page est sur disque

SE

 Déroutement
P M Nº case (Défaut de page)

0

Table des pages


Case libérée  Ramener
Processus en MC la
 Restaurer la table des pages page
absente

 Référence Mémoire Centrale


 Redémarrer l’instruction

IsetSiliana CHaabani Nizar 141


141
Exemple et Représentation d’une Table des Pages
 Codage des @ virtuelle ou réelle
 on réserve les bits de poids nécessaires pour coder les
numéros des pages ou des cases
 les bits de poids faibles codent le déplacement

 Par exemple, dans un système ayant une mémoire


de 32 Mo et des pages de 512 octets, chaque tableau
des pages devrait contenir: 32 Mo/ 512 = 64 K pages

 Taille(page) = 4Ko; Taille(MC) = 4 cases; Taille(processus) = 16


pages
 Combien de bits a-t-on besoin pour représenter les @
virtuelles et les @ réelles?
 Chaque processus a sa propre table des pages
 142
IsetSiliana CHaabani Nizar 142
Le calcul de l'adresse réelle à partir de l'adresse virtuelle se réalise ainsi :
le numéro de page virtuelle donne l'entrée de la TPV dans laquelle se trouve le
numéro de page physique ;
le déplacement est le même (les pages physiques et virtuelles ont la même
taille) ;
si la page virtuelle n'est pas présente en m.physique, produit un défaut de
page.

IsetSiliana CHaabani Nizar 143


Pour accélérer le processus, on utilise des mémoires
associatives qui recensent les dernières pages utilisées :

IsetSiliana CHaabani Nizar 144


3. Algorithmes de Remplacement de Pages
 A la suite d’un défaut de page, le SE doit retirer une page de la MC pour libérer de la
place manquante
 Problème : quelle page choisir à décharger afin de récupérer l’espace et
minimiser le nombre de défauts de pages?
 Définition : si un processus cherche à accéder à une page non présente en mémoire
centrale, il se produit ce qu’on appelle un défaut de page .
 Lors d'un défaut de page, la page manquante est chargée dans une case libre
-----> La totalité des cases de la mémoire centrale peuvent être occupées
-----> Il faut libérer une case

 Plusieurs algorithmes de remplacements :


 Aléatoire
 Première entrée, première sortie – FIFO
 Remplacement de la page la moins récemment utilisée -- LRU (Least Recently
Used)
 Optimal
 Remplacement d ’une page non récemment utilisée -- NRU (Not Recently Used)

IsetSiliana CHaabani Nizar 145


145
Algorithmes de Remplacement (2)

 Algorithme aléatoire -- Random:


 La victime est choisie au hasard
 FIFO :
 Lors d’un défaut de page, la page la plus anciennement chargée est la page retirée
pour être remplacée
 Facile à implanter
 Remplacement d’une page très référencée í trop de défaut de pages
 Exemple 1 : Supposons avoir 3 cases et 4 pages avec la chaîne de référence suivante :
ABCABDADBCB

cases\ref. A B C A B D A D B C B

1 A D C

2 B A
3 C B

4 défauts de pages

IsetSiliana CHaabani Nizar 146


146
FIFO : la page la plus anciennement chargée est la page
remplacée

3 frames, 15 page faults

IsetSiliana CHaabani Nizar 147


Algorithmes de Remplacement (3)
 Algorithme Optimal :
 Principe :
 choisir comme victime la page qui sera référencée le plus tard possible
 Nécessite la connaissance, pour chacune des pages, le nombre d’instructions
qui seront exécutées avant que la page soit référencée
 Algorithme irréalisable dans un contexte ’’offline’’
 Connaissance des références qui seront faites
 Intérêt : permet de comparer les performances des autres algorithmes
 Exemple : reprendre exemple 1 en appliquant optimal

cases\ref. A B C A B D A D B C B

1 A C 2 défauts de pages
2 B
3 C D

IsetSiliana CHaabani Nizar 148


148
Algorithmes de Remplacement (4)
 Algorithme LRU (Least Recently Used) :
 Principe : remplacer la page la moins récemment utilisée (accédée)
Remplacer la page qui est restée inutilisée le plus de temps

 Une bonne approximation de l’algorithme optimal
 Théoriquement réalisable mais très coûteux
 Nécessite des dispositifs matériels particuliers (compteur pour chaque
référence)
 Exemple 2 : énoncé exemple 1 + la chaîne de référence A B C D A B C D A B C
D

cases\ réf. A B C D A B C D A B C D
LRU :
9 défauts de pages
1 A D C B Optimal : ?

2 B A D C
3 C B A D

IsetSiliana CHaabani Nizar 149


149
IsetSiliana CHaabani Nizar 150
IsetSiliana CHaabani Nizar 151
12 DEFAUT PAGE

IsetSiliana CHaabani Nizar 152


Algorithmes de Remplacement (5)
 Algorithme NRU (Not Recently Used) :
 Idée : marquer les pages référencées
 Principe :
 A chaque page sont associées deux bits R et M :

 R=1 chaque fois que la page est référencée (lecture/écriture),


R=0 sinon
 M=1 lorsque la page a été modifiée dans la mémoire centrale
 Au lancement d’un processus, le SE met à zéro R et M de toutes les pages
 Périodiquement, le bit R est remis à 0 pour différencier les pages qui n’ont
pas été récemment référencées des autres
 Lors d’un défaut de page, le SE retire une page au hasard dont la valeur
RM est la plus petite :
 RM = 00 : non référencée, non modifiée
 RM = 01 : non référencée, modifiée
 RM = 10 : référencée, non modifiée
 RM = 11 : référencée, modifiée
 Algorithme basé sur une solution matérielle

IsetSiliana CHaabani Nizar 153


153
Algorithmes de Remplacement -- Conclusion
 Critère de performance:
Optimal LRU NRU FIFO/Aléatoire
+ -
 La taille de la MC influe beaucoup sur les performances que l ’algorithme :
 N’essayer pas de raffiner un algorithme, mais plutôt augmenter, si
nécessaire, la taille de la mémoire, et ce afin de minimiser le remplacement.
 Question : est-ce que le rajout de mémoire réduit toujours le nombre de
défauts de pages?
 Oui pour seulement optimal et LRU
 Non pour FIFO!!
 Exemple 3 : on dispose de 3 cases mémoires. Appliquer FIFO à la chaîne de
références suivante :
ABCDABEABCDE
Rajouter 1 case et reprendre l ’algorithme de remplacement FIFO.
Conclure

IsetSiliana CHaabani Nizar 154


154
4. La Mémoire Virtuelle
 Principe
 Taille programme + données + pile peut être > Taille
mémoire disponible  Le SE conserve les parties en cours
d’utilisation en mémoire et le reste sur disque.
 Quand un programme attend le chargement d’une partie de
lui-même  il est en attente d’E/S

 Pagination
 Les adresses générées par un programme s’appellent des
adresses virtuelles, et forment l’espace d’adressage virtuel.
 La MMU (Memory Management Unit, unité de gestion
mémoire) fait la correspondance entre les adresses virtuelles
et les adresses physiques.

IsetSiliana CHaabani Nizar 155


… Tables de pages
multiniveaux
 Processeur 32bits, page de 4Ko  nombre de pages =
232/ 212 = 220 pages: une table de pages de plus que un
million d’entrées!
 Sans oublier que chaque processus a son propre
espace d’adressage et donc sa propre table de pages!
 Tables de pages multiniveaux: On ne garde pas en mémoire
toutes les tables de pages
 Tables de pages inversées
 Mémoire Associative ou TLB (Translation Lookaside
Buffer): une petite table des pages les plus référencées

IsetSiliana CHaabani Nizar 156


Tables de pages multiniveaux Second-level page tables

Exple: une adresse virtuelle sur 32


bits est partitionnée en 3 champs

A quoi correspond l’adresse


virtuelle sur 32 bits 0x00403004 ?

IsetSiliana CHaabani Nizar 157


Tables de pages inversées
Cas d’un processeur 64 bits, 256Ko
de mémoire et page de 4Ko

IsetSiliana CHaabani Nizar 158


… Structure d’une entrée de
la Table des pages
Présent/ Absent: 1 bit, indique si la page est en mémoire ou non.

Protection: 1 bit (0: RW, 1: R) ou 3 bits (RWX).

Modifié: 1 bit, une page modifiée doit être écrite sur le disque.

Référencé: 1 bit, chaque fois que la page est référencée (lue ou écrite) il
est mis à 1.

Cache inhibé: 1 bit, permet d’inhiber le cache pour une page.

IsetSiliana CHaabani Nizar 159


Algo de remplacement de pages
 Défaut de page
 Chercher une page à évincer, pour faire de la place pour la
page à charger en mémoire.
 Si le bit M de la page à évincer = 1, la page doit être sauvée
sur disque.

 Algo. optimal
 Question de performances, afin d’éviter le rechargement de
pages, la page à évincer doit être peu utilisée.
 Étiqueter chaque page avec le nombre d’instructions qui
seront exécutées avant que cette page ne soit référencée 
Evincer la page dont l’étiquette est la + grande (on repousse
ainsi le défaut de page aussi tard que possible)
 Cet algo est irréalisable, le SE ne sait pas si la page serait
référencée ou pas ultérieurement. Par contre, pour une 2éme
exécution, il est possible d’implanter cet algo.
IsetSiliana CHaabani Nizar 160
… Algo NRU (Not Recently
Used)
 Principe
 R 1, chaque fois que la page est lue ou écrite.
 M 1, chaque fois que la page est modifiée.
 A chaque interruption, R  0, afin de distinguer les pages
récemment référencées.

 Classes de pages
 Classe 0: non référencée, non modifiée
 Classe 1: non référencée, modifiée
 Classe 2: référencée, non modifiée
 Classe 3: référencée, modifiée
La classe 1 est obtenue par conséq de l’effacement du bit R de
la classe 3.
 L’algo NRU vire une page au hasard dans la + basse classe

IsetSiliana CHaabani Nizar 161


… Algo FIFO (1st In, 1st out)
 Algo. FIFO
 Le SE conserve une liste de pages couramment en mémoire.
En cas de défaut de page, la + ancienne étant en tête de liste
est évincée.
(-) cet algo peut virer des pages importantes. En effet, la page la +
ancienne peut être la page la + utilisée.

 Algo. seconde chance


 C’est l’algo FIFO modifié, tel que le bit R de la page la +
ancienne est inspecté,
 Si R = 1 de la page en tête de liste, la page est référencée, et
est placée à la fin de la liste avec R  0 et un instant de
chargement actualisé
 Si R = 0, page à virer (ancienne et non référencée).
(-) cet algo déplace constamment des pages de la liste.
IsetSiliana CHaabani Nizar 162
… Algo de l’horloge
Page
Page
chargée
chargée en
récemment
premier

En cas de défaut
de page et A tel
que R = 1

 Algo de l’horloge
 C’est l’algo de seconde chance avec une liste circulaire
(horloge) et un pointeur sur la page la + ancienne.
 Quand un défaut de page survient, la page pointée est
examinée:
 Si R = 0, la page est évincée
 Sinon, R  0, le pointeur avance vers la page suivante,
 Le processus se répète jusqu’à trouver une page avec R = 0
IsetSiliana CHaabani Nizar 163
… Algo LRU (Least Recently Used
 Principe
 Cet algo est fondé sur l’observation les pages les + référencées
lors des dernières instructions seront probablement utilisées.
 Un défaut de page évince la page qui n’a pas été utilisée
pendant le plus de temps.
 Implantations
 Compteur de 64 bits / cadre de page
 Un défaut de page  examen de tous les compteurs de la table
des pages à la recherche du plus petit compteur
 Matrice (n  n), n cadres
 Cellules initialisées à 0
 Quand une page k est référencée, tous les bits de la rangée k 
1, tous les bits de la colonne k  0
 Un défaut de page évince la page dont la rangée est la + petite

IsetSiliana CHaabani Nizar 164


… Algo LRU

– pages référencées dans l’ordre 0,1,2,3,2,1,0,3,2,3

IsetSiliana CHaabani Nizar 165


… Algo de vieillissement
 Principe
 Cet algo nécessite un compteur/ page (init: 0)
 A chaque interruption, le SE examine toutes les
pages en mémoire, et pour chaque page son bit R
est ajouté à son compteur, comme suit:
 D’abord, le compteur est décalé d’un bit à droite
 Puis, le bit R est ajouté au bit de poids le plus fort (de
gauche)
 Une page qui n’a pas été référencée depuis 4 tops
d’horloge a 4 zéros dans son compteur, et aura
une + petite valeur qu’une page qui n’a pas été
référencée depuis 3 tops d’horloge.
 Défaut de page: évincer la page dont le compteur
est le + petit

IsetSiliana CHaabani Nizar 166


… Algo de vieillissement

IsetSiliana CHaabani Nizar 167


… Algo de vieillissement vs LRU
 Différence 1:
 Slide 27 –(e)>> les pages 3 (00100000) et 5
(00101000) n’ont pas été référencées depuis 2 tops
d’horloge
 LRU: aucun moyen de distinguer les 2 pages car on
ne mémorise qu’un seul bit/ intervalle de temps
 Algo. Vieillissement: la page 3 est virée
 Différence 2:
 Le compteur de l’algo de vieillissement a un
nombre fini de bits (8 dans l’exple), on ne peut pas
distinguer 2 pages ayant la même val du compteur.
 Dans la pratique un compteur sur 8 bits est
suffisant pour des tops d’horloge qui se produisent
toutes les 20ms, une page non référencée depuis
160ms n’est pas très utilisée
IsetSiliana CHaabani Nizar 168
… Algo « ensemble de travail»
 Pagination à la demande
 Les pages sont chargées à la demande et non à
l’avance  beaucoup de défauts de page au début
 Ensemble de Travail
 C’est l’ensemble de pages exploitées par le
processus lors des k références en mémoire les +
récentes
 Il est intéressant que le SE mémorise l’ensemble
de travail de chaque processus et pré-charge en
mémoire l’ensemble de travail du processus
 En cas de défaut de page, évincer une page qui  à
l’ensemble de travail du processus

IsetSiliana CHaabani Nizar 169


… Algo « ensemble de travail»

IsetSiliana CHaabani Nizar 170


… Algo WSClock
 Working Set Clock (ensemble de travail + horloge)
 Optimisation de l’algo basé sur l’ens. de travail, qui
nécessite le parcours de toute la table des pages à
chaque défaut de page.
 Chaque entrée contient: le Temps de la dernière
utilisation, le bit R et le bit M.
 A chaque défaut de page, la page pointée est
examinée:
 Si R = 1, càd la page a été utilisée pendant le top courant, R
 0, màj d temps et le pointeur avance d’une page.
 Si R = 0 et age > et M = 0, càd la page  à l’ens de travail 
cadre de page à libérer
 Si R = 0 et age > et M = 1, càd la page  à l’ens de travail 
une écriture sur disque de la page est ordonnancée, le
pointeur avance d’une page. Ainsi, même si le pointeur
revient à son point de départ, l’écriture serait terminée.

IsetSiliana CHaabani Nizar 171


… Algo WSClock

IsetSiliana CHaabani Nizar 172


3.2. Conversion d’une Adresse Virtuelle
Procédure Conversion (Entrée : advirt; Sortie : adphysique)
Début
index = advirt.page + adresse_table(processus)
Si (non index.P) /* page absente */
Alors /* Défaut de page*/
charger_page(advirt.page, adresse_case
index.P = 1
index.case = adresse_case
finsi
adphysique = adresse_case + advirt.deplacement
Fin
Procédure charger_page (E : page; S : case)
Début
Si (Non trouver_case_libre())
Alors
choisir_case_à_libérer(case_à_libérer, page_victime)
Si (page_victime.M) Alors ecrire_disque(page_victime) finsi
lire_disque(case_voila_liberer, page)
finsi
Fin
IsetSiliana CHaabani Nizar 173
173
4. Autres Considérations (1)
 Politique d’allocation locale/globale :
 Remplacement de la page la plus ancienne :
 Globale -- la plus ancienne du système
 Locale -- la plus ancienne du processus
 En général, l ’allocation globale produit de meilleurs résultats
 Redémarrage d’une instruction après le défaut de page
 La taille d’une page? Influe sur les tables de pages utilisées par la MMU
 Mémoire de SWAP
 où stocker les pages délogées de la MC?
 sur un ou plusieurs disques locaux
 partition de swap : + rapide, - de place pour le SGF
 Fichier de swap : - rapide, + de place pour les autres fichiers
 En général, le SE utilise les deux simultanément
 Plusieurs disques = swap en parallèle
 sur un serveur (de disques) distant :
 Net PC, TX, STB, ...

IsetSiliana CHaabani Nizar 174


174
4. Autres Considérations (2)
 Ecroulement -- thrashing
Si le nombre de processus est très grand, l’espace propre à chacun est
insuffisant et ils passeront leur temps à gérer des défauts de pages
 Ecroulement du système : une haute activité de pagination
 un processus s'écroule lorsqu’il passe plus de temps à paginer qu’à
s'exécuter
 Limiter le risque d'écroulement :

Allocation
Défaut
plus de page Limite supérieure
de pages

Limite inférieure
Retrait de page

Nombre de pages
 Si un processus provoque trop de défauts de pages :
 au dessus d ’une limite supérieure : on lui allouera plus de pages
 en dessous d’une limite inférieure : on lui en retirera
 S’il y a plus de pages disponibles et trop de défauts de pages, on devra suspendre un des processus

IsetSiliana CHaabani Nizar 175


175
4. Autres Considérations (3)
 L’espace de travail -- Working set (W)
 W = les pages d’un processus référencées sur un court instant de temps
 Une allocation optimale : allouer à un processus actif autant de pages que nécessite
W
 les défauts de pages seront provoqué lors des changements d’espace de travail
 Ce modèle n’est utilisé que pour la prépagination
 Prépagination
 Lors du lancement d ’un processus ou lors de sa reprise après suspension, on
provoque obligatoirement un certain nombre de défauts de page
 Essayer de les limiter -- enregistrer W avant suspension
 Au lancement d ’un programme les 1eres pages de code seront
vraisemblablement exécutées
Conclusions
 Découpage en pages et cases de même taille
 Les pages d’un processus ne sont chargées en mémoire physique que lorsque le
processus y accède
 les pages peuvent être mises dans n’importe quelle case
 Lorsqu’un processus accède à une page non présente en mémoire physique, il se
produit un DEFAUT DE PAGE :
 la page manquante est alors chargée dans une case libre
 pas de case libre, le système utilise un algorithme de remplacement de page pour
choisir une case à libérer

IsetSiliana CHaabani Nizar 176


176
Chap. II SYNCHRONISATION ET COMMUNICATION
ENTRE PROCESSUS --IPC

1.Exemple introductif
Int i;
P1 P2
i=0; i=0;
while (i<10) while (i>-10)
i++; i--;
printf(‘’P1 GAGNE! \n’’); printf(‘’P2 GAGNE !\n’’);

 i variable « partagée »  risque de conflit d’accès!


 Les instructions i++ et i– doivent s’exécuter de manière
indivisible!
 Lequel des processus P1 ou P2 gagne?
 Vont-ils terminer? Si l’un se termine, est-ce que l’autre
termine aussi?
 Est-ce que P1 peut commencer?

177

IsetSiliana CHaabani Nizar 177


Présentation du problème
Pas d’interaction:
 Exécution dans n’importe quel ordre
 Exécution parallèle ou concurrente
 Interactions entre processus:
 Nécessité de synchroniser
 L’ordre d’exécution est important
 Cas particulier: Exclusion mutuelle –sérialisation des exécutions
 Moyens de synchronisation:
 Matériel: masquage d’interruption et TAS—Test-And-Set
 Logiciel: verrous, sémaphores, moniteurs, et passage par
messages

178

IsetSiliana CHaabani Nizar 178


2. Définitions de synchronisation, Section critique
 Synchronisation
 Utilisation d’opérations atomiques afin de garantir une
bonne coopération entre processus.
 Une opération qui consiste à distribuer, dans le temps,
les accès à une ressource partagée entre plusieurs
processus.
 Conditions de rapidité
 un ordre quelconque de processus/instructions peut
produire des résultats incorrects
 La commutation dépend, dans le cas
 de concurrence, de l’ordonnancement
 de parallélisme, de la vitesse d’exécution relative– on
synchronise le processus le plus rapide sur le processus le plus
lent..

179

IsetSiliana CHaabani Nizar 179


Section critique --SC
 Une partie d’un programme où se produit un conflit
d’accès.
 Comment éviter ce conflit?
 Besoin de contrôler l’entrée à une SC
 Besoin de supporter l’exclusion mutuelle dans la SC.
 Une bonne solution au problème de SC doit satisfaire:
1. Exclusion mutuelle: accès exclusif: à tout instant un seul
processus exécute sa SC (ressource partagée).
2. Avancement et absence de blocage: un processus qui
n’est pas dans sa SC ne doit bloquer un autre processus à
entrer en SC; c-àd pas d’attente s’il n’y a pas de
compétition
3. Attente bornée (pas de famine): une fois la demande
d’entrée en SC est lancée, le processus ne doit pas attendre
indéfiniment. La demande est assurée de manière
équitable, si possible.
 Aucune hypothèse ne doit être faite sur les vitesses
relatives des processus
180

IsetSiliana CHaabani Nizar 180


Structure Typique d’un Processus

Soient N processus exécutant le programme suivant:

Do

// ’’Entrer en SC’’ ] Prologue

SC

// ’’Sortir de la SC’’ ] Epilogue


SNC
While (1);

181

IsetSiliana CHaabani Nizar 181


3. Solutions Possibles
 Hypothèses:
 Vitesses relatives des processus quelconque et inconnu
 tout processus quitte sa SC au bout d’un temps fini
 Aperçu

Opérations
atomiques de Verrous Sémaphores Moniteurs
haut niveau Send/Receive
- +
(API)
Opérations
atomiques de
bas niveau Load/Store Masquage Interruption
(matériel) TAS 182

IsetSiliana CHaabani Nizar 182


3.1. Solutions Matérielles
 Permettre à l’utilisateur d’interdire momentanément les
interruptions (difficile et dangereuse!)
 Augmenter l’ensemble des actions atomiques
 Masquage d’interruptions
 Problème: les processus users ne peuvent pas garantir le test
et la modification d’une variable
 Solution: Interdire la commutation de processus pendant
qu’un processus est en SC ou encore masquer les Its (le
système peut le faire en mode SVC par un appel spécifique).
Masquer It
SC
Demasquer It

183

IsetSiliana CHaabani Nizar 183


Solutions Matérielles --TAS
 TAS (Test-And-Set): Instruction spéciale cablée dont le rôle est de rendre
atomique le ‘’test and set’’ du contenu d’un mot.
Int TAS (int *val)
{ int temp;
temp= *val; //implantée de manière atomique
*val = 1;
return temp;
}
 Une solution au problème de SC pour n processus:
Int verrou = 0; void MutexDebut()
Processus Pi {
Do while (TAS(&verrou))
MutexDebut(); ;
SC }
MutexFin(); void MutexFin()
SNC { verrou = 0; }
while (1);
 Preuve?

184

IsetSiliana CHaabani Nizar 184


3.2. Solutions
 Soient deuxLogicielles
processus –Attente
P0 et P1 Active sur un Verrou
 Algorithme1: A qui le tour!
Public //Variables partagées
int tour=0; //tour =i si Pi veut entrer en SC
Processus Pi
Do
while (tour != i)
; // on fait rien
SC
tour = (i+1)%2;
SNC
While (1);
 Démontrer que c’est une fausse solution?
 Exclusion mutuelles satisfaite
 Avancement non vérifié: si P0 est plus lent que P1 alors
P0 bloque P1; bien qu’il n’est pas dans sa SC
 Nécessité d’une alternance stricte (jeton)

185

IsetSiliana CHaabani Nizar 185


Algorithme2
 Algorithme2: deux drapeaux
Public //Variables partagées
int flag[2]=[0]; //flag[i]=0 si Pi est prêt pour entrer en SC
Processus Pi
Do
flag[i] = 1;
while (flag[i])
; // on fait rien
SC
flag[i] = 0;
SNC
While (1);
 Démontrer que c’est une fausse solution?
 Exclusion mutuelles satisfaite
 Avancement non vérifié: si les processus arrivent en même
temps, c-a-d flag[0] = flag[1] =1!
 Une vraie solution consiste delà combiner les deux dernieres!

186

IsetSiliana CHaabani Nizar 186


Solution de Peterson
 Algorithme3 //pour deux processus
Public //Variables partagées
int flag[2]=[0]; //flag[i]=0 si Pi est prêt pour entrer en SC
int tour = 0;
Processus Pi
Do
flag[i] = 1;
tour = j; // j = (i+1)%2;
while (flag[i] && tour == j)
; // on fait rien
SC
flag[i] = 0;
SNC
While (1);

 Preuve de correction?
 Cet algorithme satisfait les 3 conditions de SC, à
démontrer?
 Généralisation à n processus: voire algorithme de Bakery

187

IsetSiliana CHaabani Nizar 187


3.3. Attente active --Conclusion
 Solutions qui fournissent des attentes actives
 Inefficace: il faut que le processus en attente libère le
processeur explicitement (exemple la fonction sleep sous
Unix).
 Les processus de priorité élevé peuvent être prives
(inversion de priorité)
 Solutions de blocage
 Sémaphores
 Moniteurs
 Send/Receive

188

IsetSiliana CHaabani Nizar 188


4. Les SEMAPHORES

Motivation : synchronisation des processus concurrents


 Une approche par attente active n’est pas intéressante, puisque le processeur
est immobilisé simplement pour attendre
 Gaspillage de la puissance CPU disponible
 Une approche alternative = utilisation de sémaphores
 Principe et définition des sémaphores
 Mécanisme de synchronisation simple et ancien entre des processus
concurrents
 Le principe est directement hérité des chemins de fer -- Signal muni d’un bras
indiquant si la voie ferrée est libre ou occupée
 Sémaphore levé : le processus P peut continuer son chemin
 Sémaphore baissé : il doit attendre jusqu'à ce qu’un autre processus Q
le lève
 Eviter des collisions en assurant l'accès exclusif à un croisement ferré
 Inventés par le mathématicien Allemand Dijkstra (1965)
 4.1. Syntaxe et Sémantique
 Un sémaphore S est une variable spéciale contenant un nombre entier (IN)
et manipulé uniquement par 3 opérations atomiques : initialisation, P et V

189

IsetSiliana CHaabani Nizar 189


4.1. Syntaxe et Sémantique d’un Sémaphore

 P --passer : P(S)/Wait(S)/Down(S)
 Décrémenter la variable S (à moins qu’elle ne soit déjà à 0)
 Utilisée (lorsque déjà 0) pour bloquer (suspendre) le processus
appelant jusqu'à ce qu’un événement survienne.
 V --relâcher : V(S)/Signal(S)/Up(S)
 Incrémenter le sémaphore de 1
 Utilisée pour signaler un événement, et si possible, réactiver un
processus en attente.
 Initialisation de S : interprétée comme un nombre d’autorisations
(disponibles quand l’entier est positif, attendues quand le le nombre est
négatif).
 Déclaration de sémaphores -- Notation d’Andrews
 Sem S1, S2; Sem ingred[3]=([3] 1); S1 = 0; S2 = 1;
 Apres initialisation, les seules opérations permises sont P et V
 P(S) : < attendre(S>0); S--; >
 V(S) : < S++; >
 Sémaphores général vs. sémaphore binaire :
 Sémaphore général : peut prendre n ’importe quelle valeur non-
négative
 Sémaphore binaire : la valeur peut être uniquement 0 ou 1

190

IsetSiliana CHaabani Nizar 190


4.1. Syntaxe et Sémantique d’un Sémaphore (suite)

 Sémaphore associé à une file d’attente -- Sémaphore de


blocage
 A chaque sémaphore est associée une file d’attente pour les
processus bloqués
 Création d’un sémaphore général
typedef struct semaphore {
int valeur;
bcp *tete; }
void P(semaphore *S)
{ if ( --S->valeur < 0) {
insérer ce processus dans la FA associée
Bloquer }
}
void V(semaphore *S)
{ if ( ++S->valeur <= 0) {
supprimer le processus courant de la FA associée à
ce sémaphore
Réveiller }
}
 L’utilisation correcte des sémaphores ne doit pas dépendre d’une
gestion particulière de la file d’attente

191

IsetSiliana CHaabani Nizar 191


4.2. Utilisation des Sémaphores

 Les sémaphores peuvent être utilisés tant pour la réalisation des sections critiques
que pour diverses formes de synchronisation conditionnelle
Compétition entre 2 processus Coopération -- sémaphore
privé
Variables partagées Variables partagées
Semaphore Mutex=1; Semaphore Sync = 0;
Processus Pi Processus P0 Processus P1
Repeat ....... .......
P(Mutex); P(Sync);
V(Sync);
SECTION CRITIQUE ....... .......
V(Mutex);
until flase; Il existe une relation de
précédence P1 < P0
 Conséquence :
 Un sémaphore est toujours initialisé à une valeur non-négative mais peut
devenir négative après un certain nombre d'opérations P(S) -- nombre des
processus en attente.

192

IsetSiliana CHaabani Nizar 192


4.3. Problèmes de dysfonctionnement des sémaphores

 Remarques :
 La plupart des mises en œuvre des sémaphores assurent que les processus en
attente sont réactivés dans l’ordre dans lequel ils ont été suspendus sur le
sémaphore.
 Equité dans l’ordonnancement des processus
 Les sémaphores sont les principales primitives de synchronisation dans Unix
 Un sémaphore est un mécanisme qui permet le blocage et le réveil explicite.
 Servir à traiter tous les paradigmes de la programmation concurrente
  Aucune garantie qu’une synchronisation est exempte de problèmes!! :
 Interblocage (Deadlock) -- attente circulaire
 Un processus est bloqué indéfiniment s’il est en attente d’un
événement qui ne peut être produit que par le processus déjà en
attente
 Considérons 2 processus utilisant 2 sémaphores d’exclusion mutuelle
P1 P2
P(S1) P(S2)
P(S2) P(S1)
... ...
 Famine (starvation) : des processus qui s'exécutent indéfiniment sans aucun
changement; certains processus peuvent ne jamais obtenir les ressources!

193

IsetSiliana CHaabani Nizar 193


4.4. Attente active vs. Blocage

 L ’attente active est-elle plus coûteuse que le blocage?


 Coût de blocage contre le coût de manipulation des
files d ’attente + la commutation de contexte?
 La durée de l ’attente?
 L’attente active peut être meilleure pour des sections
critiques de courtes durées, plus particulièrement pour
les multiprocesseurs, elle est incontournable.

194

IsetSiliana CHaabani Nizar 194


4.5. Problèmes Classiques de Synchronisations

 Rendez-vous -- Principe général


P1 P2 Pn

Point de Point de
rendez-vous synchronisation

 Version simplifiée du problème pour 2 processus (généralisation -- voir TD)


 Synchronisation par sémaphores privés :
 Semaphores arrivee1=0, arrivee2 = 0;
Processus P1 Processus P2
...... .......
V(arrivee1); // signaler mon arrivée V(arrivee2);
P(arrivee2); // attendre l'arrivée de l’autre P(arrivee1);
...... ......
195

IsetSiliana CHaabani Nizar 195


4.5. Problèmes Classiques de Synchronisations (2)
Problème de Producteur/Consommateur (tampon borné)

Vide
N cases
Producteur Consommateur

Plein

 Contraintes de synchronisation :
 Relation de précédence : Producteur <
Consommateur
 Section critique (tampon)
 tampon plein  Producteur se bloque
 tampon vide  Consommateur se bloque
 Exclusion mutuelle au tampon

196

IsetSiliana CHaabani Nizar 196


Solution au Problème de Producteur/Consommateur (tampon borné)

 Variables partagées
#define N 100
Semaphore mutex=1; /* protège l'accès au tampon */
Semaphore plein=0; /* compte le nombre d ’informations produites dans le
tampon */
Semaphore vide = N; /* Nb d ’emplacements libres dans le tampon */
Processus Producteur Processus Consommateur
Repeat Repeat
...... ......
Produire_objet();
décrémenter nb info. */ P(plein); /*
...... P(mutex); /* entrée en SC */
P(vide) /* dec. Cases libres */ retirer_objet();
P(mutex); /* entrée en SC */ V(mutex); /* sortie de
SC */
deposer_objet(); V(vide); /* Incr. nb
cases vides */
V(mutex); /* sortie de SC */ Consommer_objet()
V(plein); /* Incr. nb info. */ until false;
until false;
197

IsetSiliana CHaabani Nizar 197


Synchronisations (4)
Problème des Lecteurs/Rédacteurs

 Considérons ce problème comme étant un système de réservation de billets


d’avions où plusieurs processus tentent de lire et d'écrire des informations:
 On accepte que plusieurs lisent ensemble (degré  d'accès 1)
 On n’autorise qu’un seul processus à modifier (on exclut les lecteurs et les
autres rédacteurs)  Exclusion mutuelle (degré = d'accès 1)
 On suppose que les lecteurs sont prioritaires par rapport aux rédacteurs
 Un rédacteur bloqué doit attendre le dernier des lecteurs pour qu’il puisse
entrer en section critique
 Solution
Variables partagées
Semaphore mutex1=1; /* protège le compteur des lecteurs */
Semaphore mutex2=1; /* garantir la priorité des lecteurs)
Semaphore wrt=1; /* exclusion mutuelle pour les
rédacteurs */
int nblect=0; /* Nombre de lecteurs actifs */

198

IsetSiliana CHaabani Nizar 198


Solution au Problème des Lecteurs/Rédacteurs
avec priorité des lecteurs par rapport aux rédacteurs

Processus Lecteur Processus Rédacteur


......
P(mutex1); /* accès exclusif à nblect */ P(mutex2); /* priorité des
lecteurs*/
if (++nblect == 1) P(wrt); /* accès exclusif */
P(wrt); /* bloquer les rédacteurs */ Ecriture
V(mutex1); /* libérer l ’utilisation de nblect */ V(wrt); /* libérer l'accès
exclusif */
Lecture V(mutex2);
P(mutex1);
if (--nblect == 0) /* si le dernier lecteur */
V(wrt); /* autoriser une écriture */
V(mutex1);
......

199

IsetSiliana CHaabani Nizar 199


5. Les MONITEURS
Motivation :
 Les sémaphores peuvent être utilisés pour résoudre à peu près
n'importe quel problèmes d'exclusion mutuelle ou synchronisation ...
mais les sémaphores possèdent certains désavantages :
 Mécanisme de bas niveau qui demande une discipline sévère
dans la façon dont ils sont utilisés, sous peine d'erreurs: que se
passe-t-il si on oublie d'indiquer un appel à V? ou si on effectue
une action P en trop?
 Le rôle d'une opération P ou V (exclusion mutuelle?
synchronisation conditionnelle?) dépend du type de sémaphore,
de la façon dont il est initialisé et manipulé par les divers processus
pas explicite
 Moniteur :
 Mécanisme de synchronisation de haut niveau, proposé par Hoare et
Brinch Hansen.
 Forme de module qui supporte, à l ’aide de deux mécanismes
indépendants, l ’exclusion mutuelle et la synchronisation
conditionnelle.
 Conceptuellement, un moniteur simule une classe en OO (des
variables partagées et les méthodes qui les manipulent)
 Un moniteur est censé assurer une exclusion mutuelle (un seul
processus actif dans le moniteur) d’accès aux données qu’il contient
2
0
IsetSiliana CHaabani Nizar 200
0
5.1. Syntaxe et Sémantique d’un Moniteur

 Structure d’un Moniteur VARIABLES Partagées


- d’Etat
- Condition

Procédures
Externe Interne
Points s s
d'entrée

 Sémantique d’un Moniteur =


 Type abstrait, mais avec des propriétés d’exclusion mutuelle et de
synchronisation lorsque le moniteur est partagé par plusieurs
processus.
 On n’a accès qu’aux procédures externes, pas aux variables
 Les procédures sont exécutées en exclusion mutuelle et donc les
variables internes sont manipulées en exclusion mutuelle
 On peut bloquer et réveiller des taches. Le blocage et le réveil
s’exprime au moyen de conditions.

2
0
IsetSiliana CHaabani Nizar 201
1
5.1. Syntaxe et Sémantique d’un Moniteur (suite)
 Syntaxe : la forme générale d’une déclaration de moniteur :
Monitor nom_moniteur {
/* --- Déclarations des variables --- */
.....; /* variables d'états */
Condition ... ; /* variables conditions */
/* ------------ Déclarations des procédures ------------ */
Public nom_fonction (...)
{ .... }
Public void nom_procedure (..)
{ .... }
Private .... (...)
{ ..... }
{ /* -- Initialisation des variables ---*/
}
2
0
IsetSiliana CHaabani Nizar 202
2
5.1.1. Exclusion Mutuelle

 Philosophie des moniteurs = séparer de façon claire l ’exclusion


mutuelle de la synchronisation conditionnelle (coopération):
 L ’exclusion mutuelle est supportée de façon implicite : un appel, par
un processus, d’une procédure exportée par le moniteur assure que la
procédure sera exécutée de façon exclusive, c-à-d, au plus un appel
d’une procédure du moniteur sera actif à un instant donné
 le moniteur maintient une FA des processus en attente d'entrée.
 Les synchronisations conditionnelles doivent être décrites de façon
explicite à l ’aide de variables condition (Condition variables)
 En d ’autres termes, l’exclusion mutuelle est automatique, sa mise en
œuvre étant assurée par le langage (compilateur), la librairie, ou le
système d ’exploitation, pas le programmeur lui-même.
 Langages de programmation
 JAVA (le meilleur) déclarations en exclusion mutuelle
(‘’synchronized’’) certaines méthodes d ’une classe.
 ADA95 -- type protégé, objet protégé « protected »; ainsi, toutes les
procédures de ces objets protégés sont exécutées en exclusion
mutuelle.

2
0
IsetSiliana CHaabani Nizar 203
3
5.1.2. Variables de Condition
 Une variable condition est utilisée pour suspendre un processus jusqu'à ce
qu’une certaine condition devienne vraie.
 Déclarée comme une variable, mais on ne peut ni lui attribuer de
valeur ni la tester) -- Condition C;
 Servir de FA des processus qui attendent sur cette condition
 3 opérations possibles sur une variable condition C :
 Empty(C) // La FA associée est-elle vides ?
 Mise en attente d’un processus : Wait(C) // le processus appelant
se bloque et doit libérer le moniteur.
 Réactivation de processus en attente : Signal(C) // reprend
exactement un processus (en tête de la FA associée à C). Si aucun
processus n ’est suspendu alors cette opération est sans effet.
 Problème de signalisation : un processus P fait un signal et réveille un
processus Q, alors qui aura le contrôle exclusif du moniteur? 2 approches :
 Signaler et continuer : le processus qui exécute signal continue son
exécution, donc conserve l'accès exclusif au moniteur. Le processus
ayant été signalé sera exécuté plus tard Approche non-préemptive -- la
plus couramment utilisée (Unix, Java, Pthreads).
 Signaler et Attendre : le processus qui signale attend pendant que celui
qui vient d'être signale acquiert l accès exclusif au moniteur

2
0
IsetSiliana CHaabani Nizar 204
4
2
0
IsetSiliana CHaabani Nizar 205
5
5.2. Similitudes/Différence entre P/Wait et V/Signal

 Les opérations Wait et P peuvent toutes deux avoir pour effet


de suspendre un processus qui exécute cette opération :
 Wait suspend toujours le processus
 P ne le fait que si la valeur du sémaphore est négative ou nulle
 Signal et V peuvent réactiver un processus suspendu :
 Signal n ’a aucun effet si aucun processus n’est suspendu,
 alors que V aura pour effet d’incrémenter la valeur du
sémaphore si aucun processus n ’est suspendu.
 Implantation des moniteurs par des sémaphores :
 Assurer l ’exclusion mutuelle au moniteur mutex (P entrée V
après sortie)
 A chaque variable condition sont associés un sémaphore et un
compteur
 Wait (V(mutex); P(semcond))

2
0
IsetSiliana CHaabani Nizar 206
6
Exemple: Producer-consumer
Monitor ProducerConsumer
procedure producer;
condition full, empty; begin
integer count; while true do
item = produce_item();
procedure insert(item:integer); ProducerConsumer.insert(item)
begin end;
if count = N then wait(full);
insert_item(item);
count := count + 1;
if count = 1 then signal(empty)
end; procedure consumer;
begin
function remove: integer; while true do
begin ProducerConsumer.remove();
if count = 0 then wait(empty); consume_item(item);
remove = remove_item; end
count := count - 1;
if count = N-1 then signal(full)
end;
count := 0;
end monitor;
2
0
IsetSiliana CHaabani Nizar 207
7
Lecteurs/Rédacteurs
1.Un objet (par ex. un fichier, un enregistrement dans un fichier ou une base de

données toute entière) est partagé entre plusieurs activités concurrentes.

2.Certaines activités les lecteurs) ne modifient pas le contenu de l’objet

contrairement à d’autres (les écrivains).

3.Les lecteurs peuvent donc accéder simultanément au fichier.

4.Un écrivain au contraire doit accéder seul au fichier.

5.Si le fichier est disponible, lecteur et rédacteur ont la même priorité.

Il existe plusieurs versions classiques du problème.


2
0
IsetSiliana CHaabani Nizar 208
8
Lecteurs/Rédacteurs
variante n°1 : Priorité aux lecteurs.
S’il existe des lecteurs sur le fichier, toute nouvelle demande
de lecture est acceptée.

risque : le rédacteur peut ne jamais accéder au fichier (famine).

variante n°2 : Priorité aux lecteurs, sans famine des


rédacteurs.
S’il existe des lecteurs sur le fichier, toute nouvelle demande de
lecture est acceptée sauf s’il y a un rédacteur en attente.

variante n°3 : Priorité aux rédacteurs.


Un lecteur ne peut lire que si aucun rédacteur n’est présent ou en
attente.

risque : famine des lecteurs. 2


0
IsetSiliana CHaabani Nizar 209
9
Lecteurs/Rédacteurs
variante n°4 : FIFO.
Les demandes d’accès à l’objet sont servies dans l’ordre
d’arrivée. S’il y a plusieurs lecteurs consécutifs, ils sont
servis ensemble.

risque : Le regroupement des lecteurs est inefficace si les


demandes sont lecteur/écrivain en alternance.

2
1
IsetSiliana CHaabani Nizar 210
0
2
1
IsetSiliana CHaabani Nizar 211
1
Exemple: Lecteurs/Rédacteurs
type lecture_écriture = moniteur
private écriture: booléen;
private lecteurs: entier;
private accord_lecture,accord_écriture: condition;
procédure début_lecture;
début ?
si écriture ou accord_écriture.non_vide
alors accord_lecture.wait
findesi;
lecteurs:= lecteurs + 1;
accord_lecture.signal
fin;
procédure fin_lecture;
début
lecteurs:= lecteurs − 1;
si lecteurs = 0 alors accord_écriture.signal
findesi
fin;

2
1
IsetSiliana CHaabani Nizar 212
2
procédure début_écriture;
début
si lecteurs > 0 ou écriture
alors accord_écriture.wait
findesi;
écriture:= vrai
fin;

procédure fin_écriture;
début
écriture:= faux;
si accord_lecture.non_vide
alors accord_lecture.signal
sinon accord_écriture.signal
findesi
fin;

début {du moniteur}


écriture:= faux;
lecteurs:= 0
fin;

2
1
IsetSiliana CHaabani Nizar 213
3
import lecture_écriture

processus lecteur
{
lecture_écriture.début_lecture ;
< lecture >
lecture_écriture.fin_lecture ;
}

processus écrivain
{
lecture_écriture.début_écriture ;
< écriture >
lecture_écriture.fin_écriture ;
}

2
1
IsetSiliana CHaabani Nizar 214
4
Structure des Systèmes Informatiques

 Opérations des Systèmes Informatiques


 Structure des E/S
 Structure de stockage
 Hiérarchie de stockage
 Protection matérielle
 Structure réseau

IsetSiliana CHaabani Nizar 215


Opérations des SI
 Périphériques d’E/S et la CPU peuvent s’exécuter
simultanément
 Chaque contrôleur de périphérique est en charge d’un
type particulier de périphériques
 Chaque contrôleur de périphérique a un tampon local
 CPU transfère les données de/à la mémoire centrale
au/du tampon local
 E/S se fait du périphérique au tampon local du
contrôleur
 Le contrôleur de périphérique informe la CPU qu’il a
fini l’opération en générant une interruption

IsetSiliana CHaabani Nizar 216


Traîtement des Interruptions

 L’OS sauvegarde l’état de la CPU (registre, compteur


de programme)
 Détermine quelle interruption a eu lieu:
 polling
 Vecteur d’interruption
 Différentes fonctions du noyau correspondent aux
traîtement rattachés à chaque interruption

IsetSiliana CHaabani Nizar 217


Structure des E/S
 E/S Synchrones – Après le début de l’E/S, le contrôle ne retourne
au processus utilisateur qu’à la terminaison de l’opération d’E/S
 Instruction Wait qui fait attendre la CPU jusqu’à la nouvelle
interruption
 Boucle Wait (contentieux sur l’accès mémoire)

 E/S Asynchrones – Après le début de l’E/S, le contrôle retourne au


processus utilisateur sans attendre la fin de l’E/S
 Appel système – requête à l’OS pour permettre à l’utilisateur
d’attendre la fin de l’E/S
 Table de Statut de Périphérique contient une entrée par
périphérique d’E/S indiquant son type, son adresse, et son état
 L’OS regarde dans cette table d’E/S pour déterminer l’état du
périphérique, pour y ajouter une requête, et pour refléter
l’occurrence d’une interruption

IsetSiliana CHaabani Nizar 218


Deux Méthodes d’E/S
Synchronous Asynchronous

IsetSiliana CHaabani Nizar 219


Storage Structure
 Mémoire Principale – le seul média de stockage que la
CPU peut accéder directement
 Mémoire Secondaire – extension de la mémoire
centrale qui offre un espace de stockage persistent
 Disques Magnétiques – plateaux couverts de matériel
magnétique pour le stockage d’informations
 Surface du disque décomposée logiquement en pistes,
divisées elles-mêmes en secteurs
 Le contrôleur de disque fait l’intermédiaire entre la vue
logique du disque par l’OS et sa disposition physique
réelle

IsetSiliana CHaabani Nizar 220


Hiérarchie des Périphériques de Stockage

IsetSiliana CHaabani Nizar 221


La lecture sur le disque

IsetSiliana CHaabani Nizar 222


Principe
– les plateaux tournent à très haute vitesse (entre 3600
et 15000 tours/min)
– la tête de lecture flotte au-dessus du plateau grâce au
coussin d’air induit (à 10 nm de la surface)
– lecture / écriture
• écriture : le courant électrique dans la tête génère un
champ magnétique qui magnétise la surface
• lecture : la magnétisation du support induit un
courant électrique dans la tête

IsetSiliana CHaabani Nizar 223


Capacité d’un disque
Taille d’une piste
= nb de secteurs par piste * taille d’un secteur
• Taille d’un cylindre
= nb de faces * taille d’une piste
• Taille d’un plateau
= nb de pistes par face * taille d’une piste * 2
• Taille du disque
= nb de cylindres * taille d’un cylindre
= nb de plateaux * taille d’un plateau

IsetSiliana CHaabani Nizar 224


Qu’est-ce qu’un fichier ?
Une suite de secteurs
– l’ordre est essentiel !!!

IsetSiliana CHaabani Nizar 225


Qu’est-ce qu’un répertoire ?
 une collection de noms de fichiers
 + un accès à la liste de leurs secteurs
 un répertoire est lui-même un fichier (rangé dans une
suite de secteurs)
Les temps d’accès
Quand on demande à lire un secteur, la carte d'interface va
 1. Placer les têtes de lecture sur le bon cylindre
 2. Attendre que le secteur cherché arrive sous la tête
 3. Copier le secteur sur la carte d'interface.
 4. Envoyer les données de la carte à l'ordinateur.
IsetSiliana CHaabani Nizar 226
Temps de lecture
Temps de lecture d’un secteur
= durée de 1 tour / nombre de secteurs par piste
• Durée constante (ex : 0,5 ms)
• Débit
= le nombre d'octets lus par seconde si on lisait sans arrêt
= le nombre d'octets qui passent sous la tête en 1 seconde
• Temps de latence
= durée moyenne d’attente d’un secteur = durée d’un 1/2 tour
• Exemple
– secteurs de 512 octets, 32 secteurs par piste, 7200 tours/min
• 16 ko par piste, 120 tours / s
• débit max = 1920 ko/s = 1,875 Mo/s
• temps de lecture d’un secteur = 1/(120*32) = 2,5.10-4s = 0,25ms
• temps de latence = 1/(120*2) = 4,2ms
IsetSiliana CHaabani Nizar 227
Cache
 Utilisation d’une mémoire très rapide d’accès pour
maintenir des informations dernièrement accédées
 Besoin d’une polititque de gestion de cache
 Le cache introduit un autre niveau de stockage
 Besoin que les données stockées à plusieurs niveaux
soient cohérents

IsetSiliana CHaabani Nizar 228


Transfert d’un Entier “A” du Disque au Registre

IsetSiliana CHaabani Nizar 229


Architecture Système Générale
 Composition
 Un (ou plusieurs) processeur(s)
 Mémoire
 Contrôleurs de périphériques
 Périphériques associés
 Bus de liaison d’n système informatique

IsetSiliana CHaabani Nizar 230


Exemple : architecture Pentium

IsetSiliana CHaabani Nizar 231


Cycle de Von Neumann
Scenario
 Extraction d’une instruction
 Stockage dans le registre d’instruction
 Décodage
 Extraction de données éventuelles (opérandes)
 Exécution
Implémentation
 Jeu d’instructions spécifique à chaque CPU
 Utilisation de registres CPU. Registres spéciaux : PC
(Program Counter), SP (Stack Pointer), PSW (Program Status
Word)
 Architectures modernes : pipelines, CPU super-scalaires, RISC
etc.
IsetSiliana CHaabani Nizar 232
Initialisation
BIOS (Basic Input Output System)
 initialise le matériel (registres processeur, mémoire
etc.)
 scanne les bus (ISA et PCI d’abord) pour trouver un
périphérique amorçable (bootable) Premier secteur =)
partition active =) deuxième « boot loader » ou
système
 charge le système d’exploitation en mémoire
Système d’Exploitation
 lance le premier processus (« init »)
 attend un événement
 Les événements sont produits par des « interruptions »

IsetSiliana CHaabani Nizar 233

Vous aimerez peut-être aussi