350 likes | 593 Views
SYSTEME D’EXPLOITATION. Gestion des processus et threads Ordonnancement. 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
E N D
SYSTEME D’EXPLOITATION Gestion des processus et threads Ordonnancement Initiation SE processus et threads
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) Initiation SE processus et threads
Les états d’un processus Fin En exécution création Élection Prêt Blocage Préemption Déblocage Bloqué Attente ressources Attente processeur Initiation SE processus et threads
Le diagramme des états actif utilisateur actif noyau zombie nouveau prêt Endormi ou suspendu Initiation SE processus et threads
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émoire les statistiques les informations sur l’ordonnancement les informations sur ses ressources ce bloc permet de gérer le contexte Initiation SE processus et threads
Les threads (processus légers) File exécution Ressources Espace d’adressage Processus monothread Thread 1 Ressources Espace d’adressage Thread 2 Thread 3 Processus multithreads Initiation SE processus et threads
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 Initiation SE processus et threads
Les dispositifs d’ordonnancement Préemption µP Liste des PCB prêts µP Répartiteur Ordonnanceur µP Liste des PCB bloqués µP Blocage Déblocage Initiation SE processus et threads
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 Initiation SE processus et threads
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é) • Windows Sur 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é Initiation SE processus et threads
L’implantation Unix/Linux Le principe de base est d’organiser les processus hiérarchiquement, à chaque nœud est associé un fils (arbre binaire) Initiation SE processus et threads
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 Initiation SE processus et threads
Les mécanismes de création • Création par duplication La primitive C fork() crée un processus fils avec duplication du contexte au fils Le père et le fils ont le même nom • Création par recouvrement Il n’existe pas un nouveau processus, mais un exécutable récupère le contexte d’un processus existant via le pid La commande exec permet ce type de recouvrement Initiation SE processus et threads
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 */ Initiation SE processus et threads
La synchronisation • On dispose de trois mécanismes pour synchroniser les processus : L’attente de mort du fils (wait) Les signaux Les sémaphores Initiation SE processus et threads
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 Initiation SE processus et threads
L’interprète de commandes Le_prompt > ls -l bash fork() wait() execl() ls -l bash Initiation SE processus et threads
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*/ Initiation SE processus et threads
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 Initiation SE processus et threads
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> Initiation SE processus et threads
Démarrage du système • Le premier processus après l’initialisation est int de pid 1 Les tâches d’int sont : Montage des systèmes de fichiers ( /proc et ceux de /etc/fstab) Mise à l’heure L’activation du swap Le lancement des services (démons) syslog, crond, lpd … Le chargement des modules L’affectation des variables d’environnement Initiation SE processus et threads
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ème 1,s et S mode mono-utilisateur 2 mode multi-utilisateurs 6 redémarrage Le niveau 3 est utilisé pour les services et 5 pour l’environnement graphique Initiation SE processus et threads
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 …) Initiation SE processus et threads
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 Initiation SE processus et threads
La hiérarchie des processus /etc/inittab init (pid 1) /etc/passwd /etc/profile /etc/bashrc ~/.bashrc Les démons initialisés par la commande rc suivant les niveaux de priorité crond, lpd, xinetd … login getty bash Le processus de login Initiation SE processus et threads
L’arrêt du système • La commande shutdown • La commande halt • <ctrl> <alt> et <suppr> Initiation SE processus et threads
Implantation NT et XP Initiation SE processus et threads
Rappel Mode utilisateur Application client Message Sous système protégé (Win32) Appel système Mode noyau Service système Gestionnaire Processus et threads Noyau Matériel Initiation SE processus et threads
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 Initiation SE processus et threads
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. Initiation SE processus et threads
Ressources d’un processus Jeton d’accès Liste des descripteurs espace virtuel Processus thread Table des objets handle 1 handle 2 fichier handle 3 section Objets Initiation SE processus et threads
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 Initiation SE processus et threads
FIN Initiation SE processus et threads