La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 3 – LES PROCESSUS SOUS UNIX.

Présentations similaires


Présentation au sujet: "1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 3 – LES PROCESSUS SOUS UNIX."— Transcription de la présentation:

1 1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 3 – LES PROCESSUS SOUS UNIX

2 2 définition d’un processus Un programme qui s’exécute, avec sa pile, ses données, son compteur ordinal, ses descripteurs de fichiers ouverts et les registres nécessaires à l’exécution  aspect dynamique ce qui est souligné = le contexte du processus Fichier exécutable = aspect statique Un même fichier exécutable peut donc engendrer plusieurs processus s’il est exécuté plusieurs fois simultanément

3 3 environnements d’un processus 1. environnement utilisateur fichier exécutable, avec 3 zones : zone programme ou de code (partageable entre plusieurs processus) zone de données (variables globales et segments de mémoire) zone de pile utilisateur (variables locales, appels de fonctions)

4 4 environnements d’un processus 2. environnement machine registres

5 5 environnements d’un processus 3. environnement système initialisé par le shell à la création du processus table des processus (consultable par la commande ps) entité globale en mémoire centrale pointe sur table des textes pointe sur la zone de données de chaque processus table des textes en mémoire centrale, permet le partage de code la ligne relative à un processus contient : - pointeur vers l’i-node du fichier exécutable - nombre de processus qui exécutent ce fichier

6 6

7 7 environnements d’un processus 3. environnement système (suite) table des descripteurs (structure U, une par processus) une entrée de la table des descripteurs pointe sur une entrée de la table des fichiers ouverts table des fichiers ouverts (entité globale) une entrée dans la table des fichiers ouverts comprend : - nombre de descripteurs pointant sur l ’entrée - mode d ’ouverture (lecture/écriture) et indicateurs - valeur de l ’offset - pointeur sur une entrée de la table des i-nodes

8 8 012…012… 012…012… Table des descripteurs processus P1 Table des descripteurs processus P2 Table des fichiers ouverts Table des i-nodes disque ou MC

9 9 simultanéité - vraie - pseudo-simultanéité par partage / commutation de temps  mécanisme de changement de contexte

10 10 gestion des processus ils sont numérotés par le noyau : 1 (init), 2, … Ce numéro est appelé pid (process identity)  les processus sont organisés en un arbre - dont la racine est le processus init - processus père, processus fils dans l’arbre  états d ’un processus : élu (actif), bloqué, prêt (activable), etc…

11 11

12 12 ordonnancement de processus un processus possède une priorité gérée par l’ordonnanceur (scheduler) elle est recalculée à chaque quantum de temps l ’utilisateur peut intervenir par la commande nice

13 13 initialisation du système / de l’arbre des processus (1) un bootstrap primaire implanté sur la piste 0 du disque lance un bootstrap secondaire

14 14 initialisation du système / de l’arbre des processus (2) le bootstrap secondaire - met en fonction l’échangeur de pid 0 * gère la pagination * gère les échanges entre mémoires - découpe la mémoire (voir diapo 11 présentation 2) - teste les volumes - charge les tables - lance l’exécution de init de pid 1

15 15 initialisation du système / de l’arbre des processus (3) le processus init de pid 1 - crée autant de processus fils getty qu ’il y a de terminaux réels ou virtuels (taper ps -fe|grep getty) A la connexion, init tue le processus getty et le restaure à la déconnexion) un utilisateur possède : - un uid (user identity) la correspondance nom  uid dans /etc/passwd - un gid (group identity) la correspondance nom  gid dans /etc/group

16 16 exécution en tâche de fond (background) symbole & Exemple : tp.exetp.exe & père (shell par défaut) Processus fils exécutant tp.exe Le père est suspendu (wait) jusqu’à la fin du fils Processus fils exécutant tp.exe Le père et le fils sont actifs simultanément

17 17 création de processus int fork ( ) - crée un processus fils - qui partage le code du père - à la création du fils, son environnement est une copie de celui du père - retourne -1 au père si le fils n’a pas pu être créé - retourne au père le pid du fils (≥ 2) si celui-ci a été créé - retourne 0 au fils

18 18 création de processus Exemple traité en cours : int main ( ) {int pid; printf ("bonjour"); pid = fork ( ); if (pid == -1) { printf ("erreur"); exit (0);} if (pid == 0) printf ("les amis\n"); else printf ("amigos\n"); }

19 19 synchronisation de processus void exit (int)- met fin à un processus - un argument entier int wait (int *) - attente active de la fin d’un processus fils - retourne le pid du premier processus qui exécute exit ou envoie un signal. Bien tenir compte des zombies ! - gestion de l’entier pointé par l’argument : argument de exit n° de signal avant-dernier octet dernier octet

20 20 synchronisation de processus Les signaux sont décrits en annexe kill- envoie un signal à un processus - exemple : kill (pid, SIGINT) signal- décrit la réaction d’un processus à l’arrivée d’un signal (pointeur sur une fonction de traitement) - exemple : signal (SIGINT, f);


Télécharger ppt "1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 3 – LES PROCESSUS SOUS UNIX."

Présentations similaires


Annonces Google