Vous êtes sur la page 1sur 189

Systèmes d'exploitation

Systèmes d'exploitation (Operating Systems)

Remi Bonidal (remi.bonidal@loria.fr)

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é → meilleure maîtrise

Tout programme est concerné → 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 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

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 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 !

R. Bonidal (FC 2010) 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 7 : Port parallèle (LPT1)


IRQ 1 : Clavier IRQ 8 : Horloge temps réel
IRQ 2 : N/A (cascade du second IRQ 9 : N/A (PCI)
contrôleur) IRQ 10 : N/A
IRQ 3 : Port série IRQ 11 : N/A (USB)
(COM2/COM4)
IRQ 12 : N/A (PS/2)
IRQ 4 : Port série
(COM1/COM3) IRQ 13 : Coprocesseur math.
IRQ 5 : LPT2 (carte de son) IRQ 14 : Disque dur primaire
IRQ 6 : Lecteur de disquettes IRQ 15 : Disque dur secondaire

R. Bonidal (FC 2010) 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
3
e édition, février 2008, 1104 pages, Prentice Hall

Principes des systèmes d'exploitation ,

A. Silberschatz, P.B. Galvin, G. Gagne


6
e édition, mars 2008, 872 pages, Vuibert

Le noyau Linux , Daniel P. Bovet, Marco Cesati


3
e édition, août 2006, O'Reilly

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 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

R. Bonidal (FC 2010) 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 API (Application Program


Interface)
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 read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 2 62


Systèmes d'exploitation
Conception des sytèmes d'exploitation
Structures de SE

Exemple de l'appel read(fd, &buffer, nbytes) ;

R. Bonidal (FC 2010) 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 ⇒ =


6 états

R. Bonidal (FC 2010) Systèmes d'exploitation  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
Exécutions Performances demandées
Bas niveau Très fréquentes Excellentes
Haut niveau Occasionnelles Bonnes

R. Bonidal (FC 2010) 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 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

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 :
0+(16)+(16+2)+(16+2+8)
TAM = 4 = 15
Cas SJF :
0+(2)+(2+8)+(2+8+12)
TAM = 4 = 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 À tout moment, au plus un processus en SC
2 Aucune hypothèse sur la vitesse et le nombre de CPU
3 Aucun processus s'exécutant en dehors d'un SC ne doit
bloquer les autres
4 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 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

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 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 */
} }

É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() Solution de Peterson


interesse[0] = TRUE
tour = 0 int tour ;
int interesse[2] ;
Processus 1 appelle entrer_SC()
interesse[1] = TRUE void entrer_SC(int proc) {
tour = 1 int autre = 1 - proc ;
Attente sur le while que processus interesse[proc] = TRUE ;
0 appelle quitter_SC() tour = proc ;
while (tour == proc &&
Processus 0 et 1 appellent intresse[autre] ==
entrer_SC() TRUE) ;
interesse[0]=interesse[1] = }
TRUE
tour = 0 puis tour = 1 void quitter_SC(int proc) {
Donc processus 0 en SC et interesse[proc] = FALSE ;
processus 1 bloque sur le while }
R. Bonidal (FC 2010) 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 : quitter_sc :
TSL REGISTRE, LockFlag MOV LockFlag, #0
CMP REGISTRE, #0 RET
JNE enter_region
RET

R. Bonidal (FC 2010) 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
Si un autre processus appelle wakeup(), il réveille 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 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) ;
}
}
}
}

R. Bonidal (FC 2010) 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
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

R. Bonidal (FC 2010) 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 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

Les sémaphores  Utilisation

Une solution au problème des producteurs / consommateurs

Elle utilise 3 sémaphores


1 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
2 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
3 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 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

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

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

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


taille 2 )
n

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 La MMU lève une exception : interruption processeur, kernel
trap
2 Le processus est endormi
3 Le pager est activé et charge, s'il n'y a pas d'erreur, la page
requise dans un cadre de page
4 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 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

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 ⇒ grand nombre = récemment accédée

R. Bonidal (FC 2010) Systèmes d'exploitation  Cours 6 165

Vous aimerez peut-être aussi