processus

publicité
1
Systèmes multiprocesseurs
Système d’exploitation
Chapitre 8
Andrew Tanenbaum
Rappels sur les systèmes d’exploitation
2
 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
Les processus
3
 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.)
Table des processus
4
 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
Implémentation des processus
5
Différent champs d’une entrée de la table des processus
Les threads (1)
6
 Chaque processus possède un ou plusieurs
threads (fils d’exécution)
 Deux threads d’un même processus partagent un
même espace d’adressage mais des piles et des
compteurs ordinaux distincts.
 Quelque fois appelés processus légers
 Utile même lorsqu’il n’y a qu’un seul processeur

Dans le contexte d’appels systèmes bloquants
Les threads (2)
7
 Items partagés par tous les threads d’un
processus
 Items à chaque thread
Ordonnanceur
8
 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
Les priorités sous Windows
9
32 niveaux de priorité
Les priorités sur Solaris
10
Mémoire virtuelle (1)
11
 Solution au problème des programmes trop gros pour entrer en
mémoire.
 Chaque programme possède son propre espace d’adressage
découpé en petite entités appelées pages.
 Cet espace d’adressage représente une mémoire virtuelle qui
peut être plus grande que la mémoire physique.
 Chaque page est une suite d’adresses 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.
Mémoire virtuelle (2)
12
 Il n’est pas nécessaire d’avoir 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 n’y 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
l’adresse physique de celles-ci.
 Le tout est géré de façon transparente par l’ unité de gestion
de la mémoire (MMU)
La pagination (1)
13
Localisation et fonction du MMU
La pagination (2)
14
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 n’y 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)
La pagination (3)
15
Par exemple,
L’adresse virtuelle 0 est transformée
en adresse physique 8192=2*4096
L’adresse virtuelle 8192=2*4096 est
transformée en adresse physique
24576=6*4096
L’adresse virtuelle 20500=5*4096+20
est transformée en adresse
physique 12308=2*4096+20
La pagination (4)
16
Sur certains systèmes Unix on peut obtenir la taille des pages à
l’aide 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
Systèmes d’exploitation pour
multiprocesseurs(1)
17
Bus
Type 1: Chaque processeur possède son propre SE
SE pour multiprocesseurs(2)
18
Bus
Inconvénients:
 Pas de partage des processus
 Pas de partage des pages
 Comment gérer la cohérence des caches?
SE pour multiprocesseurs(3)
19
Bus
 Type 2: Multiprocesseur maître-esclaves
 Simple et efficace
 Le maître est un goulot d’étranglement
SE pour multiprocesseurs(4)
20
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
SE pour multiprocesseurs(5)
21
Bus
 Multiprocesseurs symétriques
 Mauvaise solution: une seule section critique pour tout le
système d’exploitation
 Solution raisonnable: Plusieurs section critiques.
 Le SE a plusieurs parties indépendantes:



Ordonnanceur
Système de fichiers
Gestion de la mémoire
Synchronisation des MPs (1)
22




 Comment faire en sorte que l’instruction TSL fonctionne?
tsl x

old = x
if (old == 0) x=1;
return old
Synchronisation des MPs (1)
23
Solutions matérielles:
 Verouiller le bus
 Verouiller une adresse mémoire
Synchronisation des MPs (2)
24
 Utilisation d’un verrou pivotant (spinlock)
 Consommation inutile du temps processeur
 Encombrement du bus et de la mémoire
Synchronisation des MPs (3)
25
 Utilisation de verrous multiples en cache
 Chaque processeur possède sa propre copie de variable
mutex à tester
Synchronisation des MPs (4)
26
Boucler ou changer de thread
 Dans certains cas le processeurs est obligé
d’attendre

Processeur inactif qui désire acquérir le verrou de la liste
des processus en attente
 Dans d’autres cas un choix existe
 Boucler gaspille du temps processeur
 Changer de thread aussi
 Choix difficile
Ordonnancement(1)
27
 Sur monoprocesseur
 Quel est le prochain thread à exécuter?
 Sur multiprocesseur

On doit maintenant se poser deux questions plutôt qu’une
seule
 Quel est le prochain thread a exécuter?
 Sur quel processeur?
Ordonnancement(2)
28
 Temps partagé

Utilisation d’une 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.
Ordonnancement(2)
29
 Temps partagé

Un ordonnancement à deux niveaux est souvent utilisé




Un nouveau processus est affecté au processeur ayant la plus petite charge
On tente ensuite d’affecter ce processus au même processeur
D’une 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é à l’expiration de son quantum
Ordonnancement(3)
30
 Espace partagé (pas de multiprogrammation)




