Introduction aux systmes dexploitation Partie 2 Les processus

  • Slides: 41
Download presentation
Introduction aux systèmes d’exploitation Partie 2 : Les processus La structure des processus Jalil

Introduction aux systèmes d’exploitation Partie 2 : Les processus La structure des processus Jalil BOUKHOBZA UBO / Lab-STICC Email : boukhobza@univ-brest. fr Partie 2 : Les processus 1

Partie 2 : Les processus La structure des processus 1. 2. 3. 4. 5.

Partie 2 : Les processus La structure des processus 1. 2. 3. 4. 5. La notion de processus Le pseudo-parallélisme La hiérarchie des processus Le contexte d’un processus Présentation d’un diagramme d’état UNIX Partie 2 : Les processus 2

1. La notion de processus 1. 1 Définition d’un processus l Un processus est

1. La notion de processus 1. 1 Définition d’un processus l Un processus est un programme qui s'exécute. l Un processus est dynamique par opposition à un programme qui lui est statique. Partie 2 : Les processus 3

1. 2 Différence entre un programme et un processus l Imaginez un informaticien qui

1. 2 Différence entre un programme et un processus l Imaginez un informaticien qui prépare un gâteau d’anniversaire pour sa fille. l l l Recette = Programme Informaticien = Processeur Ingrédients = Données Activité cuisine = Processus Supposez maintenant que le fils de l'informaticien arrive en pleurant parce qu'il a été piqué par une abeille. l Le processeur “ informaticien ” basculera du processus “ Activité cuisine ” à un processus plus prioritaire “ 1 er soins ”. Partie 2 : Les processus 4

1. 2 Différence entre un programme et un processus (2) l L'idée clé est

1. 2 Différence entre un programme et un processus (2) l L'idée clé est qu'un processus est une activité d'un certain type qui possède : l l un programme (recette, livre de premier soin), des données (ingrédients, trousse de soin), ainsi qu'un état courant (un point précis dans la recette). Un processeur : l l peut être partagé entre plusieurs processus, en se servant d'un algorithme d'ordonnancement qui détermine l l quand il faut suspendre un processus, …pour en servir un autre (lequel? ). Partie 2 : Les processus 5

1. 3 Diagramme simplifié des états et des transitions d’un processus l l A

1. 3 Diagramme simplifié des états et des transitions d’un processus l l A un instant donné un seul processus peut être actif (ÉLU) monoprocesseur. Les autres processus pourront être : l l soit en attente d’exécution (PRET), soit bloqué en attente de ressources (BLOQUÉ) 3 Prêt Élu 1 2 Bloqué 1. Le processus se bloque en attente de données/ressources. 2. L’ordonnanceur choisit un autre processus. 3. L’ordonnanceur choisit le processus. 4. Les données deviennent disponibles. 4 Partie 2 : Les processus 6

2. Le pseudo-parallélisme l l l Le processeur à un instant donné ne peut

2. Le pseudo-parallélisme l l l Le processeur à un instant donné ne peut exécuter réellement qu’un seul programme (sauf multicoeur !). Un système d’exploitation doit en général traiter plusieurs tâches en même temps (multi tâches). Il résout ce problème en passant d’un programme à un autre en exécutant chaque programme pendant quelques dizaines ou centaines de millisecondes (quantum de temps) Partie 2 : Les processus 7

3. La hiérarchie des processus sous UNIX l Au lancement du système, il n’existe

3. La hiérarchie des processus sous UNIX l Au lancement du système, il n’existe qu’un seul processus, qui est l’ancêtre de tous les autres (processus 0: swapper/scheduler). l Chaque processus peut lancer lui-même d’autres processus. l Le processus créateur est le père, et les processus créés, les fils. l Les processus se structurent sous la forme d’une arborescence. Partie 2 : Les processus 8

4. Le contexte d’un processus 4. 1. Introduction au contexte d’un processus 4. 2.

4. Le contexte d’un processus 4. 1. Introduction au contexte d’un processus 4. 2. Composition du contexte d’un processus 4. 3. Structure d’un processus 4. 4. Composition standard d’un BCP (Bloc de Contrôle du Processus) 4. 5. Commande ‘ps’ 4. 6. Création d’un processus sous UNIX Partie 2 : Les processus 9

4. 1 Introduction au contexte d’un processus (1) l Soient les deux commandes suivantes

