• Aucun résultat trouvé

Du séquentiel au parallèle

N/A
N/A
Protected

Academic year: 2022

Partager "Du séquentiel au parallèle"

Copied!
36
0
0

Texte intégral

(1)

Mécanismes d’exécution

Du séquentiel au parallèle

Du séquentiel au parallèle

(2)

Mémoire et Processeur

Mémoire et Processeur

(3)

Modèle d’exécution

Registre d’état

Compteur ordinal + Indicateurs

=

Mot d’état du processeur

(4)

Exemple : le Motorola 68000 Exemple : le Motorola 68000

Registre d ’état Registres

de donnée

Registres d’adresse

L’ensemble des valeurs des registres pour un processus donné

est appelé le contexte du processus.

(5)

Appel et retour de procédure

(6)

Réalisation avec une pile

Réalisation avec une pile

(7)

Réalisation avec une pile

Réalisation avec une pile

(8)

Fonctionnement en co routines

Fonctionnement en co-routines

(9)

Activités synchrones

Activités synchrones

(10)

Activités synchrones

Activités synchrones

(11)

Commutation de contexte Commutation de contexte

• Principe

– Sauvegarde du mot d’état du programme et g p g des registres

– Chargement d’un mot d’état et de registres à Chargement d un mot d état et de registres à partir d’un emplacement spécifié

2 éth d l d

• 2 méthodes pour la sauvegarde

– Emplacements fixes

– Pile

(12)

Interruptions

• En général plusieurs niveaux (priorités)

• Masquables (armement désarmement) Masquables (armement, désarmement)

• Schéma d’un programme d’interruption :

(13)

Déroutements et appels

au superviseur

(14)

Déroutements et appels au superviseur

Nouveaux MEP

(15)

Le Multitâches Le Multitâches

– Système

multiprocesseurs

Processeur. 1 A

Processeur. 2 B Processeur. 3 C

t

A B C

Processeur

– Système

Monoprocesseur, ocesseu

t

p ,

monotâche

S tè

A B C

Processeur

– Système

Monoprocesseur, multi-tâches

q q q t

(16)

Exemples : jeux vidéos p j

(17)

Exemples : jeux vidéos

Exemples : jeux vidéos

(18)

États d’une tâche

États d une tâche

(19)

États d’une tâche

États d une tâche

(20)

Création d’une tâche

Création d une tâche

(21)
(22)

Exemple de programme C avec fork

/* ---

* Schéma de création de processus.

* Création d'un processus fils et test pour exécuter un code différent

* dans le père et dans le fils.

*/

#include <stdio.h> /* Pour perror */

#include <stdio.h> / Pour perror /

#include <stdlib.h> /* Pour exit */

#include <unistd.h> /* Pour fork, getpid, getppid, sleep */

#include <sys/types.h> /* Pour pid_t (fork, getpid, getppid)

*/

#i l d < / it h> /* P it */

#include <sys/wait.h> /* Pour wait */

int main(void) {

pid_t ident;

ident = fork();

if (ident == -1) {

perror("fork");

return EXIT_FAILURE;

} }

/* A partir de cette ligne, il y deux processus */

printf("Cette ligne sera affichée deux fois\n");

if (ident == 0) {

/* Code exécuté uniquement par le fils */

/* Code exécuté uniquement par le fils */

printf("Je suis le fils\n");

} else {

/* Code exécuté uniquement par le pere */

printf("Je suis le père\n");

}

return EXIT_SUCCESS;

}

(23)

Exemple de programme C avec fork

/* ---

* Schéma de création de processus.

* Création d'un processus fils et test pour exécuter un code différent

* d l è t d l fil

p p g

* dans le père et dans le fils.

*/

#include <stdio.h> /* Pour perror */

#include <stdlib.h> /* Pour exit */

#include <unistd.h> /* Pour fork, getpid, getppid, sleep */

#include <sys/types.h> /* Pour pid t (fork, getpid, getppid) */_

#include <sys/wait.h> /* Pour wait */

int main(void) {

pid_t ident;

ident = fork();

if (ident == -1) if (ident == 1) {

perror("fork");

return EXIT_FAILURE;

}

/* A partir de cette ligne, il y deux processus */

printf("Cette ligne sera affichée deux fois\n");

if (ident == 0) {

/* Code exécuté uniquement par le fils */

sleep(2); /* le fils dort pendant 2 secondes */

printf("Je suis le fils\n");

p ( \ );

} else {

/* Code exécuté uniquement par le pere */

printf("Je suis le père\n");

} }

