francis rogardinitiation se processus et threads1 systeme d’exploitation gestion des processus et...
TRANSCRIPT
Francis ROGARD Initiation SE processus et threads 1
SYSTEME D’EXPLOITATION
Gestion des processus et threads
Ordonnancement
Francis ROGARD Initiation SE processus et threads 2
Une définition
• Un processus est l’image dynamique de l’exécution en mémoire centrale d’un programme exécutable dans une zone protégée.
• A chaque processus est associé le contexte :
CO, les registres, pointeur de pile
et une zone mémoire (code, pile, données)
Francis ROGARD Initiation SE processus et threads 3
Les états d’un processus
Prêt
Bloqué
En exécution
Attente processeur
Attente ressources
création
Fin
Élection
Blocage
Déblocage
Préemption
Francis ROGARD Initiation SE processus et threads 4
Le diagramme des états
actif utilisateur
actif noyau zombienouveau prêt
Endormi ou suspendu
Francis ROGARD Initiation SE processus et threads 5
Le bloc de contrôle (PCB)
• En plus des données et du code, le chargeur associe au processus le PCB :
un identificateur (PID)l’état (élu, bloqué ou prêt)le contexte processeur et mémoireles statistiquesles informations sur l’ordonnancementles informations sur ses ressources
ce bloc permet de gérer le contexte
Francis ROGARD Initiation SE processus et threads 6
Les threads (processus légers)
File exécution Ressources Espace d’adressage
Thread 3
Thread 2
Thread 1
Processus monothread
Processus multithreads
Ressources Espace d’adressage
Francis ROGARD Initiation SE processus et threads 7
L’ordonnancement
La fonction d’ordonnancement va permettre de choisir le processeur élu.
Si l’ordonnancement est préemptif, il sera possible de retirer un processus élu en particulier pour assurer un temps de réponse « acceptable » pour chaque processus
Francis ROGARD Initiation SE processus et threads 8
Les dispositifs d’ordonnancement
µP
µP
µP
µP
Répartiteur Ordonnanceur
Préemption
Blocage Déblocage
Liste des PCB bloqués
Liste des PCB prêts
Francis ROGARD Initiation SE processus et threads 9
Les algorithmes de choix
• Premier arrivé, Premier servi (FIFO)
temps d’attente sur les processus longs
• Par prioritéProblème de famine
• Politique du tourniquet (quantum de temps)Adapter le quantum de temps
Francis ROGARD Initiation SE processus et threads 10
Les politiques d’ordonnancement
• Unix/Linux :Sur la base des priorités décroissant (1-99)
temps réel : fixe (FIFO et priorité)classiques : calcul dynamique (priorité)
• WindowsSur la base des priorités croissantes (1-32)
thread temps réel : fixe (16-32)thread système : dynamique (1-15)
Une file d’attente par niveau de priorité
Francis ROGARD Initiation SE processus et threads 11
L’implantation Unix/Linux
Le principe de base est d’organiser les processus hiérarchiquement, à chaque nœud est associé un fils (arbre binaire)
Francis ROGARD Initiation SE processus et threads 12
Les caractéristiques
• Le pid, le ppid• L’uid et le gid, l’euid et l’egid• Les trois fichiers input, output et error• Le niveau de priorité• Les temps processeur, mémoire et total utilisateur• La quantité de mémoire utilisée• Le nom de la primitive en attente de sa mort
Francis ROGARD Initiation SE processus et threads 13
Les mécanismes de création
• Création par duplicationLa primitive C fork() crée un processus fils avec duplication du contexte au filsLe père et le fils ont le même nom
• Création par recouvrementIl n’existe pas un nouveau processus, mais un exécutable récupère le contexte d’un processus existant via le pidLa commande exec permet ce type de recouvrement
Francis ROGARD Initiation SE processus et threads 14
La primitive fork ()
Le schéma de création du processus dans un programme en langage C :
switch ( fork())
{ case – 1 : /* erreur */ ; break ;
case 0 : /* chez le fils */ ; break ;
default : /* chez le père */
}
/* code exécuté par les deux processus */
Francis ROGARD Initiation SE processus et threads 15
La synchronisation
• On dispose de trois mécanismes pour synchroniser les processus :
L’attente de mort du fils (wait)
Les signaux
Les sémaphores
Francis ROGARD Initiation SE processus et threads 16
L’échange de données
• On dispose de mécanismes pour transférer des données entre deux processus sans utiliser un fichier du disque dur :
Les tubes systèmes ou nommés
La mémoire partagée
Les files de messages
Francis ROGARD Initiation SE processus et threads 17
L’interprète de commandes
Le_prompt > ls -l
bash
wait()
ls -l
fork()
execl()
bash
Francis ROGARD Initiation SE processus et threads 18
La programmation de l’interprétation
Le schéma d’interprétation :switch ( fork())
{ case – 1 : /* erreur */ ; break ;case 0 : execl(« /bin/ls », « ls » ,« -l »,
NULL); break ;default : wait(0) ;
}/* code exécuté par le bash qui affiche le prompt*/
Francis ROGARD Initiation SE processus et threads 19
La mort d’un processus
• La fin de l’exécution de la fonction main() entraîne la mort du processus et la valeur du return est retournée à l’interprète de commandes
• L’exécution de la primitive exit() ou la commande exit entraîne la fin du processus avec l’envoi de la valeur associée à l’interprète
• La réception d’un signal entraîne aussi sa mort si le signal n’est pas associé à un traitement spécifique
Francis ROGARD Initiation SE processus et threads 20
Les commandes
• ps visualisation• top visualisation en temps réel• nice gestion de la priorité• time temps d’exécution• kill suppression d’un processus• wait attente de la fin du fils• exec <commande>
recouvrement par la <commande>
Francis ROGARD Initiation SE processus et threads 21
Démarrage du système
• Le premier processus après l’initialisation est int de pid 1Les tâches d’int sont :
Montage des systèmes de fichiers ( /proc et ceux de /etc/fstab)Mise à l’heureL’activation du swapLe lancement des services (démons) syslog, crond, lpd …Le chargement des modulesL’affectation des variables d’environnement
Francis ROGARD Initiation SE processus et threads 22
Le fichier /etc/inittab (1)
• Ce fichier, lu par init, indique les services à démarrer à l’initialisation. Les services sont regroupés suivant 7 niveaux d’exécution successifs
• En général : 0 arrêt du système1,s et S mode mono-utilisateur2 mode multi-utilisateurs6 redémarrage
Le niveau 3 est utilisé pour les services et 5 pour l’environnement graphique
Francis ROGARD Initiation SE processus et threads 23
Le fichier /etc/inittab (2)
• Une ligne du fichier comporte les informations suivantes
<identifiant> <liste des runlevels> <action> <commande>
Les actions sont :Respawn, Once, Wait, Powerfail …• Les scripts exécutés suivant les runlevels sont
dans le répertoire /etc/rc.d (rc.sysinit, init.d avec les sous répertoires rc0.d, rc1.d …)
Francis ROGARD Initiation SE processus et threads 24
Le script rc
• Le script rc exécute les fichiers du répertoire correspondant au numéro de runlevel passé en argument (rc 2 rc2.d)
• Dans le répertoire rc2.d, on trouve les liens symboliques vers des fichiers de /etc/init.d :
lrwxrwxrwx 1 root root 15 dec 16 2004 K50xinetd -> ../init.d/xinetd
lrwxrwxrwx 1 root root 15 dec 16 2004 S90crond -> ../init.d/crond
Francis ROGARD Initiation SE processus et threads 25
La hiérarchie des processus
init (pid 1) /etc/inittab
Les démons initialisés par la commande rc suivant les niveaux de priorité
crond, lpd, xinetd … Le processus de login
bash
login
getty
/etc/passwd
/etc/profile
/etc/bashrc
~/.bashrc
Francis ROGARD Initiation SE processus et threads 26
L’arrêt du système
• La commande shutdown
• La commande halt
• <ctrl> <alt> et <suppr>
Francis ROGARD Initiation SE processus et threads 27
Implantation NT et XP
Francis ROGARD Initiation SE processus et threads 28
Rappel
Mode utilisateur
Mode noyau
Application client
Sous système protégé (Win32)
Message
Service système
Noyau
Matériel
Gestionnaire Processus et threads
Appel système
Francis ROGARD Initiation SE processus et threads 29
Processus et threads
• Chaque processus comporte un ou plusieurs threads
• Le système gère des objets processus et threads
• Pas de relation père-fils, le gestionnaire de processus crée des instances d’objet pour les sous-systèmes d’environnement qui les gèrent
Francis ROGARD Initiation SE processus et threads 30
Les éléments du thread
• Le contexte :CO, une pile utilisateur et une noyau, les valeurs des registres, une zone privée pour des données
• L’espace commun :ce sont les objets du processus via les handles, l’espace d’adressage et toute autre ressource.
Francis ROGARD Initiation SE processus et threads 31
Ressources d’un processus
Processus
Jetond’accès
Liste des descripteurs espace virtuel
handle 1handle 2handle 3
Table des objets
threadfichier
sectionObjets
Francis ROGARD Initiation SE processus et threads 32
Les services du noyau
• Ordonnancement
• Gestion des interruptions et exceptions
interruption asynchrone
exception synchrone
• La synchronisation des processeurs
• La procédure de reprise du défaut d’alimentation
Francis ROGARD Initiation SE processus et threads 33
FIN