4. 1 Introduction au contexte d’un processus (1) l Soient les deux commandes suivantes : § § l ls -t ls -l ordre chronologique liste détaillée L’exécution de chacune de ces commandes va engendrer la création d’un processus : l l l un identifiant différent (pid), des données différentes, un état différent, malgré le même et unique programme (exécutable ls). Partie 2 : Les processus 10

4. 1 Introduction au contexte d’un processus (2) l Le contexte (image) du processus

4. 1 Introduction au contexte d’un processus (2) l Le contexte (image) du processus contient tous les éléments nécessaires au système d’exploitation pour l’exécution d’un processus à un instant donné : l l’état des registres, l’état des fichiers ouverts, le contenu de la mémoire principale où l’on distingue : l l l le segment de code (accès en lecture uniquement) le segment de donnée (accès en lecture/écriture) le segment de pile … l’état du processus dans le système, … Cet ensemble de données doit permettre au système de reprendre l’exécution d’un processus qui a été interrompu. Partie 2 : Les processus 11

4. 2 Composition du contexte d’un processus l Le contexte d’un processus se décompose

4. 2 Composition du contexte d’un processus l Le contexte d’un processus se décompose en deux parties : 1. La structure interne du processus qui sera contenu dans la mémoire principale sous la forme de plusieurs segments : la pile, les données et le code. 2. Le Bloc de Contrôle du Processus (BCP) qui se décompose lui-même en : § Une entrée dans la table des processus qui comporte les informations dont le noyau a besoin à tout moment : § § § état du processus, compteur ordinal, pointeur de pile, allocation mémoire, … Une structure utilisateur appelée zone U qui contient les données privées du processus nécessaires uniquement en exécution § § Descripteurs de fichiers Périphériques ouverts § … Partie 2 : Les processus 12

4. 3 La structure interne d’un processus (1) l Les compilateurs permettent de créer

4. 3 La structure interne d’un processus (1) l Les compilateurs permettent de créer des fichiers exécutables dont le format peut ensuite être transformé en processus par le noyau du système. l Schématiquement le format d’un exécutable comprend (format elf) : § § § Une entête qui décrit l’ensemble du fichier, ses attributs et la description des sections qui suivent. La taille à allouer pour les variables non initialisées (symboles). Une section TEXT qui contient le code en langage machine. Une section DATA qui contient les données initialisées. d’autres sections : segments des données (initialisées), symboles, … Partie 2 : Les processus 13

4. 3 La structure interne d’un processus (2) l Le chargement d’un exécutable en

4. 3 La structure interne d’un processus (2) l Le chargement d’un exécutable en mémoire consiste à allouer un segment de mémoire pour chaque section : l l Le segment de code pour la section TEXT. Le segment de données pour la section DATA… l l l Le segment de correspond aux instructions, en langage machine, du programme à exécuter. Le segment de données contient les variables globales ou statiques du programme ainsi que les allocations dynamiques de mémoire (tas). Le segment de pile permet de stocker les appels de fonctions, avec leurs paramètres et leurs variables locales, viennent s’empiler sur la pile. Lors d’un retour de fonction les paramètres et variables sont dépilées. Partie 2 : Les processus 14

4. 4 Composition standard d’un BCP (1) l Quelques champs typiques d’un Bloc de

4. 4 Composition standard d’un BCP (1) l Quelques champs typiques d’un Bloc de Contrôle d’un Processus (BCP) → gestion de processus, de mémoire et de fichiers Partie 2 : Les processus 15

4. 4 Composition standard d’un BCP (2) l Les caractéristiques principales que l’on trouve

4. 4 Composition standard d’un BCP (2) l Les caractéristiques principales que l’on trouve dans un bloc de processus concernent : l l l L’identité du processus ainsi que celle de son père. Le répertoire de travail du processus. Le masque de création des fichiers. La table descripteurs de fichiers. Les liens entre le processus et les utilisateurs. A la création d’un processus un très grand nombre de ses attributs sont hérités du processus père. Partie 2 : Les processus 16

4. 4. 1 Identité du processus et celle de son père l Un processus

4. 4. 1 Identité du processus et celle de son père l Un processus a accès respectivement à son PID et à celui de son père par l'intermédiaire respectivement de la fonction getpid et getppid. #include <unistd. h> pid_t getpid (void); pid_t getppid (void); Partie 2 : Les processus 17

4. 4. 2 Répertoire de travail du processus l l l Le répertoire de

