1 Systmes multiprocesseurs Systme dexploitation Chapitre 8 Andrew

  • Slides: 51
Download presentation
1 Systèmes multiprocesseurs Système d’exploitation Chapitre 8 Andrew Tanenbaum

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

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

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

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

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

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 à

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

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 sous Windows 9 32 niveaux de priorité

Les priorités sur Solaris 10

Les priorités sur Solaris 10

Mémoire virtuelle (1) 11 Solution au problème des programmes trop gros pour entrer en

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 à 64 Ko) 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

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 (1) 13 Localisation et fonction du MMU

La pagination (2) 14 La relation entre les adresses virtuelles et physiques est indiquée

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 16 bits (64 Ko) mais il n’y a que 32 Ko de mémoire physique. La mémoire virtuelle est divisée en pages de 4 K 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

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

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 4 Ko Sur Mac OS X la taille des pages est de 4 Ko Sur Solaris la taille des pages est 8 K

Systèmes d’exploitation pour multiprocesseurs(1) 17 Bus Type 1: Chaque processeur possède son propre SE

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

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

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

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

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

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

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

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

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

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

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

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

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

Ordonnancement(4) 31 Avec multiprogrammation: Problème de communication entre deux threads Deux threads A 0 et A 1 d’un même processus A veulent communiquer Les threads A 0 et B 0 s’exécutent sur le processeur 0 Les threads A 1 et B 1 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

Ordonnancement(5) 32 Une solution: ordonnancement par bande Les groupes de threads liés sont ordonnancés comme 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

Ordonnancement(6) 33 Ordonnancement par bande

34

34

Multi-ordinateurs 35 Processeurs fortement couplés qui ne partagent pas de mémoire commune. Les processeurs

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

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

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 •

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

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

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

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

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

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é

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 passer de pointeurs en paramètre

Remote Procedure Call (2) 45 Limitations On ne peut 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

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

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

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

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

É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

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