Upload
vankiet
View
225
Download
0
Embed Size (px)
Citation preview
Les ProcessusLes Threads
Ordonnancement
Processsus, Thread et OrdonnancementIFIPS – Formation Continue
Joel Falcou - [email protected]
Bat. 490 - Bureau 104
2008-2009
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Définitions
Un programme
Code décrivant une tacheLangage machine dans un fichier
Un processeurAutomate électronique de traitementChange son état en fonction des instructions
Un processusUn programme exécuté par un processeur
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Définitions
Un programme
Code décrivant une tacheLangage machine dans un fichier
Un processeurAutomate électronique de traitementChange son état en fonction des instructions
Un processusUn programme exécuté par un processeur
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Définitions
Un programme
Code décrivant une tacheLangage machine dans un fichier
Un processeurAutomate électronique de traitementChange son état en fonction des instructions
Un processusUn programme exécuté par un processeur
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Propriétés des processus
ObjectifsSéparer les différentes tâches du systèmeGestion des fichiers/applicationsPermettre le multitache
ConséquencesChaque processus doit respecter les autres
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Propriétés des processus
ObjectifsSéparer les différentes tâches du systèmeGestion des fichiers/applicationsPermettre le multitache
ConséquencesChaque processus doit respecter les autres
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Structure d’un processus
EnvironnementVariables héritéesForme générale : PATH=/usr/binen C : getenv() et setenv()
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Structure d’un processus
Le TasDonnées globales statiquesVariables allouées dynamiquementPartagées par tout les threads duprocessus
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Structure d’un processus
La PileVariables temporaires duprogrammeChangements de contexteEn général limitée
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Structure d’un processus
Le CodeRecopie du programme machineFixe et protégé en mémoireSegment exécutable du processus
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Cycle de vie d’un processus
Démarrage
Chargement du codeÉdition des liens dynamiquesRecopie de l’environnementInitialisation du tasInitialisation du pointeur de pileLancement premiere instruction
Comment ?Unix : fork(),exec()Windows : createprocess()
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Cycle de vie d’un processus
Démarrage
Chargement du codeÉdition des liens dynamiquesRecopie de l’environnementInitialisation du tasInitialisation du pointeur de pileLancement premiere instruction
Comment ?Unix : fork(),exec()Windows : createprocess()
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Cycle de vie d’un processus
En cours d’exécutionExecution instruction par instructionMise en attente si :
Demande d’E/S a satisfaireInterruptions matérielles
Allocation des ressources sur demande
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Cycle de vie d’un processus
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Création d’un processus#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){
pid_t pere,fils;int ret,x=1;printf("Starting ...\n");
fils = fork();if (fils==-1) fprintf(stderr, "fork failed");else{
if (fils==0) /* c’est le fils */{
printf("%d: Je suis le fils de %d \n", getpid(), getppid());sleep(20); x=2;printf("%d: Je sort \n",getpid());exit(20);
}else{
printf("%d: Je suis le pére de %d \n", getpid(), fils);waitpid(fils, &ret, 0);printf("%d: Le processus fils %d est sorti (code %d)\n", getpid(), getppid(),ret);
}}
}
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Recouvrement de processus
En cours d’exécutionRemplacement du code par un nouveauRemise a zéro de la pileRemise a zéro du tasCopie des descripteurs noyauxHéritage de l’environnement
On ne revient pas d’un recouvrement
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsGestion des processusMise en œuvre
Recouvrement de processus#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){
char *argu[3];pid_t pere,fils;int vingt,x=1;
fils = fork();if (fils==-1) fprintf(stderr, "fork failed");else{
if (fils==0) /* c’est le fils */{
printf("%d: Je suis le fils de %d \n", getpid(), getppid());argu[0] = "";argu[1] = "-a";argu[2] = NULL;execv("/bin/uname", argu);printf("invisible !");
}else{
printf("%d: Je suis le pére de %d \n", getpid(), fils);waitpid(fils, &vingt, 0);printf("%d: Le processus fils %d est sorti \n", getpid(), getppid());
}}
}J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Thread vs Processus
DéfinitionUn thread est l’unité d’ordonnancement
Multi-thread = actions simultanées sur des ressources partageables
Gestion 10 à 100 fois plus rapide que pour les processus
Implantés en mode utilisateur, noyau ou hybride
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Thread vs Processus
DéfinitionUn thread est l’unité d’ordonnancement
Multi-thread = actions simultanées sur des ressources partageables
Gestion 10 à 100 fois plus rapide que pour les processus
Implantés en mode utilisateur, noyau ou hybride
Gestion en mode User SpaceRapidePrécaution vis à vis des appels systèmesNotion de Fibre
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Thread vs Processus
DéfinitionUn thread est l’unité d’ordonnancement
Multi-thread = actions simultanées sur des ressources partageables
Gestion 10 à 100 fois plus rapide que pour les processus
Implantés en mode utilisateur, noyau ou hybride
Gestion en mode Kernel SpaceUne fonction de thread = 1 appel systèmeBon couplage avec l’ordonnanceurGestion efficace des appels systèmes internes
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Relation Processus-Threads
DéfinitionUn processus peut contenir plusieurs Threads simultanément
Ressources spécifiquesles Pilesle contexte d’appel
Ressources partagéesle Tasles descripteurs de fichiersle processeur (hyper-threading)
Nécessité de gérer ces partages
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Relation Processus-Threads
DéfinitionUn processus peut contenir plusieurs Threads simultanément
Ressources spécifiquesles Pilesle contexte d’appel
Ressources partagéesle Tasles descripteurs de fichiersle processeur (hyper-threading)
Nécessité de gérer ces partages
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Relation Processus-Threads
DéfinitionUn processus peut contenir plusieurs Threads simultanément
Ressources spécifiquesles Pilesle contexte d’appel
Ressources partagéesle Tasles descripteurs de fichiersle processeur (hyper-threading)
Nécessité de gérer ces partages
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
API et standards
Plusieurs variantes ...Posix le plus standardWinThreadJava.Thread géré par la machine virtuelle
Pièges à éviterVariables globalesDebordement de pilesGestion des signaux
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
API et standards
Plusieurs variantes ...Posix le plus standardWinThreadJava.Thread géré par la machine virtuelle
Pièges à éviterVariables globalesDebordement de pilesGestion des signaux
J. Falcou Système
Les ProcessusLes Threads
Ordonnancement
DéfinitionsMise en œuvre
Threads POSIX par l’exemple#include <stdio.h>#include <stdlib.h>#include <pthread.h>
void *my_process (void * arg){
int i;
for (i = 0 ; i < 5 ; i++) {printf ("Thread %s: %d\n", (char*)arg, i);sleep (1);
}pthread_exit (0);
}
int main(){
pthread_t th1, th2;void *ret;
pthread_create (&th1, NULL, my_process, "1");pthread_create (&th2, NULL, my_thread_process, "2");
pthread_join (th1, &ret);pthread_join (th2, &ret);
}
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Gestion réaliste des processus
ProblématiqueUn processus = ressourcesPlusieurs processus ? ? ?Il faut partager les ressources
L’ordonnancementSélectionner un processus parmi les activablesQuelles politiques ?Quelle représentation ?
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Gestion réaliste des processus
ProblématiqueUn processus = ressourcesPlusieurs processus ? ? ?Il faut partager les ressources
L’ordonnancementSélectionner un processus parmi les activablesQuelles politiques ?Quelle représentation ?
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Comment ordonnancer ?
Propriétés d’un ordonnancement
ÉquitéEfficacitéRéactivité
Solutions modernesOrdonancement préemptifAllocation de quantum de temps
Mais pas universelles :(Quantum faible = meilleur réactivitéQuantum fort = meilleur efficacité
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Comment ordonnancer ?
Propriétés d’un ordonnancement
ÉquitéEfficacitéRéactivité
Solutions modernesOrdonancement préemptifAllocation de quantum de temps
Mais pas universelles :(Quantum faible = meilleur réactivitéQuantum fort = meilleur efficacité
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Comment ordonnancer ?
Propriétés d’un ordonnancement
ÉquitéEfficacitéRéactivité
Solutions modernesOrdonancement préemptifAllocation de quantum de temps
Mais pas universelles :(Quantum faible = meilleur réactivitéQuantum fort = meilleur efficacité
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Quelques Ordonnancements
FIFO (ou round-robinPremier arrivé, Premier serviTemps de réponse ∝ nombre de processus actifsCertains processus doivent être activés avant les autres
Priority QueuesOrdonnancement en fonction de la priorité des processusProcessus interactif = Priorité hauteRisque de famine pour les processus à faible priorité
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Quelques Ordonnancements
FIFO (ou round-robinPremier arrivé, Premier serviTemps de réponse ∝ nombre de processus actifsCertains processus doivent être activés avant les autres
Priority QueuesOrdonnancement en fonction de la priorité des processusProcessus interactif = Priorité hauteRisque de famine pour les processus à faible priorité
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Exemples
Données du problèmeCinq processus A,B,C,D,E exécutés dans cet ordreAucun appel à des I/ODurées des processus :
Proc. A B C D EDurée 10s 6s 2s 4s 8sPrio 3 5 2 1 4
Stratégies
Ordonnancement préemptif à quantum de 2sPrioritéRound-Robin
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Exemples
Données du problèmeCinq processus A,B,C,D,E exécutés dans cet ordreAucun appel à des I/ODurées des processus :
Proc. A B C D EDurée 10s 6s 2s 4s 8sPrio 3 5 2 1 4
Stratégies
Ordonnancement préemptif à quantum de 2sPrioritéRound-Robin
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Exemples
A (3, 10s)
B (5, 6s)
C (2, 2s)
D (1, 4s)
E (4, 8s)0 5 10 15 20 25 30
J. Falcou Système
Les ProcessusLes Threads
OrdonnancementPolitiques
Exemples
A (10s)
B (6s)
C (2s)
D (4s)
E (8s)0 5 10 15 20 25 30
J. Falcou Système