4. 4. 2 Répertoire de travail du processus l l l Le répertoire de travail du processus est important car tous les chemins relatifs utilisés sont exprimés par rapport à celui-ci. La fonction chdir permet de changer le répertoire de travail du processus. La fonction getcwd permet de récupérer le chemin absolu du répertoire de travail courant. Partie 2 : Les processus 18

4. 4. 3 Masque de création des fichiers l l Le masque de création

4. 4. 3 Masque de création des fichiers l l Le masque de création de fichiers umask permet d'interdire le positionnement de certaines permissions lors de création de fichiers. La fonction umask permet de modifier la valeur du umask. Partie 2 : Les processus 19

4. 4. 4 La table descripteurs de fichier l Un processus hérite à sa

4. 4. 4 La table descripteurs de fichier l Un processus hérite à sa création de tous les descripteurs de son père. Il a donc accès aux mêmes entrées dans la table des fichiers ouverts que son père. l Il peut ensuite : l l acquérir de nouveaux descripteurs par l’intermédiaire des primitives standards (open, creat, dup, . . ) ou en libérer par la primitive close. Partie 2 : Les processus 20

4. 4. 5 Liens du processus avec les utilisateurs (1) Ces liens unissent le

4. 4. 5 Liens du processus avec les utilisateurs (1) Ces liens unissent le processus : l l l Il existe 4 liens différents étant tous hérités du processus père à la création du processus : l 1. 2. 3. 4. l d’une part à des utilisateurs individuels (uid) et d’autre part à des groupes d’utilisateurs (gid). Le propriétaire réel. Le propriétaire effectif. Le groupe propriétaire réel. Le groupe propriétaire effectif. Ces valeurs peuvent éventuellement être modifiées au cours de l’exécution du processus. Partie 2 : Les processus 21

4. 4. 5 Liens du processus avec les utilisateurs (2) l Différence entre propriétaire

4. 4. 5 Liens du processus avec les utilisateurs (2) l Différence entre propriétaire réel et effectif l l Le propriétaire réel est l’utilisateur ayant lancé le processus/la commande. Le propriétaire effectif est utilisé pour vérifier certains droits d’accès du processus vis-à-vis des fichiers ou des autres processus. l Deux possibilités : § § Normalement le propriétaire effectif correspond au propriétaire réel. Cependant si le setuid bit est positionné sur le fichier exécutable, c’est le propriétaire du fichier exécutable qui devient le propriétaire effectif du processus. Partie 2 : Les processus 22

4. 4. 5 Liens du processus avec les utilisateurs (3) l La fonction getuid

