Académique Documents
Professionnel Documents
Culture Documents
Formation Continue
Année 2010
1 Introduction
1 Gestion de la mémoire
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
1 Gestion de la mémoire
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
1 Gestion de la mémoire
Pourquoi un SE ?
Les ressources matérielles sont complexes détails techniques
embêtants
Un rôle de gestionnaire
tampons d'impression
,→ un programme ne doit pas attendre inutilement
Un rôle de gestionnaire
Fonctionnalités d'un SE
Buts d'un système d'exploitation :
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
1 Gestion de la mémoire
Génération 0 La genèse
Première génération
Multi-utilisateurs
Mini-ordinateurs
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
1 Gestion de la mémoire
Systèmes multiprocesseurs
Systèmes personnels
Systèmes embarqués
Beaucoup d'utilisateurs
Beaucoup de réseau
Systèmes multiprocesseurs
Plusieurs processeurs
Systèmes personnels
Interface conviviale
Utilisation basique
Systèmes embarqués
Interface conviviale
Contraintes matérielles
Sommaire
1 Introduction
Dénition
Historique
Types de systèmes d'exploitation
Architecture matérielle
1 Gestion de la mémoire
un peu d'histoire....(encore !)
Pas de séparation
données/instructions !
Architecture
révolutionnaire en 45
Et maintenant ...
Architecture moderne
Unité de calcul et de
contrôle réunies
exécuter l'instruction
Un exemple d'instruction
Le cerveau de l'ordinateur
La memoire
Temps d'accès Géré par Capacité
1 ns Registres Compilateur < 1 Ko
2 ns Caches Materiel ≈ 1 Mo
10 ns Mémoire principale OS ≈ 1 Go
10 ms Disque OS ≈ 1 To
Synchrone ou Asynchrone
Communiquer ...
...avec quoi ?
...est ce simple ?
Communiquer ...
...en sondant
Le SE demande
régulièrement si il y a de
nouvelles données.
Communiquer ...
...en sondant
Le SE demande
régulièrement si il y a de
nouvelles données.
INEFFICACE !
Communiquer ...
...en interrompant
...en sondant
Le périphérique
Le SE demande
interrompt le CPU en
régulièrement si il y a de
l'avertissant qu'il y a de
nouvelles données.
nouvelles données.
INEFFICACE !
MODERNE !
Inconvénient :
...mais comment ?
Le gestionnaire d'interruptions
Procédure d'interuption :
Exécution de la routine
Restauration du contexte
Reprise du programme
Exemple d'interruption
Interruptions → meilleur usage du CPU
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éférences bibliographiques
Multiboot :
http://www.bellamyjc.org/fr/multiboot.html
Sommaire
1 Introduction
1 Gestion de la mémoire
Sommaire
1 Introduction
1 Gestion de la mémoire
Rôle du SE
A quel niveau ?
2 niveaux d'exécutions :
mode utilisateur
Exemples de protections
Entrées/Sorties
La mémoire
Temps processeur
Les aspects du SE
2 aspects
Quelques termes :
Aectation Robustesse
Protection Sécurités
Quels problèmes sont traités par ces sous systèmes ?
Processus et CPU
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 mémoire
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
Questions :
Rôle du SE
Création
Modication
Lecture
Écriture
Suppression
···
Autres composants
Sommaire
1 Introduction
1 Gestion de la mémoire
Structure d'un SE
Structure d'un SE
Structure d'un SE
Structuration hiérarchique
mal dénie
Exemple : MS-DOS
À couches
Structuration hiérarchique
bien dénie
À noyau
Structuration à 2 niveaux
généralement :
1 Mode noyau
(Kernel Mode)
2 Mode utilisateur
(User Mode)
Les applications en mode
utilisateurs peuvent
(doivent) demander des
services au noyau à travers
des appels système Exemple d'un noyau monolithique
À noyau : Monolithique
Un seul programme
Exemple : Linux
À noyau : Micronoyau
Noyau réduit au presque minimum (microkernel)
Système client-serveur
Portable et facilement
maintenable
Ecacité plutôt
mauvaise (pas
d'optimisation)
À noyau : Hybride
Exemple : Windows NT
À noyau : Exonoyau
Un SE de SE en quelque sorte
Le cas de linux
Approche descriptive
Le cas de linux
Approche fonctionnelle
Diérence interruption/exception
Sommaire
1 Introduction
1 Gestion de la mémoire
Sommaire
1 Introduction
1 Gestion de la mémoire
Concepts
Processus et boot
Les autres processus sont alors créés à partir d'init (ou d'un
de ses descendants)
Concepts
Processus et espace d'adressage
Concepts
Processus et noyau
Concepts
Espace d'adressage des processus et noyau
Concepts
En résumé
Concepts
Cycle de vie d'un processus
Concepts
Cycle de vie d'un processus
2 mécanismes de gestion :
L'ordonnancement (scheduling) : choix du processus à activer
La synchronisation : gestion de l'accès à une ressource partagée
Sommaire
1 Introduction
1 Gestion de la mémoire
Changement de contexte
Changement de contexte
Sommaire
1 Introduction
1 Gestion de la mémoire
Ordonnancement
Scheduling
Ordonnancement
Files d'attente
Files d'attentes
Traitement par lots
Batch mode
Files d'attentes
Multiprogrammation
Files d'attentes
Temps partagé
Files d'attentes
Mémoire virtuelle
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, ...)
Ordonnancement
Les algorithmes
2 classes d'ordonnanceurs
1 Non préemptifs : un processus ne relâche le CPU que quand il
a ni ou quand il passe en E/S
2 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
Les algorithmes
Non préemptifs : FCFS / PAPS
Les algorithmes
Non préemptif : SJF / PCA
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
Les algorithmes
Préemptif : RR
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
Les algorithmes
Listes multiples
Les algorithmes
Listes multiples
Les algorithmes
Évaluation des algorithmes
Sommaire
1 Introduction
1 Gestion de la mémoire
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
Sommaire
1 Introduction
1 Gestion de la mémoire
Producteurs/Consommateurs
Lecteurs/Rédacteurs
Producteurs/Consommateurs
Lecteurs/Rédacteurs
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
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 ?
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
Section critique
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
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 On déplace le problème sur le verrou : le verrou devient la
ressource partagée
2 Si l'ordonnanceur est préemptif le processus peut être
interrompu entre le test du verrou et l'accès à la ressource
L'alternance stricte
L'alternance
Processus 0 Processus 1
Répéter { Répéter {
Tantque (a_qui_le_tour != 0) Tantque (a_qui_le_tour != 1)
; ;
/* section critique */ /* section critique */
a_qui_le_tour = 1 ; a_qui_le_tour = 0 ;
/* section non critique */ /* section non critique */
} }
Solution de Peterson
Combinaison d'alternance strict et de verrouillage
Solution matérielle
Instruction TSL
entrer_sc : quitter_sc :
TSL REGISTRE, LockFlag MOV LockFlag, #0
CMP REGISTRE, #0 RET
JNE enter_region
RET
Inconvénients
Les processus doivent jouer le jeu et coopérer pour que les
techniques fonctionnent
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
Idée
Quand un processus appelle sleep(), il s'endort
Si un autre processus appelle wakeup(), il réveille le
processus endormi
Les sémaphores
Problème des Producteurs / Consommateurs
void consommateur() {
void producteur() {
int item ;
int item ;
while(TRUE) {
while(TRUE) {
if (cpt == 0)
item = produire_objet() ;
sleep() ;
if (cpt == BUFFER_SIZE)
item =
sleep() ;
retirer_objet(buffer) ;
deposer_objet(item, buffer) ;
--cpt ;
++cpt ;
if (cpt == BUFFER_SIZE - 1)
if (cpt == 1)
wakeup(producteur) ;
wakeup(consommateur) ;
consommer_objet(item) ;
}
}
}
}
Les sémaphores
Problème
Conit sur la variable cpt
Illustration
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 !
Solution
Mémoriser le wakeup() → les sémaphores
Les sémaphores
Dénition
Les sémaphores
Implantation possible d'une sémaphore
Les sémaphores
2 opérations atomiques permettent de modier l'état d'une
sémaphore S
down(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)
up(S)
S.valeur = S.valeur - 1
S.valeur = S.valeur + 1
si S.valeur < 0 si S.valeur ≤ 0
ajouter(processus_courant,
processus = retirer(S.Lp)
S.Lp)
wakeup(processus)
sleep()
R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 128
Systèmes d'exploitation
Gestion des processus
Synchronisation des processus
void consommateur() {
void producteur() {
int item ;
int item ;
while(TRUE) {
while(TRUE) {
down(&full) ;
item = produire_objet() ;
down(&mutex) ;
down(&empty) ;
item =
down(&mutex) ;
retirer_objet(buffer) ;
deposer_objet(item, buffer) ;
up(&mutex) ;
up(&mutex) ;
up(&empty) ;
up(&full) ;
consommer_objet(item) ;
}
}
}
}
R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 130
Systèmes d'exploitation
Gestion de la mémoire
Sommaire
1 Introduction
1 Gestion de la mémoire
Gestion des allocations mémoires
Mémoire virtuelle
Sommaire
1 Introduction
1 Gestion de la mémoire
Gestion des allocations mémoires
Mémoire virtuelle
Gestion de la mémoire
Objectifs
Gestion de la mémoire
Diversité de congurations
Monoprogrammation
Gestion de la mémoire
Multiprogrammation
Modélisation et évaluation
Multiprogrammation
Modélisation
100 %
Pourcentage d'utilisation du CPU
90 %
80 %
70 %
60 %
50 %
40 %
30 %
20 % 20% d'attente en E/S
10 % 50% d'attente en E/S
80% d'attente en E/S
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
Fragmentation externe :
un processus attend alors
que des partitions sont
libres
Multiprogrammation
Gestion de la mémoire
Fragmentation interne :
grande partition pour un
petit processus (mauvaise
estimation)
Multiprogrammation
Contrôle de la mémoire
Deux possibilités :
Multiprogrammation
Mécanisme de va-et-vient : le swapping
Multiprogrammation
Partitions variables
Multiprogrammation
Allocation d'espace libre
Multiprogrammation
Représentation de l'espace
Choix de n délicat
Trop petit ⇒ bitmap trop grand
Trop grand ⇒ gaspillage de mémoire
Recherche de k blocs libres : lourd
Multiprogrammation
Représentation de l'espace
Multiprogrammation
Représentation de l'espace
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
Multiprogrammation
Buddy System
Multiprogrammation
Buddy System
Sommaire
1 Introduction
1 Gestion de la mémoire
Gestion des allocations mémoires
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)
Mémoire virtuelle
Pagination
Mémoire virtuelle
Pagination
Mémoire virtuelle
Pagination
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
Mémoire virtuelle
Swap in / swap out
Problème :
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
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
Impossible à implanter :p !
Mémoire virtuelle
Demande de page
4 cas possibles :
1 Non accédée, non modiée (R ,M )
2 Non accédée, modiée (R ,M )
3 Accédée, non modiée (R ,M )
4 Accédée, modiée (R ,M )
On enlève en priorité suivant l'ordre croissant des cas
Mémoire virtuelle
Demande de page
Mémoire virtuelle
Demande de page
Mécanisme de vieillissement