Title: Syst
1Systèmes multiprocesseursSystème dexploitation
Chapitre 8Andrew Tanenbaum
2Rappels sur les systèmes dexploitation
- Agit comme interface (Machine virtuelle)
- Gère les ressources
- Gestion des processus et des threads
- Gestion de la mémoire
- Gestion des fichiers
- Gestion des E/S
3Les processus
- Un processus est une structure de donnée
représentant un programme en cours d'exécution. - Un processus contient toute l'information qu'il
est nécessaire de conserver pour poursuivre
l'exécution d'un programme interrompu. - En particulier, chaque processus possède
- Un espace d'adressage (programme, données, pile)
- Des registres (incluant PC, SP, PSW)
- D'autres informations (fichiers ouverts,
priorité, etc.)
4Table des processus
- La table des processus est un tableau de
structures contenant une entrée pour chaque
processus actifs dans le système. - Périodiquement, le système d'exploitation décide
d'interrompre un processus pour en exécuter un
autre. Il doit alors - suspendre l'exécution d'un processus A
- sauver l'information de A dans la table des
processus - choisir un nouveau processus B
- recupérer l'information de B
- démarrer l'exécution de B
5Implémentation des processus
- Différent champs dune entrée de la table des
processus
6Les threads (1)
- Chaque processus possède un ou plusieurs threads
(fils dexécution) - Deux threads dun même processus partagent un
même espace dadressage mais des piles et des
compteurs ordinaux distincts. - Quelque fois appelés processus légers
- Utile même lorsquil ny a quun seul processeur
- Dans le contexte dappels systèmes bloquants
7Les threads (2)
- Items partagés par tous les threads dun
processus - Items à chaque thread
8Ordonnanceur
- Partie du SE qui détermine si un processus doit
poursuivre son exécution ou être temporairement
arrêté pour être remplacé par un autre - Doit choisir le prochain processus à être exécuté
- Priorités
9Les priorités sous Windows
32 niveaux de priorité
10Les priorités sur Solaris
11Mémoire virtuelle (1)
- Solution au problème des programmes trop gros
pour entrer en mémoire. - Chaque programme possède son propre espace
dadressage découpé en petite entités appelées
pages. - Cet espace dadressage représente une mémoire
virtuelle qui peut être plus grande que la
mémoire physique. - Chaque page est une suite dadresses contiguëes
de la mémoire virtuelle. - La taille des page est fixe (typiquement entre
512 octets à 64Ko) - Une adresse virtuelle est une adresse de la
mémoire virtuelle.
12Mémoire virtuelle (2)
- Il nest pas nécessaire davoir toutes les pages
en mémoire physique pour exécuter le programme. - Chaque page est indivisible
- Elle est entièrement en mémoire physique ou elle
ny est pas du tout. - Les pages qui ne sont pas en mémoire sont placées
sur le disque. - Une table indique quelles sont les pages en
mémoire ainsi que ladresse physique de
celles-ci. - Le tout est géré de façon transparente par l
unité de gestion de la mémoire (MMU)
13La pagination (1)
- Localisation et fonction du MMU
14La pagination (2)
- La relation entre les adresses virtuelles et
physiques est indiquée dans la table des pages - Par exemple, un ordinateur peut produire des
adresses sur 16bits (64 Ko) mais il ny a que 32
Ko de mémoire physique. - La mémoire virtuelle est divisée en pages de 4K
- La mémoire physique est divisée en cadre de page
(page frame)
15La pagination (3)
- Par exemple,
- Ladresse virtuelle 0 est transformée en adresse
physique 819224096 - Ladresse virtuelle 819224096 est transformée
en adresse physique 2457664096 - Ladresse virtuelle 205005409620 est
transformée en adresse physique 123082409620
16La pagination (4)
- Sur certains systèmes Unix on peut obtenir la
taille des pages à laide de la commande
pagesize - Sur linux getconf PAGESIZE
- Sur dim-linuxmpi la taille des page est de 4Ko
- Sur Mac OS X la taille des pages est de 4Ko
- Sur Solaris la taille des pages est 8K
17Systèmes dexploitation pour multiprocesseurs(1)
Bus
- Type 1 Chaque processeur possède son propre SE
18SE pour multiprocesseurs(2)
Bus
- Inconvénients
- Pas de partage des processus
- Pas de partage des pages
- Comment gérer la cohérence des caches?
19SE pour multiprocesseurs(3)
Bus
- Type 2 Multiprocesseur maître-esclaves
- Simple et efficace
- Le maître est un goulot détranglement
20SE pour multiprocesseurs(4)
Bus
- Type 3 Multiprocesseurs symétriques
- Tous les processeurs sont égaux
- Une seule copie du SE
- Problème Il faut éviter les conflits.
- Deux processeurs voulant utiliser la même page
mémoire - Deux processeurs voulant éxécuter le même
processus
21SE pour multiprocesseurs(5)
Bus
- Multiprocesseurs symétriques
- Mauvaise solution une seule section critique
pour tout le système dexploitation - Solution raisonnable Plusieurs section
critiques. - Le SE a plusieurs parties indépendantes
- Ordonnanceur
- Système de fichiers
- Gestion de la mémoire
22Synchronisation des MPs (1)
- Comment faire en sorte que linstruction TSL
fonctionne?
old x if (old 0) x1 return old
?
tsl x
23Synchronisation des MPs (1)
- Solutions matérielles
- Verouiller le bus
- Verouiller une adresse mémoire
24Synchronisation des MPs (2)
- Utilisation dun verrou pivotant (spinlock)
- Consommation inutile du temps processeur
- Encombrement du bus et de la mémoire
25Synchronisation des MPs (3)
- Utilisation de verrous multiples en cache
- Chaque processeur possède sa propre copie de
variable mutex à tester
26Synchronisation des MPs (4)
- Boucler ou changer de thread
- Dans certains cas le processeurs est obligé
dattendre - Processeur inactif qui désire acquérir le verrou
de la liste des processus en attente - Dans dautres cas un choix existe
- Boucler gaspille du temps processeur
- Changer de thread aussi
- Choix difficile
27Ordonnancement(1)
- Sur monoprocesseur
- Quel est le prochain thread à exécuter?
- Sur multiprocesseur
- On doit maintenant se poser deux questions plutôt
quune seule - Quel est le prochain thread a exécuter?
- Sur quel processeur?
28Ordonnancement(2)
- Temps partagé
- Utilisation dune seule structure de données
(niveaux de priorités) - Équilibre automatiquement la charge des
processeurs - Une structure de données unique limite le nombre
de processeurs - Inconvénient de la multiprogrammation les
changements de contextes.
29Ordonnancement(2)
- Temps partagé
- Un ordonnancement à deux niveaux est souvent
utilisé - Un nouveau processus est affecté au processeur
ayant la plus petite charge - On tente ensuite daffecter ce processus au même
processeur - Dune certaine façon, chaque processeur possède
sa propre collection de processus - Un processus qui détient un verrou pivotant peut
difficilement être arrêté à lexpiration de son
quantum
30Ordonnancement(3)
- Espace partagé (pas de multiprogrammation)
- On tient compte du lien existant entre certains
processus ou threads - On ordonnance plusieurs threads dun même
processus sur plusieurs processeurs - Lalgorithme le plus simple consiste à
ordonnancer les processus plutôt que les threads.
Sil ny a pas assez de processeurs disponibles
pour tous les threads dun processus alors on
choisit un autre processus. - Cela revient à partitionner les processeurs. Les
partitions évoluent avec lexécution des
processus.
31Ordonnancement(4)
- Avec multiprogrammation
- Problème de communication entre deux threads
- Deux threads A0 et A1 dun même processus A
veulent communiquer - Les threads A0 et B0 sexécutent sur le
processeur 0 - Les threads A1 et B1 sexécutent sur le
processeur 1 - Le délai de communication peut être inacceptable
32Ordonnancement(5)
- Une solution ordonnancement par bande
- Les groupes de threads liés sont ordonnancés
comme une unité (bande) - Lordonnancement sur tous les processeurs doit
donc être synchrone - Tous les membres dune bande sexécutent
simultanément sur différents processeurs en temps
partagé. - Tous les membres de la bande commencent et
terminent ensemble leurs intervalles de temps.
33Ordonnancement(6)
34(No Transcript)
35Multi-ordinateurs
- Processeurs fortement couplés qui ne partagent
pas de mémoire commune. - Les processeurs communiquent par lenvoie de
messages - Transmis sous la forme de paquets
- Également connu sous dautres noms
- Cluster
- COW (clusters of workstations)
36Différentes topologies
- (a) étoile
- (b) anneau
- (c) grille
- (d) double tore
- (e) cube
- (f) hypercube
37Commutateur de paquets
P.S. Dans la commutation par circuit , un
chemin est dabord établi et ensuite la
communication est ensuite plus rapide.
38Utilisation de cartes dinterface
CPU optionnel
Carte dinterface
RAM du module dinterface
- Les cartes dinterface possède une mémoire afin
de garantir un débit constant dans le réseau. -
- Certaines possède même un processeur complet
gérant la transmission, le multicast, etc.
39Difficultés dimplémentation
- Vitesse de transmission
- Lexemple précédent nécessite 3 copies de chaque
message - 5 copies sont nécessaires si la carte dinterface
est mappée dans lespace noyau
40Difficultés dimplémentation
- Carte d interface dans lespace utilisateur pour
réduire le temps de communication - Problèmes lorsquil y a plusieurs processus
désirant utiliser la carte - Que se passe-t-il lorsquun processus attend un
message et quil est remplacé par un autre. - Synchronisation
- mais les mutex sont conçus pour les processus
coopératifs - Ne fonctionne bien que lorsquil ny a quun seul
processus utilisateur par processeur.
41Autre problème
- Le SE peux aussi avoir besoin du réseau
- Par exemple pour accéder au système de fichier
dun noeud distant - Il nest pas souhaitable que le noyau partage la
carte dinterface avec les processus usagers - Solution deux cartes dinterface distinctes
42Logiciels de communication au niveau utilisateur
- Passage de messages
- 2 méthodes
- Appels systèmes permettant denvoyer et de
recevoir des messages - Envoyer(adresse, message)
- Recevoir(adresse,message)
- Ladresse doit identifier la machine et le
processus - On fait passer la communication distante pour un
appel de procédure standard. - Remote procedure call (RPC)
43Appels bloquants et non bloquants
- Appels systèmes bloquants
- Synchrone
- Appels systèmes non bloquants
- asynchrone
44Remote Procedure Call (1)
- Les étapes dun RPC
- Le programme client est lié à une bibiothèque
(stub client) qui représente la procérure du
serveur dans lespace dadressage du client. - Idem pour le programme serveur
45Remote Procedure Call (2)
- Limitations
- On ne peut pas passer de pointeurs en paramètre
- Cela na pas de sens
- Fonctionne mal avec les langages faiblement typés
- Comment déterminer la taille dun tableau en C?
- Le type des paramètre peut être difficile à
déterminer - Ex. Printf
- On ne peut pas utiliser de variable globale
- Conclusion On doit prendre des précautions. Par
exemple, on restreint le type des paramètres
46Mémoire partagée distribuée (1)
- Plusieurs couches où il est possible
dimplémenter la mémoire partagée - Matériel (multiprocesseurs)
- Système dexploitation
- Niveau utilisateur
47Mémoire partagée distribuée (2)
- (a) Pages distribuées sur 4 machines
- (b) Le CPU 0 lit la page 10
- La page est transféré
- (c) La page 10 est en lecture seule et on utilise
la duplication de pages
48Mémoire partagée distribuée (3)
- Des pages de trop grande taille peuvent conduire
au problème du faux partage
49Ordonnancement
- Sur un multi-ordinateur chaque ordinateur
possède son propre SE ainsi que sa propre table
des processus - Léquilibrage de la charge est plus compliqué que
pour les multiprocesseurs - Plusieurs algorithme dordonnancement existent.
50Équilibrage de la charge (1)
- Algorithme 1 Lorsquun processus est créé, si la
charge du processeur est trop importante il
recherche un autre processeur où assigner le
nouveau processus - Ajoute une charge de travail à un processeur déjà
très occupé
51Équilibrage de la charge (2)
- Algorithme 2 Lorsquun processus se termine, si
le processeur na plus de travail alors il en
demande à dautres processeurs.