4. 4. 5 Liens du processus avec les utilisateurs (3) l La fonction getuid (respectivement getgid) retourne le numéro d'identification de l'utilisateur (respectivement le numéro d'identification du groupe) à qui appartient le processus. #include < unistd. h> #include < sys/ types. h> uid_t getuid ( void); gid_t getgid ( void); l Il en est de même pour le propriétaire effectif au travers des fonctions geteuid et getegid. Partie 2 : Les processus 23

4. 4. 6 La table des processus et la zone U l La table

4. 4. 6 La table des processus et la zone U l La table des processus l l Contient les informations essentielles dont le noyau a absolument besoin à tout moment pour fonctionner. Tous les processus sont associés à une entrée dans la table des processus qui est interne au noyau. Le nombre des emplacements dans la table des processus est limité pour chaque système et pour chaque utilisateur. Zone U(tilisateur) l l La zone U contient les données privées du processus, dont le noyau a besoin uniquement lorsque le processus est en exécution. Une seule zone U est accessible à un moment donné, celle de l’unique processus en cours d’exécution. Partie 2 : Les processus 24

4. 5 La commande ps l La command ps permet à un utilisateur quelconque

4. 5 La commande ps l La command ps permet à un utilisateur quelconque d’obtenir la liste de processus : l appartenant à un ensemble particulier, l ainsi que certaines de leurs caractéristiques. l Sans entrer dans le détail des options, regardons quelques cas d’utilisation : l ps –l l ps -e Partie 2 : Les processus 25

4. 5. 1 La commande ps sans option l Fournit la liste des processus

4. 5. 1 La commande ps sans option l Fournit la liste des processus qui appartiennent à la même session que le processus shell depuis lequel la commande est lancée, avec pour chaque processus : § § Le numéro par lequel le système identifie le processus (PID). Le numéro du terminal de contrôle du processus (TTY). Le temps cumulé d’exécution du processus (TIME). Le nom du fichier correspondant au programme exécuté (CMD). Partie 2 : Les processus 26

4. 5. 2 La commande ps avec l’option -l l Permet d’obtenir pour chaque

4. 5. 2 La commande ps avec l’option -l l Permet d’obtenir pour chaque processus une liste d’informations plus complète : § § § § L’identité du propriétaire réel du processus (UID). L’identifiant du processus père (PPID). L’indicateur de l’état du processus (F). L’état du processus (S) : R(actif), S (en sommeil), Z (zombi), . . . Des informations relatives à la priorité du processus (C/PRI/NI). L’adresse du processus en mémoire ou sur disque (ADDR). Taille du processus exprimée en nombre de blocs (SZ). Adresse de l’événement attendu par le processus s’il est en sommeil (WCHAN). Partie 2 : Les processus 27

4. 5. 4 La commande ps avec l’option –e permet de visualiser tous les

4. 5. 4 La commande ps avec l’option –e permet de visualiser tous les processus l l l Les premiers processus sont des processus systèmes. Le processus sched correspondant à l’ordonnanceur : l l Il n ’a pas de père car il a été créé par le noyau lui-même. Le processus init est l ’ancêtre de tous les processus. l Si un processus devient orphelin. . . Partie 2 : Les processus 28

4. 6 Création d’un processus sous UNIX La création d’un processus peut se faire

4. 6 Création d’un processus sous UNIX La création d’un processus peut se faire en une ou deux étapes : l 1. Duplication du processus à l ’aide de la fonction fork. 2. [Recouvrement du code à l’aide de la fonction exec. ] Partie 2 : Les processus 29

4. 6. 1 Duplication d’un processus (1) l Un processus peut se dupliquer –

4. 6. 1 Duplication d’un processus (1) l Un processus peut se dupliquer – et donc ajouter un nouveau processus – par la fonction : l l pid_t fork (void) Le code retour pid_t est primordial : l l l -1 0 >0 en cas d ’échec, on est dans le processus fils, le n° du processus fils (PID) dans le père. l Cette fonction transmet une partie du contexte du père au fils. l À l’issue d’un fork() les deux processus s’exécutent simultanément. Partie 2 : Les processus 30

4. 6. 1 Duplication d’un processus (2) l Structure de code standard suite à

4. 6. 1 Duplication d’un processus (2) l Structure de code standard suite à un fork Partie 2 : Les processus 31

4. 6. 2 Recouvrement du code du processus inital (1) l La création d’un

4. 6. 2 Recouvrement du code du processus inital (1) l La création d’un nouveau processus peut se faire par le “ recouvrement ” du code d’un processus existant grâce à la fonction : l int execl(char *ref, char *arg 0, char *argn, NULL) l Les arguments de la fonction execl sont : l ref correspond au chemin (path) complet de l’exécutable, l arg 0 reprend en fait le nom du programme, l arg 1, …, argn sont les arguments du programme. l Il existe d’autres fonctions analogues dont les arguments sont légèrement différents : execle (), execlp (), execve (), execvp (). Partie 2 : Les processus 32

4. 6. 2 Recouvrement du code du processus inital (2) l l Exemple de

4. 6. 2 Recouvrement du code du processus inital (2) l l Exemple de recouvrement : Remarque : l l La partie de code qui suit l'appel d'une primitive de la famille exec ne s'exécute pas, car le processus où elle se trouve est remplacé par un autre. Ce code ne sert donc que dans le cas où la primitive exec n'a pas pu lancer le processus de remplacement (le nom du programme était incorrect par exemple). Partie 2 : Les processus 33

4. 6. 3 Principes de base de la genèse des processus l l l

4. 6. 3 Principes de base de la genèse des processus l l l La duplication d’un processus existant à l’aide du fork. Ce dernier sera le père du nouveau processus. Le recouvrement du code du processus fils à l’aide des fonctions exec. La terminaison d’un processus à l’aide de la fonction : l l L’élimination d’un processus terminé ne peut se faire que par son père, grâce à la fonction : l l void exit(int statut) int wait(int * code_de_sortie). Si le fils se termine sans que son père l’attende, le fils passe à l’état defunct ou zombie. Partie 2 : Les processus 34

5. Présentation d’un diagramme d’état UNIX l Un diagramme plus complexe pour 3 raisons

5. Présentation d’un diagramme d’état UNIX l Un diagramme plus complexe pour 3 raisons : l Sous Unix, l’exécution d’un processus se fait sous deux modes : l l l Le mode noyau qui correspond aux appels système. Un processus en mode noyau ne pouvant être suspendu par l’ordonnanceur, il passe dans un état appelé “ préempté ” à la fin de son exécution. Le mode utilisateur qui correspond à l’exécution des autres instructions. Le code et les données du noyau résident en permanence dans le système et tous les processus se les partagent par opposition à l’espace d’adressage du processus. Lorsque la mémoire centrale ne peut contenir tous les processus prêts, certains sont déplacés sur le disque (zone de swap). Les processus terminés ne sont pas immédiatement éliminés de la table des processus (état zombie). Partie 2 : Les processus 35

5. 1 Diagramme des états et transitions UNIX Partie 2 : Les processus 36

5. 1 Diagramme des états et transitions UNIX Partie 2 : Les processus 36

5. 2. 1 Description des états et transitions UNIX (1) l Etat 1 :

5. 2. 1 Description des états et transitions UNIX (1) l Etat 1 : Exécution en mode utilisateur l l Etat 2 : Exécution en mode noyau pour tous les appels système. l l Le processus accède à ses données et exécute ses instructions contenues dans la structure interne propre au processus. Le processus accède à des données du système et exécute le code système qui résident en permanence dans le système. Etat 3 : Prêt en mémoire l Le processus ne s’exécute pas mais il est éligible. Il est prêt à s’exécuter. Partie 2 : Les processus 37

5. 2. 2 Description des états et transitions UNIX (2) l Etat 4 :

5. 2. 2 Description des états et transitions UNIX (2) l Etat 4 : Bloqué en mémoire l l Etat 5 : Prêt sur disque l l Quand un processus exécute un appel système, il passe du mode utilisateur au mode noyau. Si le processus doit attendre une ressource (Ex. : un sémaphore) ou le résultat de son appel système (Ex. : une entrée/sortie) il est mis en sommeil. Le processus est prêt à s’exécuter mais le swapeur doit le transférer en mémoire centrale pour le rendre éligible. Etat 6 : Bloqué sur disque l Le processus est endormi en zone de swap (sur disque) en attente de ressources. Partie 2 : Les processus 38

5. 2. 3 Description des états et transitions UNIX (3) l Etat 7 :

5. 2. 3 Description des états et transitions UNIX (3) l Etat 7 : Préempté l l Etat 8 : Création l l Un processus en mode noyau ne peut pas être suspendu par l’ordonnanceur. Au retour de son appel système, le processus peut néanmoins être préempté c’est-à-dire qu’il reste prêt à s’exécuter mais c’est un autre processus qui est élu. C’est l’état qui correspond à la naissance d’un processus après l’appel système fork. Etat 9 : Zombie l L’état défunt ou zombie correspond à l’état du processus qui vient de se terminer. Il est conservé dans la table des processus, le temps pour son processus père de récupérer certaines informations. Partie 2 : Les processus 39

5. 3 Exemple de transition d’état l Soit la situation suivante : l l

5. 3 Exemple de transition d’état l Soit la situation suivante : l l L’ensemble de la mémoire est occupé par des processus, mais le processus le plus prioritaire est dans l’état 5 “ Prêt sur disque ”. Pour pouvoir exécuter ce processus, il faut le placer dans l’état 3 “ Prêt en mémoire ”. Pour cela le système doit au préalable libérer de la mémoire en faisant passer un ou plusieurs processus des états 3 “ Prêt en mémoire ” ou 4 “ Bloqué en mémoire ” dans la zone de swap, donc les faire passer dans les états 5 “ Prêt sur disque ” ou 6 “ Bloqué sur disque ”. C’est le swapeur qui réalise ces opérations : l l l Sélection de processus pour un transfert sur disque (swapout). Réalisation du transfert de la mémoire centrale vers l’espace de swap. Chargement en mémoire (swapin) du processus prioritaire. Partie 2 : Les processus 40

Références bibliographiques l Andrew Tanenbaum « Systèmes d’exploitation » 2ème édition Pearson Education. l

Références bibliographiques l Andrew Tanenbaum « Systèmes d’exploitation » 2ème édition Pearson Education. l Jean-Marie Rifflet « La programmation sous Unix » 3ème édition Edi. Science. l Beauquier Joffroy « Systemes d'exploitation concepts et algorithmes » Ediscience l Daniel Bovet, Marco Cesati « Le noyau Linux » 3ème édition O’Reilly. Partie 2 : Les processus 41