return EXIT_SUCCESS;

}

(24)

Exemple de programme C avec fork p p g

/* ---

* Schéma de création de processus.

* Création d'un processus fils et test pour exécuter un code différent

* d l è t d l fil

* dans le père et dans le fils.

*/

#include <stdio.h> /* Pour perror */

#include <stdlib.h> /* Pour exit */

#include <unistd.h> /* Pour fork, getpid, getppid, sleep */

#include <sys/types.h> /* Pour pid t (fork, getpid, getppid) */_

#include <sys/wait.h> /* Pour wait */

int main(void) {

pid_t ident;

ident = fork();

if (ident == -1) if (ident == 1) {

perror("fork");

return EXIT_FAILURE;

}

/* A partir de cette ligne, il y deux processus */

printf("Cette ligne sera affichée deux fois\n");

if (ident == 0) {

/* Code exécuté uniquement par le fils */

sleep(2); /* le fils dort pendant 2 secondes */

printf("Je suis le fils\n");

p ( \ );

} else {

/* Code exécuté uniquement par le pere */

wait(NULL); /* le père attend la fin de l’un de ses fils */

printf("Je suis le père\n");

printf("Je suis le père\n");

}

return EXIT_SUCCESS;

}

(25)

Gestion du processeur

Gestion du processeur

(26)

Gestion du processeur

Gestion du processeur

(27)

Stratégies d’ordonnancement

(28)

Temps de latence aux interruptions

Temps de latence aux interruptions

(29)

Critères de qualité de

l’ordonnancement

(30)

Tourniquet : ordonnancement circulaire sans priorité

sans priorité

(31)

Tourniquet : choix du quantum

(32)

Priorité pure Priorité pure

• Toutes les tâches ont une priorité, et pour une priorité on a au plus une tâche p p

• La préemption présente peu d’intérêt : la tâche la plus prioritaire s’exécute jusqu’à tâche la plus prioritaire s exécute jusqu à sa fin ou jusqu’au blocage.

• L’ordonnancement est donc lié aux interruptions externes

interruptions externes

(33)

Méthode mixte : tourniquet multi-niveaux

(34)

Algorithmes d’ordonnancement à plusieurs niveaux

Ensemble des processus prêts trop important pour tenir en mémoire centrale

p

Certains sont déchargés sur disque, ce qui rend leur activation plus longue

rend leur activation plus longue

Le processus élu est toujours pris parmi ceux présents en mémoire centrale

présents en mémoire centrale

En parallèle, on utilise un deuxième

l ith d’ d t é l

algorithme d’ordonnancement pour gérer les déplacements des processus prêts entre le

di t l é i t l

disque et la mémoire centrale

(35)

Algorithmes d’ordonnancement

à plusieurs niveaux

(36)

Autre méthode d’ordonnancement

Autre méthode d ordonnancement

Références

Documents relatifs

• on remarque enfin que des actions qui pourraient trouver leur place dans une démarche ou un parcours d’ensemble d’éducation à la santé et à la citoyenneté (travail autour de

Mais cela ne vaut pas si les trois points A, B, C forment un triangle obtus en A ou B ; il faut alors poursuivre le rétrécissement du cercle avec comme points fixes les extrémités

Convergence plus rapide (ici arrêt parce que tous les individus sont bien classés sur le reste de la base de travail). Taille de la base finale n*

On retrouve la sainte alliance entre la mémoire et l’identité dans la continuité qui s’établit entre la nouveau-née et la vieille dame, lorsqu’elle évoque le pauvre ma-

A la différence de certains parents exilés qui souffrent du « trop du retour du refoulé et le creux du sentiment de soi perdu » - parce qu’ils ont perdu des objets réels connus

Toutes les caractéristiques de la sonate italienne de la première moitié du xvii e siècle sont en effet présentes : succession de sections contrastées avec alternance de tempos

Toutefois il peut arriver qu’une propriété de E(a) soit presque sûre pour chaque valeur donnée de a, mais qu’il existe presque sûrement des valeurs de a

 Mémoire de masse (disque, disquette, bande, CD-Rom,…) : mémoires magnétiques ou optiques pour lesquelles le temps d'accès est beaucoup plus long que pour la