On tient compte du lien existant entre certains processus ou threads
On ordonnance plusieurs threads d’un même processus sur plusieurs processeurs
L’algorithme le plus simple consiste à ordonnancer les processus plutôt que les
threads. S’il n’y a pas assez de processeurs disponibles pour tous les threads d’un
processus alors on choisit un autre processus.
Cela revient à partitionner les processeurs. Les partitions évoluent avec l’exécution
des processus.
Ordonnancement(4)
31
Avec multiprogrammation:
 Problème de communication entre deux threads




Deux threads A0 et A1 d’un même processus A veulent communiquer
Les threads A0 et B0 s’exécutent sur le processeur 0
Les threads A1 et B1 s’exécutent sur le processeur 1
Le délai de communication peut être inacceptable
Ordonnancement(5)
32
Une solution: ordonnancement par bande

Les groupes de threads liés sont ordonnancés comme une
unité (bande)
1.

2.
3.
L’ordonnancement sur tous les processeurs doit donc être
synchrone
Tous les membres d’une bande s’exécutent
simultanément sur différents processeurs en temps
partagé.
Tous les membres de la bande commencent et terminent
ensemble leurs intervalles de temps.
Ordonnancement(6)
33
Ordonnancement par bande
34
Multi-ordinateurs
35
 Processeurs fortement couplés qui ne partagent
pas de mémoire commune.
 Les processeurs communiquent par l’envoie de
messages

Transmis sous la forme de paquets
 Également connu sous d’autres noms:
 Cluster
 COW (clusters of workstations)
Différentes topologies
36
(a) étoile
(b) anneau
(c) grille
(d) double tore
(e) cube
(f) hypercube
Commutateur de paquets
37
P.S. Dans la « commutation par circuit », un chemin est
d’abord établi et ensuite la communication est ensuite plus rapide.
Utilisation de cartes d’interface
38
RAM du
module
d’interface
CPU
optionnel
Carte
d’interface
• Les cartes d’interface 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.
Difficultés d’implémentation
39
 Vitesse de transmission

L’exemple précédent nécessite 3 copies de chaque message

5 copies sont nécessaires si la carte d’interface est mappée
dans l’espace noyau
Difficultés d’implémentation
40
 Carte d’ interface dans l’espace utilisateur pour réduire le
temps de communication
 Problèmes lorsqu’il y a plusieurs processus désirant
utiliser la carte

Que se passe-t-il lorsqu’un processus attend un message et qu’il est
remplacé par un autre.

Synchronisation:


mais les mutex sont conçus pour les processus coopératifs
Ne fonctionne bien que lorsqu’il n’y a qu’un seul processus
utilisateur par processeur.
Autre problème
41
 Le SE peux aussi avoir besoin du réseau

Par exemple pour accéder au système de fichier d’un noeud distant
 Il n’est pas souhaitable que le noyau partage la
carte d’interface avec les processus usagers
 Solution: deux cartes d’interface distinctes
Logiciels de communication
au niveau utilisateur
42
 Passage de messages
 2 méthodes:

Appels systèmes permettant d’envoyer et de recevoir
des messages
Envoyer(adresse, message)
 Recevoir(adresse,&message)
 L’adresse doit identifier la machine et le processus


On fait passer la communication distante pour un appel
de procédure standard.

Remote procedure call (RPC)
Appels bloquants et non bloquants
43
(a) Appels systèmes
bloquants
•
Synchrone
(b) Appels systèmes non
bloquants
•
asynchrone
Remote Procedure Call (1)
44
 Les étapes d’un RPC
 Le programme client est lié à une bibiothèque (stub client) qui représente
la procérure du serveur dans l’espace d’adressage du client.
 Idem pour le programme serveur
Remote Procedure Call (2)
45
Limitations
 On ne peut pas passer de pointeurs en paramètre

Cela n’a pas de sens
 Fonctionne mal avec les langages faiblement typés
 Comment déterminer la taille d’un 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
Mémoire partagée distribuée (1)
46
 Plusieurs couches où il est possible d’implémenter la mémoire partagée
a)
Matériel (multiprocesseurs)
b) Système d’exploitation
c)
Niveau utilisateur
Mémoire partagée distribuée (2)
47
(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
Mémoire partagée distribuée (3)
48
Des pages de trop grande taille peuvent conduire au
problème du faux partage
Ordonnancement
49
 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 d’ordonnancement
existent.
Équilibrage de la charge (1)
50
 Algorithme 1: Lorsqu’un 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é
Équilibrage de la charge (2)
51
 Algorithme 2: Lorsqu’un processus se termine, si le processeur n’a
plus de travail alors il en demande à d’autres processeurs.
Téléchargement