Systèmes d`exploitation - Fichier

publicité
Systèmes d'exploitation
Systèmes d'exploitation (Operating Systems)
Remi Bonidal ([email protected])
Formation Continue
Année 2010
R. Bonidal (FC 2010)
Systèmes d'exploitation
1
Systèmes d'exploitation
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
2
Systèmes d'exploitation
Introduction
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
2 Conception des sytèmes d'exploitation
3 Gestion des processus
1 Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
3
Systèmes d'exploitation
Introduction
Dénition
Sommaire
1
Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
4
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
,→
L'interface entre le logiciel et le physique.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
,→
L'interface entre le logiciel et le physique.
1 Séparer les applications des spécicités du matériel : portabilité
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
,→
L'interface entre le logiciel et le physique.
1 Séparer les applications des spécicités du matériel : portabilité
2 Séparer les applications des limitations du matériel : ni
→
inni
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
,→
L'interface entre le logiciel et le physique.
1 Séparer les applications des spécicités du matériel : portabilité
2 Séparer les applications des limitations du matériel : ni
→
inni
3 Protéger le matériel des applications.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Système d'exploitation ... ?
Qu'est-ce qu'un système d'exploitation ?
,→
L'interface entre le logiciel et le physique.
1 Séparer les applications des spécicités du matériel : portabilité
2 Séparer les applications des limitations du matériel : ni
→
inni
3 Protéger le matériel des applications.
Ce n'est pas facile ! !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
5
Systèmes d'exploitation
Introduction
Dénition
Pourquoi se pencher dessus ?
Pourquoi étudier les systèmes d'exploitation (SE) ?
Tout utilisateur est concerné
→
Tout programme est concerné
meilleure maîtrise
→
améliorer l'ecacité
Confrontation aux mêmes problèmes
→
ne pas réinventer la
roue
Challenge intellectuel... et c'est intéressant, tout simplement
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
6
Systèmes d'exploitation
Introduction
Dénition
Pourquoi un SE ?
Les ressources matérielles sont complexes détails techniques
embêtants
Contrôleur de disquettes NEC PD765
Possède 16 commandes, manipulées écriture de 1 à 9 octets dans des registres :
lecture/écriture d'un secteur (13 paramètres codés sur 9 octets)
déplacement du bras de lecture
initialisation du contrôleur et calibration des têtes de lecture
Retourne 23 champs d'état et d'erreurs codés sur 7 octets. Il faut gérer
soi-même le démarrage et la mise en veille du moteur (compromis entre surcoût
temps et usure).
Le programmeur λ doit-it vraiment gérer ça ? ! ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
7
Systèmes d'exploitation
Introduction
Dénition
Un rôle de gestionnaire
exemple : Partage d'imprimante
Machine multi-utilisateurs avec service d'impression. Plusieurs
programmes démarrés susceptibles d'imprimer :
verrouillage temporaire de l'accès à l'imprimante
,→
ne pas mélanger les ots de caractères
tampons d'impression
,→
un programme ne doit pas attendre inutilement
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
8
Systèmes d'exploitation
Introduction
Dénition
Un rôle de gestionnaire
Pour gérer l'accès à une ressource coûteuse. Il faut :
connaître l'utilisateur de la ressource
gérer les accès concurrentiels
éviter les conits entre les programmes/usagers
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
9
Systèmes d'exploitation
Introduction
Dénition
Fonctionnalités d'un SE
Buts d'un système d'exploitation :
décharger le programmeur d'une tache énorme et fastidieuse
,→
concentration sur le développement de SON application
protéger le système et ses usagers de fausses manipulations
orir une vue simple/uniforme/cohérente de la machine et des
ressources
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
10
Systèmes d'exploitation
Introduction
Dénition
Place du SE dans l'ordinateur
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
11
Systèmes d'exploitation
Introduction
Historique
Sommaire
1
Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
12
Systèmes d'exploitation
Introduction
Historique
les premiers ordinateurs
Génération 0 La genèse
18211836 : Première machine numérique de Charles Babbage
N'a jamais pu fonctionner correctement
Première génération
19401955 : Relais et tubes à vide, programmés par tableaux
d'interrupteurs
Trèèèès lent, cycle mesuré en secondes
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
13
Systèmes d'exploitation
Introduction
Historique
Évolution des ordinateurs
Deuxième génération Les mainframes
19551965 : Transistors, cartes perforées et exécution par lots
Système d'exploitation FMS
(Fortran Monitor System)
$JOB $FORTRAN ...Programme...
$LOAD $RUN ...Données... $END
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
14
Systèmes d'exploitation
Introduction
Historique
Évolution des ordinateurs
Troisième génération
19651980 : Circuits intégrés et multi-programmation
Système d'exploitation OS/360 (3-4× plus complexe que
FMS)
Suivent diérentes évolutions :
Multi-utilisateurs
Extension de la multi-programmation vers le temps partagé
Premier système à temps partagé CTSS (MIT)
MULTICS (MIT - Bell Labs - General Electric)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
15
Systèmes d'exploitation
Introduction
Historique
Évolution des ordinateurs
Mini-ordinateurs
1961 : PDP-1 au PDP-11 (DEC) avec 4 K-mots de 18
bits(Programmable Data Processor)
1969 : MULTICS allégé pour PDP-7 (Ken Thompson, Bell
Labs) : UNICS
19711977 : UNIX sur PDP-11 (Ken Thompson, Dennis
Ritchie et al.) en C
1974 : Distribution d'UNIX aux universités américaines par
AT&T
1977 : BSD 1 par l'université de Berkeley
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
16
Systèmes d'exploitation
Introduction
Historique
Évolution des Unices http://www.levenez.com/unix/
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
17
Systèmes d'exploitation
Introduction
Historique
Évolution des ordinateurs
Quatrième génération Les micro-ordinateurs
1980maintenant : Puces LSI (Large Scale Integration) et
ordinateurs personnels
CP/M (Gary Kildall, Digital Research), puis IBM PC et
MS-DOS
Interface graphique (GUI : Engelbart, Xerox PARC), fenêtre et
souris
Steve Jobs reprend le concept : Apple
MS Windows (3.1, 95, 98, NT, Me, XP, Vista) se répand R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
18
Systèmes d'exploitation
Introduction
Types de systèmes d'exploitation
Sommaire
1
Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
19
Systèmes d'exploitation
Introduction
Types de systèmes d'exploitation
Diérents types d'utilisations ...
Diérents Systèmes d'exploitations !
Systèmes pour mainframes
Systèmes pour serveurs
Systèmes multiprocesseurs
Systèmes personnels
Systèmes temps réel
Systèmes embarqués
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
20
Systèmes d'exploitation
Introduction
Types de systèmes d'exploitation
Systèmes pour mainframes
Grosses machines, beaucoup de ressources
Batch, transactionnel ou temps partagé
Systèmes pour serveurs
Beaucoup d'utilisateurs
Beaucoup de réseau
Systèmes multiprocesseurs
Plusieurs processeurs
Gestion concurrente des ressources
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
21
Systèmes d'exploitation
Introduction
Types de systèmes d'exploitation
Systèmes personnels
Interface conviviale
Utilisation basique Systèmes temps réel
Respect de contraintes temporelles
Temps réel dur vs Temps réel mou Systèmes embarqués
Interface conviviale
Contraintes matérielles
Systèmes pour smart-cards
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
22
Systèmes d'exploitation
Introduction
Architecture matérielle
Sommaire
1
Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
23
Systèmes d'exploitation
Introduction
Architecture matérielle
un ordinateur ...qu'est ce donc ?
Quels sont les composants de base de l'ordinateur ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
24
Systèmes d'exploitation
Introduction
Architecture matérielle
un peu d'histoire....(encore !)
Architecture de von Neumann
Pas de séparation
données/instructions !
Architecture
révolutionnaire en 45
...mais un peu dépassé !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
26
Systèmes d'exploitation
Introduction
Architecture matérielle
Et maintenant ...
Architecture moderne
Unité de calcul et de
contrôle réunies
BUS pour échange de
données
Mémoire non uniforme !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
27
Systèmes d'exploitation
Introduction
Architecture matérielle
Un peu plus en détail : le CPU
Cycle principal du CPU
récupérer l'adresse de la prochaine instruction à exécuter (dans
un registre spécique)
récupérer l'instruction elle-même (par le bus)
exécuter l'instruction
incrémenter le compteur ordinal pour pointer vers la prochaine
instruction
Un exemple d'instruction
add1 %eax, %edx
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
28
Systèmes d'exploitation
Introduction
Architecture matérielle
Le cerveau de l'ordinateur
Exécute les instructions selon un cycle
Fetch
→
Decode
→
Execute
Fonctionne selon plusieurs niveaux de
privilèges
Mode noyau : pas de restrictions
Mode utilisateur : pas toutes les instructions
Le système d'exploitation s'exécute en mode
noyau
Les programmes s'exécutent en mode
utilisateur
Les services du système sont accessibles via
des appels systèmes qui basculent en mode
noyau le temps d'exécuter le service
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
29
Systèmes d'exploitation
Introduction
Architecture matérielle
La memoire
Temps d'accès
1 ns
2 ns
10 ns
10 ms
Registres
Caches
Mémoire principale
Disque
Géré par
Compilateur
Materiel
OS
OS
Capacité
< 1 Ko
≈ 1 Mo
≈ 1 Go
≈ 1 To
Une mémoire non uniforme mais hiérarchique
Des rôles diérents
Des technologies diérentes
Des gestions diérentes
Nous verrons plus en détail la problématique de la gestion de la
mémoire.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
30
Systèmes d'exploitation
Introduction
Architecture matérielle
Les bus : transfert d'information au sein de l'ordinateur
Classication des bus
Synchrone ou Asynchrone
En fonction de ce qu'ils connectent :
bus de processeur
bus de mémoire (synchrone)
bus d'entrée/sortie (asynchrone)
En fonction de ce qu'ils transportent :
bus de données : circulation données et instructions
bus d'adressage : adresses (mémoire ou périphérique)
bus de contrôle : actions demandées (écriture ou une lecture,
entrée/sortie de ou vers un périphérique) + interruptions
matérielles (IRQ)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
31
Systèmes d'exploitation
Introduction
Architecture matérielle
Les bus classiques
Des bus pour communiquer...
...mais comment ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
32
Systèmes d'exploitation
Introduction
Architecture matérielle
Communiquer ...
...avec quoi ?
Tout ce qui entre ou sort de l'ordinateur
Disque dur, réseau, clavier, souris, ...
...est ce simple ?
Le SE doit gérer les ux de données entre le CPU et les
périphériques.
Les périphériques sont lents.
Les périphériques peuvent être asynchrones.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
33
Systèmes d'exploitation
Introduction
Architecture matérielle
Communiquer ...
...en sondant
Le SE demande
régulièrement si il y a de
nouvelles données.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
34
Systèmes d'exploitation
Introduction
Architecture matérielle
Communiquer ...
...en sondant
Le SE demande
régulièrement si il y a de
nouvelles données.
INEFFICACE !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
34
Systèmes d'exploitation
Introduction
Architecture matérielle
Communiquer ...
...en sondant
Le SE demande
régulièrement si il y a de
nouvelles données.
INEFFICACE !
R. Bonidal (FC 2010)
...en interrompant
Le périphérique
interrompt le CPU en
l'avertissant qu'il y a de
nouvelles données.
MODERNE !
Systèmes d'exploitation
Cours 1
34
Systèmes d'exploitation
Introduction
Architecture matérielle
Le CPU attend les E/S
write
transmet le contrôle au
programme d'E/S
Le prog d'E/S prépare le périphérique
Le CPU doit attendre la n du
write
L'attente peut être longue
(imprimante, graveur, ...)
Le prog d'E/S rend la main, on
continue
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
35
Systèmes d'exploitation
Introduction
Architecture matérielle
On attends ...On attends ...
Inconvénient :
On attends ... On attends ....On attends ....et ....On attends plus
qu'autre chose !
Solution : se faire avertir quand c'est ni !
...mais comment ?
Système physique dédiés : une partie du bus de contrôle.
une procédure spécique.
C'est le principe des interruptions.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
36
Systèmes d'exploitation
Introduction
Architecture matérielle
Le gestionnaire d'interruptions
Procédure d'interuption :
Sauvegarde du contexte d'exécution du programme en cours.
Lire l'emplacement du programme destiné à gérer cet
événement (table d'association préétablie)
Exécution de la routine
Restauration du contexte
Reprise du programme
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
37
Systèmes d'exploitation
Introduction
Architecture matérielle
Exemple d'interruption
Interruptions
→
meilleur usage du CPU
Le gestionnaire d'interruptions prépare le
prog d'E/S et le lance
Il recharge le prog utilisateur qui s'exécute
en même temps que les E/S : pas
d'attente
À la n du module d'E/S le gestionnaire
d'interruption reprend la main pour
examiner son état
Le prog utilisateur reprend son cours (... si
tout s'est bien passé)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
38
Systèmes d'exploitation
Introduction
Architecture matérielle
Diérentes classes d'interruption :
Les E/S
Retourne l'état du module d'E/S : normal ou erreur
Les exceptions
Débordements, instructions illégales, référence hors espace
utilisateur
Timers
Tick horloge
Suspend un programme pour eectuer des tâches annexes
Défauts matériels
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
39
Systèmes d'exploitation
Introduction
Architecture matérielle
IRQ pour le PC/AT
Liste des Interrupt Requests :
IRQ 0 : Horloge Système
IRQ 1 : Clavier
IRQ 2 : N/A (cascade du second
contrôleur)
IRQ 3 : Port série
(COM2/COM4)
IRQ 4 : Port série
(COM1/COM3)
IRQ 5 : LPT2 (carte de son)
IRQ 6 : Lecteur de disquettes
R. Bonidal (FC 2010)
IRQ 7 : Port parallèle (LPT1)
IRQ 8 : Horloge temps réel
IRQ 9 : N/A (PCI)
IRQ 10 : N/A
IRQ 11 : N/A (USB)
IRQ 12 : N/A (PS/2)
IRQ 13 : Coprocesseur math.
IRQ 14 : Disque dur primaire
IRQ 15 : Disque dur secondaire
Systèmes d'exploitation
Cours 1
40
Systèmes d'exploitation
Introduction
Architecture matérielle
Références bibliographiques
La bible (aussi disponible en français) :
Modern Operating Systems ,
Andrew S. Tanenbaum
e édition, février 2008, 1104 pages, Prentice Hall
3
Principes des systèmes d'exploitation ,
A. Silberschatz, P.B. Galvin, G. Gagne
e édition, mars 2008, 872 pages, Vuibert
6
Le noyau Linux ,
Daniel P. Bovet, Marco Cesati
e édition, août 2006, O'Reilly
3
Multiboot :
http://www.bellamyjc.org/fr/multiboot.html
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 1
41
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Sommaire
1 Introduction
2 Conception des sytèmes d'exploitation
Rôle d'un SE
Structures de SE
3 Gestion des processus
1 Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
42
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
Rôle d'un SE
Structures de SE
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
43
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Le modèle Processus / Ressources
SE = interface entre Programme et Matériel
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
44
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Le modèle Processus / Ressources
SE = interface entre Programme et Matériel
Interface à plusieurs niveaux d'abstraction entre :
Le programme eectue des tâches → processus
Les tâches sont exécutées par le matériel → ressources
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
44
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Rôle du SE
Gérer les processus
Gérer les ressources (pour le compte des processus)
CPU
Mémoire
Fichiers
···
Protéger les processus et les ressources
→
Décomposition d'un SE en sous-système.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
45
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Une protection ...
A quel niveau ?
Le matériel : partage équitable, bonne utilisation
Les programmes : les accès, le privé
Protection assistée par le matériel
2 niveaux d'exécutions :
mode utilisateur
mode privilégié (ou superviseur, noyaux, etc ...)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
46
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Exemples de protections
Entrées/Sorties
Toutes les instructions E/S sont privilégiées
Elles passent toutes par le noyau
La mémoire
Certaines régions ne doivent pas être vu par les utilisateurs
tables d'authentications
zones d'auteurs utilisateurs
Gestion de la mémoire au niveau matériel
Temps processeur
Éviter les boucles innies
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
47
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Les aspects du SE
2 aspects
Passif : orir des services aux applications.
Actif : Surveillance et contrôle.
Quelques termes :
Interface de commande (Texte ou graphique) : application
standard
Appel système(System call API) : Fonctions fournies par le SE
aux applications
Noyau : Système qui joue le rôle actif et qui implante les
appels systèmes
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
48
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Les sous-systèmes d'un SE
Gestion des processus
Gestion des E/S
Organisation
Contrôler tous les périphériques
Communication
Unier les interfaces
Gestion de la mémoire
Gestion des chiers
Aectation
Robustesse
Protection
Sécurités
Quels problèmes sont traités par ces sous systèmes ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
49
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Processus et CPU
Processus
Un processus = code + données
CPU : Control Process Unit
,→ Unité de Contrôle des Traitements
Le CPU = ressource qui sert à exécuter le code des processus
Rôle du SE pour les processus
(Ré)Activer un processus
Suspendre un processus
Tuer un processus
Contôler l'exécution d'un processus De manière optimale pour le
CPU
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
50
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Processus et CPU : les dés
Comment transférer l'exécution d'un processus à un
autre ?
Comment choisir l'ordre des processus à exécuter ?
Comment s'assurer que tous les processus vont pouvoir
s'exécuter ?
Comment synchroniser les processus lorsqu'ils accèdent à
une même ressource partagée ?
···
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
51
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Processus et mémoire
1 processus
→
1 espace d'adressage (un ensemble d'adresses
mémoire)
La mémoire = code + données du processus pendant son
exécution
Rôle du SE
Charger un processus en mémoire
Libérer la mémoire en n d'exécution d'un processus
Allouer et libérer de la mémoire dynamiquement demandée par
les processus
,→
De manière optimale pour le CPU
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
52
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Processus et mémoire : les dés
Questions :
Comment organiser les processus en mémoire ?
(partitionnement, segmentation, ...)
Comment protéger les zones mémoires de chaques
processus ?
Comment s'assurer qu'il y a assez de mémoire pour un
processus ?
···
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
53
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Gestion des chiers
Fichier = informations organisées sur un support
Caractérise les chiers
types
droits d'accès
structure
Rôle du SE
Création
Modication
Lecture
Écriture
Suppression
···
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
54
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Rôle d'un SE
Autres composants
Gestion des E/S (clavier, souris, écran, ...)
Gestion du réseau
réseau local
SE distribué
Gestion des comptes utilisateurs (groupes, ...)
Gestion de l'alimentation
À plus haut niveau (6∈ SE)
,→ Terminaux/Interprètes de commandes (shell)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
55
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
Rôle d'un SE
Structures de SE
3
Gestion des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
56
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Structure d'un SE
Plusieurs possibilités de conception pour un SE
1 Sans réelle structure
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
57
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Structure d'un SE
Plusieurs possibilités de conception pour un SE
1 Sans réelle structure
2 En couches
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
57
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Structure d'un SE
Plusieurs possibilités de conception pour un SE
1 Sans réelle structure
2 En couches
3 À noyau
Monolithique
Microkernel
Hybride
Exokernel
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
57
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Sans réelle structure
Structuration hiérarchique
mal dénie
Une entité peut faire appel
aux services de toutes les
couches inférieures
Restrictions limitées, peu de
contrôles : pas de sécurité
Exemple : MS-DOS
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
58
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À couches
Structuration hiérarchique
bien dénie
Une couche ne fait appel
qu'au services de la couche
directement inférieure
Bonne théorie générale,
extensible
Très peu ecace, trop
d'intermédiaires
Exemple :
THE de Djiksrta
(1968)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
59
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À noyau
Structuration à 2 niveaux
généralement :
1
2
Mode noyau
(Kernel Mode)
Mode utilisateur
(User Mode)
Les applications en mode
utilisateurs peuvent
(doivent) demander des
services au noyau à travers
des appels système
R. Bonidal (FC 2010)
Exemple d'un noyau monolithique
Systèmes d'exploitation
Cours 2
60
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Les appels systèmes : lien entre applications et SE
Généralement accédé par des
Interface)
API (Application Program
Cas particulier d'interruption logicielle
Les 3 plus courantes : Win32 API, POSIX API et JAVA API
Pourquoi des API ? ...Pour comprendre les réponses des appels
systèmes !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
61
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Exemple de l'appel
R. Bonidal (FC 2010)
read(fd, &buffer, nbytes) ;
Systèmes d'exploitation
Cours 2
62
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À noyau : Monolithique
Un seul programme
→
lourd et dicile à débugger
The big mess
gâchis de mémoire (tout est chargé)
possibilité de modularité (Linux)
Exemple : Linux
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
63
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À noyau : Micronoyau
Noyau réduit au presque minimum (microkernel)
Gère principalement l'ordonnancement et les transferts de
messages entre les programmes
Les drivers et les applications s'exécutent en mode utilisateur
Système client-serveur
Portable et facilement
maintenable
Ecacité plutôt
mauvaise (pas
d'optimisation)
Exemples : Mach, Minix
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
64
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À noyau : Hybride
Compromis entre le kernel monolithique et le micorkernel
Les drivers s'exécutent en mode noyau
→
optimsation
Exemple : Windows NT
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
65
Windows 2000
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
À noyau : Exonoyau
Exokernel est un petit noyau gérant géneralement des
machines virtuelles exécutées en mode utilisateur
Les ressources sont allouées aux machines virtuelles par
l'exokernel
Un SE de SE en quelque sorte
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
67
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Le cas de linux
Approche descriptive
Interface d'appels systèmes
Sous-systèmes de gestion des processus :
gestion des processus
ordonnancement
gestion de la mémoire
Sous-systèmes de gestion des chiers :
gestion du buer-cache
gestion des chiers
gestion des périphériques
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
68
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Le cas de linux
Approche fonctionnelle
Une partie supérieure :
fournit des services aux processus utilisateurs
Une partie inférieure :
fournit le traitement des interruptions
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
69
Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE
Diérence interruption/exception
Une interruption est provoquée par un signal provenant du
monde extérieur au processeur, et modiant le comportement
de celui-ci.
Une exception est un signal provoque par un
dysfonctionnement du programme en cours d'exécution
Chaque interruption ou exception dispose d'un
sous-programme (handler) qui prend en charge l'évènement
correspondant : table de vecteurs d'interruption ou IDT :
Interrupt Descriptor Table dans le langage Linux.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 2
70
Systèmes d'exploitation
Gestion des processus
Sommaire
1 Introduction
2 Conception des sytèmes d'exploitation
3 Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1 Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
71
Systèmes d'exploitation
Gestion des processus
Concepts
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
72
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Processus et boot
Le kernel est chargé à partir du disque lors du démarrage du
système
Bootstrapping = initialisation du système et dénition de
l'environnement pour exécuter des processus
Un premier processus (init) est lancé
S'exécute (réside) jusqu'à l'arrêt du système
Les autres processus sont alors créés à partir d'init (ou d'un
de ses descendants)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
73
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Processus et espace d'adressage
Plusieurs processus partagent le CPU, la mémoire, les
périphériques
Si système à temps partagé
→
l'exécution des processus est
virtuellement concurrente
Chaque processus a son espace d'adressage contenant
Ses instructions (code)
Ses données
Cet espace est a priori virtuel
Il contient un ensemble de registres (compteur ordinal,
pointeur de pile, ...) nécessaires au bon fonctionnement du
processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
74
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Processus et noyau
La sémantique des interactions entre le kernel et les processus
utilisateurs est dénie à travers l'API système : les appels
système
Ainsi le kernel eectue les instructions pour le compte du
processus
Le kernel intervient également quand un processus eectue
une action interdite
division par zéro
débordement de pile (stack overow)
adressage mémoire incorrect (segmentation fault)
,→
cause une exception matériel (hardware exception) que le
kernel traite pour le compte du processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
75
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Espace d'adressage des processus et noyau
Une partie de l'espace d'adressage de chaque processus
correspond à du code et des objets du kernel : c'est la partie
espace système
Il n'existe qu'une seule instance du kernel dans le système
Tous les processus pointent sur ce même espace kernel
L'accès à l'espace système se fait en mode système à travers
les appels système
Le kernel gère les processus via 2 objets spéciques à chaque
processus :
L'espace usager (user space) qui contient des infos sur le
processus
Liste des chiers ouverts
Valeurs des registres, ...
La pile kernel (kernel stack) pour la gestion des fonctions de
tous les processus en appel système
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
76
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
En résumé
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
77
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Cycle de vie d'un processus
Interruption possible d'un processus
R. Bonidal (FC 2010)
⇒ =
6
Systèmes d'exploitation
états
Cours 3
78
Systèmes d'exploitation
Gestion des processus
Concepts
Concepts
Cycle de vie d'un processus
Alternance de sections actives, durant lesquelles des unités de
temps CPU (les giclées CPU, CPU burst) sont consommées, et
de temps d'attentes d'E/S
Le passage d'un processus à l'autre s'eectue par un
changement de contexte (context switch)
2 mécanismes de gestion :
L'ordonnancement (scheduling) : choix du processus à activer
La synchronisation : gestion de l'accès à une ressource partagée
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
79
Systèmes d'exploitation
Gestion des processus
Changement de contexte
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
80
Systèmes d'exploitation
Gestion des processus
Changement de contexte
Changement de contexte
Interruption/activation de processus
⇒
changement de
contexte pour le système (pour le CPU)
Besoin d'un mécanisme de sauvegarde des données vitales du processus
Maintient d'une table (process table) des processus
Chaque entrée contient une structure, le PCB (Process Control
Block), décrivant le contexte d'un processus (structure
task_struct sous Linux)
Champs possibles dans un PCB
PID, registres, compteur ordinal, état du processus, temps
CPU utilisé, UID, GID, umask, répertoire courant, descripteurs
chiers, ...
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
81
Systèmes d'exploitation
Gestion des processus
Changement de contexte
Changement de contexte
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
82
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
83
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Ordonnancement
Scheduling
L'ordonnanceur (scheduler) choisit les processus qui vont
pouvoir accéder au CPU
Pour la gestion de la mémoire virtuelle (espace d'adressage du
processus) et du temps partagé (accès CPU),
l'ordonnancement se fait à deux niveaux
:
Une répartition de haut niveau qui sélectionne le prochain
processus à charger en mémoire (mémoire virtuelle)
Une répartition de bas niveau (dispatcher) qui sélectionne, à
chaque fois que le CPU devient inactif, un processus parmi
tous ceux prêts
Bas niveau
Haut niveau
R. Bonidal (FC 2010)
Exécutions
Très fréquentes
Occasionnelles
Performances demandées
Excellentes
Bonnes
Systèmes d'exploitation
Cours 3
84
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Ordonnancement
Files d'attente
Idée : gestion des accès par le d'attente
Une le d'attente pour chaque périphérique (ressource) et
par type d'E/S (lecture, écriture, ...)
Questions :
Ordre d'insertion des processus ?
Mode de passage le
↔
CPU ?
Gestion E/S et CPU identiques ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
85
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Files d'attentes
Traitement par lots
Batch mode
Pas d'ordonnancement de bas niveau
Si demande d'E/S le CPU reste inactif durant le traitement
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
86
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Files d'attentes
Multiprogrammation
Si demande d'E/S, le CPU est libéré pour traiter un autre
processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
87
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Files d'attentes
Temps partagé
Quantum de temps : durée de temps maximale allouée à
chaque processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
88
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Files d'attentes
Mémoire virtuelle
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
89
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Ordonnancement
Les algorithmes
Les critères
À minimiser
Temps écoulé entre soumission et n d'exécution
Temps de gestion (swap, changement de contexte, ...)
Temps d'exécution des E/S (processus interactifs)
À maximiser
Taux d'activité du CPU
Nombre de processus traités par unité de temps
Comment quantier ?
Faire des tests
Faire des statistiques (moyenne, variance, médiane,
extremums, ...)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
90
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Ordonnancement
Les algorithmes
2 classes d'ordonnanceurs
1
2
Non préemptifs : un processus ne relâche le CPU que quand il
a ni ou quand il passe en E/S
Préemptif : l'utilisation du CPU est sujette à un quantum de
temps
Exemples
Préemptifs
Unix, Windows NT/2000/XP..., BeOS
Non préemptifs
MS-DOS, Windows 3.1, ancien MacOS
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
91
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Non préemptifs : FCFS / PAPS
First Come First Served (FCFS)
Premier Arrivé, Premier Servi (PAPS)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
92
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Non préemptif : SJF / PCA
Shortest Job First (SJF)
Plus Court d'Abord (PCA)
Les processus ayant un minimum d'unités CPU à
consommer sont mis en tête de liste
En cas d'égalité → utiliser FCFS
Problème
Comment connaître le temps CPU des processus ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
93
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Non préemptif : SJF / PCA
Solutions
Le demander à l'utilisateur
L'estimer à partir de l'historique
tn+1 = a ∗ tn + (1 − a) ∗ pn
- tn est le temps du ne passage dans le CPU
- pn est la prédiction faite au ne passage dans le CPU
- a est un coecient de pondération (indice de conance)
Problème
Famine (starvation) des processus gourmands en CPU
Solution
Vieillissement automatique des processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
94
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Préemptif : RR
Round Robin (RR)
Algorithme du tourniquet
≈ FCFS préemptif → quantum de temps
Un processus libère le CPU si :
Demande d'E/S
Terminaison
Fin du quantum de temps alloué
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
95
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Préemptif : RR
Problème
Choix du quantum
Si quantum long → processus courts pénalisés
Si quantum ∞ → FCFS
Si quantum trop court → meilleure interactivité, mais
trop de changement de PCB
Sous Unix
Dépend de l'utilisation (serveur, ordinateur de bureau, ...)
Généralement 100ms
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
96
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Listes multiples
Les processus ont des caractéristiques diérentes
Calcul scientique
Applications bureautiques
Jeux
Utilisation diérente du CPU
Plusieurs les de priorité suivant le type de processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
97
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Listes multiples
Les processus de niveau 2 ne seront activés que lorsque ceux
de niveau 1 seront terminés (eux-mêmes activés quand la liste
de niveau 0 sera vide)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
98
Systèmes d'exploitation
Gestion des processus
Ordonnancement
Les algorithmes
Évaluation des algorithmes
1 TAM : temps d'attente moyen
Exemple : 4 processus A, B, C et D arrivés dans cet ordre avec
des temps CPU de 16, 2, 8 et 12 unités respectivement
Cas FCFS :
TAM =
0+(16)+(16+2)+(16+2+8)
4
TAM =
0+(2)+(2+8)+(2+8+12)
4
Cas SJF :
= 15
= 8, 5
2 Pénalité : rapport temps passé / temps requis
Large pénalité dans un système non préemptible → mieux vaut
passer à du temps partagé
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
99
Systèmes d'exploitation
Gestion des processus
Le cas des Unix
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
100
Systèmes d'exploitation
Gestion des processus
Le cas des Unix
Création de processus sous Unix
Les états
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
101
Systèmes d'exploitation
Gestion des processus
Le cas des Unix
Création de processus sous Unix
Identiant d'un processus
PID (Process IDentier)
PPID (Parent Process IDentier)
,→ structure arborescente des processus
UID (User IDentier) et GID (Group IDentier)
UID, GID réels : ceux de l'utilisateur du processus
UID, GID eectifs : ceux du propriétaire du processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
102
Systèmes d'exploitation
Gestion des processus
Le cas des Unix
Création de processus sous Unix
La fonction fork()
fork() crée un nouveau processus
Elle duplique l'espace d'adressage du processus original
(code, données, variables, registres, descripteurs de
chiers, ...)
Le processus appelant la fonction fork() est le processus
père (parent process)
Le processus créé est le processus ls (child process)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
103
Systèmes d'exploitation
Gestion des processus
Le cas des Unix
Création de processus sous Unix
La fonction fork()
Un appel système est transmis au kernel à travers la fonction
fork()
de la librairie C
Le kernel recherche une place disponible dans la table des
processus
S'il en trouve une, il copie toute l'info du père dans le bloc de
contrôle du ls
Remarque
La seule diérence entre les 2 PCB sont les champs PID et
PPID du processus et de son père
Souvent l'appel à fork() est immédiatement suivi d'un appel
à la fonction exec() pour remplacer le code du père
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 3
104
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
Concepts
Changement de contexte
Ordonnancement
Le cas des Unix
Synchronisation des processus
1
Gestion de la mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
105
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les problèmes classiques
Producteurs/Consommateurs
Lecteurs/Rédacteurs
Diner des Philosophes
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
106
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Producteurs/Consommateurs
Lorsque des processus légers souhaitent communiquer entre
eux, ils peuvent le faire par l'intermédiaire d'une le.
Il faut dénir le comportement à avoir lorsqu'un thread
souhaite lire depuis la le lorsque celle-ci est vide et lorsqu'un
thread souhaite écrire dans la le mais que celle-ci est pleine.
Peut être résolu à l'aide des sémaphores.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
107
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Lecteurs/Rédacteurs
Ce problème traite de l'accès concurrent en lecture et en
écriture à une ressource.
Plusieurs processus légers (thread) peuvent lire en même
temps la ressource, mais il ne peut y avoir qu'un et un seul
thread en écriture.
Peut être résolu à l'aide des sémaphores.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
108
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Le Diner des philosophes
cinq philosophes (initialement mais il peut y en avoir beaucoup
plus) se trouvent autour d'une table ;
chacun des philosophes a devant lui un plat de spaghetti ;
à gauche de chaque assiette se trouve une fourchette.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
109
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Le Diner des philosophes
Un philosophe n'a que trois états possibles :
penser pendant un temps indéterminé ;
être aamé (pendant un temps déterminé et ni sinon il y a
famine) ;
manger pendant un temps déterminé et ni.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
110
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Le Diner des philosophes
Des contraintes extérieures s'imposent à cette situation :
quand un philosophe a faim, il va se mettre dans l'état aamé et attendre que les fourchettes soient libres ;
pour manger, un philosophe a besoin de deux fourchettes :
celle qui se trouve à gauche de sa propre assiette, et celle qui
se trouve à gauche de celle de son voisin de droite (c'est-à-dire
les deux fourchettes qui entourent sa propre assiette) ;
si un philosophe n'arrive pas à s'emparer d'une fourchette, il
reste aamé pendant un temps déterminé, en attendant de
renouveler sa tentative.
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
111
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Race condition
Situation de compétition (Race condition)
Situation où plusieurs processus accèdent à la même ressource,
de manière concurrente (au même moment , souvent la
mémoire)
Faille qui fait que le résultat va dépendre de l'ordre d'accès à
la ressource par les diérents processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
112
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Race condition
Situation de compétition (Race condition)
Situation où plusieurs processus accèdent à la même ressource,
de manière concurrente (au même moment , souvent la
mémoire)
Faille qui fait que le résultat va dépendre de l'ordre d'accès à
la ressource par les diérents processus
Question
Que se passe-t-il si un processus est interrompu lors de son
accès à la ressource, laissant la main à un autre processus qui
utilse la même ressource ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
112
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Race condition
Situation de compétition (Race condition)
Situation où plusieurs processus accèdent à la même ressource,
de manière concurrente (au même moment , souvent la
mémoire)
Faille qui fait que le résultat va dépendre de l'ordre d'accès à
la ressource par les diérents processus
Question
Que se passe-t-il si un processus est interrompu lors de son
accès à la ressource, laissant la main à un autre processus qui
utilse la même ressource ?
Solution
Il faut un mécanisme d'exclusion mutuelle pour controler
l'accès à la ressource
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
112
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Synchronisation des processus, exemple :
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
113
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Section critique
Une suite d'instructions d'un programme accédant à une
ressource partagée est appelée une section critique (SC)
Critères requis pour bien gérer les race conditions
1
2
3
4
À tout moment, au plus un processus en SC
Aucune hypothèse sur la vitesse et le nombre de CPU
Aucun processus s'exécutant en dehors d'un SC ne doit
bloquer les autres
Aucun processus ne doit attendre indéniment avant de
pouvoir entrer dans une SC (éviter les deadlock et la famine)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
114
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Désactivation des interruptions
Pour ne pas être interrompu lors de l'entrée en SC, un
processus peut désactiver les interruptions
Elles sont ensuite réactivées à la sortie de la SC
Problèmes
Si erreur, l'ordinateur peut rester bloquer
On repasse en monoprogrammation, on n'optimise pas l'usage
du CPU
Privilège trop imoprtant pour un processus utilisateur
Que faire quand on a plusieurs CPU ?
Néanmoins, ça peut être pratique pour le kernel
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
115
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Verrous
Lock variables
Le principe
Associer à chaque ressource partagée une variable verrou prenant la valeur LIBRE ou OCCUPE
Ce verrou est consulté et modié par chaque processus pour
pouvoir accéder à la ressource
Exemple
···
Tantque (etat_verrou == OCCUPE) /* Attente active */ ;
etat_verrou = OCCUPE ;
accès à la ressource paratgée
etat_verrou = LIBRE ;
···
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
116
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Verrous
Problèmes
1
2
On déplace le problème sur le verrou : le verrou devient la
ressource partagée
Si l'ordonnanceur est préemptif le processus peut être
interrompu entre le test du verrou et l'accès à la ressource
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
117
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
L'alternance stricte
L'alternance
Processus 0
Répéter {
Tantque
;
}
Processus 1
Répéter {
Tantque
(a_qui_le_tour != 0)
;
/* section critique */
a_qui_le_tour = 1 ;
/* section non critique */
}
(a_qui_le_tour != 1)
/* section critique */
a_qui_le_tour = 0 ;
/* section non critique */
Évite les race conditions, mais...
Problème
Verrouillage avec attente active (spin lock)
Viole la condition 3 de bonne gestion des race conditions
Si un processus est très long il peut bloquer un autre processus
pendant un certain temps
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
118
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Solution de Peterson
Combinaison d'alternance strict et de verrouillage
Processus 0 appelle entrer_SC()
interesse[0] = TRUE
tour = 0
Processus 1 appelle entrer_SC()
interesse[1] = TRUE
tour = 1
Attente sur le while que processus
0 appelle quitter_SC()
Processus 0 et 1 appellent
entrer_SC()
interesse[0]=interesse[1] =
TRUE
tour = 0 puis tour = 1
Donc processus 0 en SC et
processus 1 bloque sur le while
R. Bonidal (FC 2010)
Solution de Peterson
int tour ;
int interesse[2] ;
void entrer_SC(int proc) {
int autre = 1 - proc ;
interesse[proc] = TRUE ;
tour = proc ;
while (tour == proc &&
intresse[autre] ==
TRUE) ;
}
void quitter_SC(int proc) {
interesse[proc] = FALSE ;
}
Systèmes d'exploitation
Cours 5
119
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Solution matérielle
TSL : Test and Set Lock
Certains processeurs disposent d'une instruction permettant
d'eectuer de manière indivisible (atomique) le test de la
valeur d'un registre et de lui assigner une nouvelle valeur
Instruction TSL
entrer_sc :
TSL REGISTRE, LockFlag
CMP REGISTRE, #0
JNE enter_region
RET
R. Bonidal (FC 2010)
quitter_sc :
MOV LockFlag, #0
RET
Systèmes d'exploitation
Cours 5
120
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Inconvénients
Les processus doivent jouer le jeu et coopérer pour que les
techniques fonctionnent
Attente active
→
gaspillage du temps CPU
Conditions 3 et 4 de gestion des race conditions pas tjrs
vériées
Inversion des priorités
Deux procesus H (haute priorité) et B (basse priorité)
On active toujours le processus de plus haute priorité
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
121
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Problème des Producteurs / Consommateurs
Ressource partagée
Un buer (mémoire tampon) de taille BUFFER_SIZE
Objectifs
Un ou plusieurs producteurs produisent des objets
Chaque producteur qui vient de produire un objet l'ajoute au
buer
S'il est plein, le producteur s'endort en attendant une place
libre
Un ou plusieurs consommateurs viennent retirer les objets
Si le buer est vide, le consommateur s'endort
Problème
Régler les race conditions sur l'accès au buer
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
122
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Comment éviter l'attente active ?
2 fonctions
sleep()
wakeup()
Idée
Quand un processus appelle
sleep(), il s'endort
wakeup(), il réveille
Si un autre processus appelle
le
processus endormi
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
123
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Problème des Producteurs / Consommateurs
#define BUFFER_SIZE 100
int buffer[BUFFER_SIZE] ;
int cpt = 0 ;
/* nbr d'objets dans le buffer */
void producteur() {
int item ;
while(TRUE) {
item = produire_objet() ;
if (cpt == BUFFER_SIZE)
sleep() ;
deposer_objet(item, buffer) ;
++cpt ;
if (cpt == 1)
wakeup(consommateur) ;
}
}
R. Bonidal (FC 2010)
void consommateur() {
int item ;
while(TRUE) {
if (cpt == 0)
sleep() ;
item =
retirer_objet(buffer) ;
--cpt ;
if (cpt == BUFFER_SIZE - 1)
wakeup(producteur) ;
consommer_objet(item) ;
}
}
Systèmes d'exploitation
Cours 5
124
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Problème
Conit sur la variable
cpt
Illustration
Solution
Un consommateur teste cpt et trouve 0
L'ordonnanceur bascule sur un producteur
Le producteur incrémente cpt et constate que le buer
était vide
Le producteur lance un wakeup() perdu car le
consommateur n'était pas encore endormi !
Mémoriser le
R. Bonidal (FC 2010)
wakeup() →
les sémaphores
Systèmes d'exploitation
Cours 5
125
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Dénition
Une sémaphore est une variable qui
Contrôle l'accès à une ressource partagée
Indique le nombre d'éléments de la ressource qui sont
disponibles
Maintient une liste des processus bloqués en attente de cette
ressource (s'il y en a)
Quand une sémaphore ne peut pas prendre de valeur plus
grande que 1, on parlera de sémaphore binaire, ou de mutex
(exclusion mutuelle)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
126
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
Implantation possible d'une sémaphore
type semaphore = enregistrement
valeur : int
Lp : liste de PID
n enregistrement
Lp
est une liste de processus qui va être utilisée pour conserver
les processus bloqués en attente de la ressource partagée (qui
ont cherché à y accéder alors qu'elle n'était pas/plus
disponible)
Quand la sémaphore est
≥0
elle indique le nombre d'unités de
la ressoucre qui sont disponibles
Quand elle est
<0
elle indique généralement le nombre de
processus qui sont bloqués en attente de la ressource
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
127
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores
2 opérations atomiques permettent de modier l'état d'une
sémaphore
down(S)
S
(ou P) décrémente
S
Puis vérie si elle est toujours ≥ 0
Si c'est n'est pas le cas, sleep() est déclenchée
up(S)
(ou V) incrémente
S
Si celle-ci est ≤ 0, un processus de la liste d'attente du
sémaphore est réveillé
Exemple d'implantation
down(S)
S.valeur = S.valeur - 1
si S.valeur < 0
ajouter(processus_courant,
S.Lp)
sleep()
R. Bonidal (FC 2010)
up(S)
S.valeur = S.valeur + 1
si S.valeur ≤ 0
processus = retirer(S.Lp)
wakeup(processus)
Systèmes d'exploitation
Cours 5
128
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores Utilisation
Une solution au problème des producteurs / consommateurs
Elle utilise 3 sémaphores
1
2
3
full
Initialisée à 0 avec une liste vide
Contrôle le nombre d'objet rangés dans le buer
La liste contient les processus consommateurs bloqués
empty
Initialisée à BUFFER_SIZE avec une liste vide
Contrôle le nombre de places vides dans le buer
La liste contient les processus producteurs bloqués
mutex
Une sémaphore binaire initialisée à 1
Contrôle l'entrée et la sortie en SC
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 5
129
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
Les sémaphores Utilisation
Producteurs / Consommateurs avec sémaphores
#define BUFFER_SIZE 100
int buffer[BUFFER_SIZE] ;
/* Les sémaphores doivent être initialisées avant usage */
sema_t mutex, full, empty ;
sema_init(&mutex, 1) ; sema_init(&full, 0) ; sema_init(&empty,
BUFFER_SIZE) ;
void producteur() {
int item ;
while(TRUE) {
item = produire_objet() ;
down(&empty) ;
down(&mutex) ;
deposer_objet(item, buffer) ;
up(&mutex) ;
up(&full) ;
}
}
R. Bonidal (FC 2010)
void consommateur() {
int item ;
while(TRUE) {
down(&full) ;
down(&mutex) ;
item =
retirer_objet(buffer) ;
up(&mutex) ;
up(&empty) ;
consommer_objet(item) ;
}
}
Systèmes d'exploitation
Cours 5
130
Systèmes d'exploitation
Gestion de la mémoire
Sommaire
1 Introduction
2 Conception des sytèmes d'exploitation
3 Gestion des processus
1 Gestion de la mémoire
Gestion des allocations mémoires
Mémoire virtuelle
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
131
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
Gestion des allocations mémoires
Mémoire virtuelle
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
132
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Gestion de la mémoire
Objectifs
Ressource critique du système à gérer :
Connaître les zones libres de la mémoire physique
Allouer de la mémoire au processus (éviter le gaspillage)
Récupérer la mémoire à la terminaison d'un processus
Orir aux processus des services de mémoire virtuelle, de taille
supérieure à la mémoire physique technique de va-et-vient
(swapping) et de pagination
Toujours penser à l'ecacité !
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
133
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Gestion de la mémoire
Diversité de congurations
En fonction du type de système :
Monoprogrammtion
Multiprogrammtion
Partitionnement xe
Partitionnement variable
En fonction du type de code :
Code absolu
Code relogeable
Quels algorithmes de gestion ?
Chargements en mémoire
Libération de la mémoire
Déplacements en mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
134
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Monoprogrammation
Gestion de la mémoire
Plutôt basique car 1 seul processus en mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
135
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Modélisation et évaluation
Objectif de la multiprogrammation : optimiser l'utilisation CPU
Point de vue naïf
Si un processus calcule en moyenne pendant 20% de son temps
⇒ 5 processus en mémoire pour une utilisation CPU optimale
Vision optimiste car on suppose aucun temps d'attente en E/S
Point de vue plus réaliste
Modélisation probabiliste de l'usage du CPU
p : probabilité pour un processus d'être en attente en E/S
n : nombre de processus
Taux d'utilisation du CPU : 1 − pn
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
136
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Modélisation
Pourcentage d'utilisation du CPU
100 %
90 %
80 %
70 %
60 %
50 %
40 %
30 %
20 %
20% d'attente en E/S
50% d'attente en E/S
80% d'attente en E/S
10 %
0%
0
1
2
3
4
5
6
7
8
9
10
Degré de multiprogrammation (nombre de processus)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
137
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Gestion de la mémoire
Partitions xes : division de l'espace mémoire en n partitions
de tailles xées (initialisation du SE)
Une le de priorité par
partition
Fragmentation externe :
un processus attend alors
que des partitions sont
libres
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
138
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Gestion de la mémoire
Partitions xes : division de l'espace mémoire en n partitions
de tailles xées (initialisation du SE)
Une le de priorité
globale
Fragmentation interne :
grande partition pour un
petit processus (mauvaise
estimation)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
139
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Contrôle de la mémoire
Comme plusieurs processus sont en mémoire simultanément, la
multiprogrammation introduit
deux problèmes essentiels à résoudre :
1
Le relogement du code (code relocation)
2
La protection des zones mémoires
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
140
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Code et espace d'adressage
Adress binding
Un programme écrit dans un langage autre que le langage
machine fait appel à des noms pour accéder aux données
et fonctions qu'il manipule
Le programme en langage machine, lui, n'utilise pas ces
noms, mais des adresses par lesquelles il accède à ces
données
À quel moment et comment se fait ce passage des
adresses symboliques aux adresses système ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
141
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Code et espace d'adressage
Adress binding
1
Code absolu : adresses déterminées une fois pour toute
lors de la compilation ou de l'assemblage
Pratique en monoprogrammation car 1 seul processus à la
fois est en mémoire
Pas de protection, si ce n'est avec le SE (très facile alors)
Utilisé dans certains systèmes embarqués par exemple
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
142
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Code et espace d'adressage
Adress binding
2
Code relogeagble : adresses déterminées une fois le code
chargé en mémoire
Il n'est pas possible de connaître à la compilation
l'adresse réelle physique où sera la donnée, l'adressage
doit doit être relatif
Généralement utilisé en multiprogrammation avec des
adresses relatives au début de la partition
Peut aussi se rencontrer en monoprogrammation si le
système n'est que partiellement résident en mémoire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
143
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Code et espace d'adressage
Adresses logique / adresses physiques
Deux possibilités :
1 Au moment du chargement en mémoire le chargeur (loader)
modie toutes les adresses en leur ajoutant l'adresse de départ
de la partition
Les adresses émises par le CPU à l'exécution sont donc des
adresses physiques
2 Le CPU émet toujours des adresses logiques qui sont à chaque
fois converties en adresses physiques
Gérer par une entité spécique : la MMU (Memory
Managment Unit)
Fait à l'aide de 2 registres :
Le registre de base : adresse du début de la partition
Le registre limite : correspond à la taille de la partition,
permet de vérier si l'accès est autorisé (protection mémoire)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
144
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Code et espace d'adressage
Adresses logique / adresses physiques
Unité de conversion des adresses logiques en adresses physiques
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
145
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Mécanisme de va-et-vient : le swapping
Partitions variables : le nombre, la taille et la localisation des
partitions changent au cours du temps
Un processus ne connaît pas à l'avance l'emplacement de sa
partition
,→
code relogeable
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
146
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Partitions variables
Fragmentation externe non résolue
Si A se repésente avant que B ne soit déchargé,
blocage de A alors qu'il reste assez de place libre au total
Fragmentation interne améliorée, + de contrôle
Les délimitations n'étant pas xes, on peut se permettre
de déplacer les zones
S'il y a trop de trous on peut compacter la mémoire
,→
Utilisation d'un ramasse-miette (Garbage Collector)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
147
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Allocation d'espace libre
Plusieurs stratégies possibles
Le premier trou disponible (First Fit)
Le plus petit trou disponible (Best Fit)
Parcourir la liste des trous
Le plus grand trou disponible (Worst Fit)
Sauf si l'on rencontre un trou de taille adéquate
Le trou restant sera encore grand et donc utilisable
Dans tous les cas il faut une bonne représentation
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
148
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Représentation de l'espace
Par bitmap : découpage en blocs d'allocation (généralement de
n
taille 2 )
Choix de n délicat
Trop petit ⇒ bitmap trop grand
Trop grand ⇒ gaspillage de mémoire
Recherche de k blocs libres : lourd
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
149
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Représentation de l'espace
Listes chaînées : construire et maintenir une liste de blocs de
mémoire libres et occupés
Chaque bloc est une suite d'adresses consécutives
Toutes occupées par un même processus
Ou toutes libres
Maintenance plus aisée, recherche moins coûteuse
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
150
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Représentation de l'espace
Listes chaînées : optimisation
Utiliser des listes doublement chaînées
Maintenir deux listes
Une pour les blocs occupés
Une pour les blocs libres
Ordonner chaque liste suivant la taille des blocs
La liste des bloc libres se simule avec... les blocs libres
Pour chaque zone libre, le 1er octet est la taille de la zone, le
2e est l'adresse du précédent bloc libre et le 3e est l'adresse du
bloc libre suivant
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
151
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Représentation de l'espace
Listes chaînées
Accélère l'allocation
Mais ralentit la libération
D'où allocation par subdivision (Buddy system)
Le gestionnaire de mémoire ne manipule que des blocs de taille
une puissance de 2
Chaîné par vecteur de listes : une liste d'indice k contient les
blocs de taille 2k
Ou représentation par arbre binaire
Fragmentation interne forte
Fragmentation externe persistante
Mais gestion des blocs très ecace
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
152
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Buddy System
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
153
Systèmes d'exploitation
Gestion de la mémoire
Gestion des allocations mémoires
Multiprogrammation
Buddy System
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
154
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Sommaire
1
Introduction
2
Conception des sytèmes d'exploitation
3
Gestion des processus
1
Gestion de la mémoire
Gestion des allocations mémoires
Mémoire virtuelle
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
155
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Problèmes :
Monoprogrammation
Programmes trop volumineux pour tenir entièrement en
mémoire
Multiprogrammation + interactivité
,→
Beaucoup de processus en cours d'exécution en même temps
Impossibilité de tout faire tenir en mémoire
Solution : la mémoire virtuelle (virtual memory)
Ne mettre en mémoire que les parties réellement utilisées des
processus
Charger et décharger les diérentes parties suivant les besoins
des processus
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
156
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Pagination
Mémoire physique trop petite pour contenir en même temps et
entièrement TOUS les processus prêts
⇒
On découpe les processus en petites tranches
n
Les tranches sont de la même taille (xe, 2 ), on les appelle
des pages
Elles sont placées (mapped) en mémoire physique dans des
cadres de page (frames) de même taille
Seules les pages utiles sont chargées en mémoire physique
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
157
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Pagination
Problème : pas assez de
cadres libres pour toutes les
pages
Que faire si accès à une page
non mappée en mémoire
(52K-56K par exemple) ?
Trap dans le SE : page fault
Repéré par la MMU (bit de
présence/abscence)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
158
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Pagination
On utilise une table des pages
Une par processus (puisque
chacun a son propre espace
d'adressage)
Problèmes :
La table des pages peut être
très grande (adressage 32
bits, page de 4 Ko ≈ 1000000
de pages)
Temps d'accès dégradés si
trop d'indirections
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
159
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Pagination
Solution / Optimisation pour la gestion des tables de pages :
Plusieurs niveaux d'indirection
Système de cache : utilisation de registres spécialisés, le TLB
(Translation Lookaside Buer)
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
160
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Swap in / swap out
Quand un défaut de page (page fault ) survient... que fait-on ?
1
2
3
4
La MMU lève une exception : interruption processeur, kernel
trap
Le processus est endormi
Le pager est activé et charge, s'il n'y a pas d'erreur, la page
requise dans un cadre de page
Quand la page est chargée le processus est réveillé
Problème :
Quelle page remplace-t-on ?
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
161
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Demande de page
Algorithme optimal :
À chaque fois qu'une page est accédée, elle est étiquetée avec
un label donnant le nombre d'instructions à exécuter avant le
prochain accès à cette page
Lors d'une demande de remplacement de page, la page avec le
label le plus élevé est choisie pour être déchargée de la
mémoire principale
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
162
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Demande de page
Algorithme optimal :
À chaque fois qu'une page est accédée, elle est étiquetée avec
un label donnant le nombre d'instructions à exécuter avant le
prochain accès à cette page
Lors d'une demande de remplacement de page, la page avec le
label le plus élevé est choisie pour être déchargée de la
mémoire principale
Impossible à implanter :p !
Mais théoriquement c'est une bonne base de comparaison
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
162
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Demande de page
Algorithme NRU (Not Recently Used) :
2 bits : R, page reférencée, et M, page modiée
Régulièrement (timer qui génère une interruption) le bit R est
remis à zéro
4 cas possibles :
1
2
3
4
Non accédée, non modiée (R ,M )
Non accédée, modiée (R ,M )
Accédée, non modiée (R ,M )
Accédée, modiée (R ,M )
On enlève en priorité suivant l'ordre croissant des cas
Facile à implanter et assez ecace
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
163
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Demande de page
Algorithme FIFO (First In, First Out) :
Liste des pages en mémoire principale suivant leur ordre
d'arrivée
Très basique et peut remplacer des pages importantes juste
parce qu'elles sont vieilles Algorithme de la seconde chance (amélioration FIFO)
Tenir compte du bit R
Si bit R à 1 (accès récent), le bit R est remis à zéro et la page
est réinsérée en n de la liste des pages
Si tous les bits R sont à 1
⇒
dégénère en FIFO
Très nette amélioration par rapport à FIFO
Algorithme de l'horloge = seconde chance avec liste circulaire
R. Bonidal (FC 2010)
Systèmes d'exploitation
Cours 6
164
Systèmes d'exploitation
Gestion de la mémoire
Mémoire virtuelle
Mémoire virtuelle
Demande de page
Algorithme LRU (Least Recently Used) :
Enlever la page utilisée le moins récemment
Un peu plus coûteux, mais excellente approximation de
l'optimal
Liste chaînée des pages, à mettre à jour à chaque accès à une
page
Ou bien compteur à incrémenter à chaque accès (matériel)
Approximation par NFU (Not Frequently Used) :
Mécanisme de vieillissement
À chaque interruption (timer) un compteur associé à la page
est décalé à droite (division par 2) et bit R recopié dans le bit
de poids le plus fort
R. Bonidal (FC 2010)
⇒
grand nombre = récemment accédée
Systèmes d'exploitation
Cours 6
165
Téléchargement