Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

50
Systèmes multiprocesseurs Système d’exploitation Chapitre 8 Andrew Tanenbaum 1

Transcript of Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Page 1: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Systèmes multiprocesseurs

Système d’exploitation Chapitre 8

Andrew Tanenbaum

1

Page 2: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Rappels sur les systèmes d’exploitation

• Agit comme interface (Machine virtuelle)

• Gère les ressources– Gestion des processus– Gestion de la mémoire– Gestion des fichiers– Gestion des E/S

2

Page 3: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Les 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 (fichier ouverts, priorité, etc.)

3

Page 4: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Table 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

4

Page 5: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

5

Implémentation des processus

Différent champs d’une entrée de la table des processus

Page 6: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

6

Les threads (1)

• Chaque processus possède un ou plusieurs threads (fils d’exécution)

• Deux threads d’un même processus partage 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

Page 7: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

7

Les threads (2)

• Items partagés par tous les threads d’un processus• Items à chaque thread

Page 8: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnanceur

• 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

8

Page 9: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

9

Les priorités sous Windows

32 niveaux de priorité

Page 10: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

10

Les priorités sur Solaris

Page 11: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Mémoire virtuelle (1)

• 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.11

Page 12: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Mémoire virtuelle (2)

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

12

Page 13: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

La pagination (1)

Localisation et fonction du MMU13

Page 14: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

La pagination (2)

La relation entre les adresses virtuelles et physiques est indiquée dans la table des pages

Dans l’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)

14

Page 15: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

La pagination (3)

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

15

Page 16: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

La pagination (4)

Sur les systèmes Unix on peut obtenir la taille des pages à l’aide de la commande: pagesize

Sur Solaris la taille des page est de 8Ko

Sur Mac OS X la taille des pages est de 4Ko

16

Page 17: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Systèmes d’exploitation pour multiprocesseurs(1)

Type 1: Chaque processeur possède son propre SE

Bus

17

Page 18: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

SE pour multiprocesseurs(2)

Inconvénients:

• Pas de partage des processus

• Pas de partage des pages• Comment gérer la cohérence des caches?

Bus

18

Page 19: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

SE pour multiprocesseurs(3)

• Type 2: Multiprocesseur maître-esclaves• Simple et efficace• Le maître est un goulot d’étranglement

Bus

19

Page 20: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

SE pour multiprocesseurs(4)

• 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

Bus

20

Page 21: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

SE pour multiprocesseurs(5)

• 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

Bus

21

Page 22: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Synchronisation des MPs (1)

• Comment faire en sorte que l’instruction TSL fonctionne?

22

Page 23: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Synchronisation des MPs (1)

Solutions matérielles:

• Verouiller le bus

• Verouiller une adresse mémoire (DPRAM)

23

Page 24: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Synchronisation des MPs (2)

• Utilisation d’un verrou pivotant (spinlock)– Consommation inutile du temps processeur

– Encombrement du bus et de la mémoire

24

Page 25: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Synchronisation des MPs (3)

• Utilisation de verrous multiples en cache

• Chaque processeur possède sa propre copie de variable mutex à tester

25

Page 26: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Synchronisation des MPs (4)

Boucler ou changer de thread

• Dans certains cas le processeurs est obligé d’attendre– Processeur inactif qui désire acquérir le verrou

des processus en attente

• Dans d’autres cas un choix existe– Boucler gaspille du temps processeur– Changer de thread aussi– Choix difficile

26

Page 27: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(1)

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

27

Page 28: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(2)

• Temps partagé– Utilisation d’une seule structure de données (niveaux de priorités)

– 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

28

Page 29: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(3)

• Espace partagé – 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 (pas de multiprogrammation).

29

Page 30: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(4)

• 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 est inacceptable

30

Page 31: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(5)

• Solution: ordonnancement par bande1. Les groupes de threads liés sont ordonnancés comme une unité

(bande)

2. Tous les membres d’une bande s’exécutent simultanément sur différents processeurs en temps partagé.

3. Tous les membres de la bande commencent et terminent ensemble leurs intervalles de temps.

31

Page 32: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement(6)

Ordonnancement par bande

32

Page 33: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

33

Page 34: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Multi-ordinateurs

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

34

Page 35: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Différentes topologies

(a) étoile(b) anneau(c) grille

(d) double tore(e) cube(f) hypercube

35

Page 36: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Commutateur de paquets

36

P.S. Dans la « commutation par circuit », un chemin est d’abord établi et ensuite la communication est ensuite plus rapide.

Page 37: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Utilisation de cartes 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.

Carte d’interface

CPU optionnel

RAM du module

d’interface

37

Page 38: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Difficultés d’implémentation

• Vitesse de transmission– L’exemple précédent nécessite 3 copies de chaque

message– 5 copies sont nécessaire si la carte d’interface est

mappé dans l’espace noyau

38

Page 39: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Difficultés d’implémentation

• Carte d’interface dans l’espace utilisateur pour réduite 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.

39

Page 40: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Autre problème

• 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

40

Page 41: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Logiciels de communication au niveau utilisateur

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

41

Page 42: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Appels bloquants et non bloquants

(a) Appels systèmes bloquants

• Synchrone

(b) Appels systèmes non bloquants

• asynchrone

42

Page 43: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Remote Procedure Call (1)

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

Page 44: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Remote Procedure Call (2)

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

44

Page 45: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Mémoire partagée distribuée (1)

• Plusieurs couches où il est possible d’implémenter la mémoire partagéea) Matériel (multiprocesseurs)b) Système d’exploitationc) Niveau utilisateur

45

Page 46: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Mémoire partagée distribuée (2)

(a) Pages distribuées sur 4 machines

(b) Le CPU 0 lit la page 10La page est transféré

(c) La page 10 est en lecture seule et on utilise la duplication de pages

46

Page 47: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Mémoire partagée distribuée (3)

Des pages de trop grande taille peuvent conduire au problème du faux partage

47

Page 48: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Ordonnancement

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

48

Page 49: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Équilibrage de la charge (1)

• 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é49

Page 50: Systèmes multiprocesseurs Système dexploitation Chapitre 8 Andrew Tanenbaum 1.

Équilibrage de la charge (2)

• Algorithme 2: Lorsqu’un processus se termine, si le processeur n’a plus de travail alors il en demande à d’autres processeurs.

50