Vous êtes sur la page 1sur 51

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Processus sous LINUX


GUINKO Tonguim Ferdinand
IBAM, Universit e de Ouagadougou

30 novembre 2009

1/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Mat eriel ayant servi ` a la conception de ce cours


http ://gcc.gnu.org/onlinedocs/gcc/ http ://fr.wikipedia.org/wiki/ANSI C Syst` emes dExploitation, Processus, Philippe BIDINGER, http ://www-verimag.imag.fr/ bidinger Programmation concurrente multi-thread, Fran coise BAUDE, Universit e de Nice Sophia-Antipolis http ://www.cours.polymtl.ca/inf3600/documentation/notes/ Syst` emes dexploitation, G erard Michel COCHARD, Picardie, France
2/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Sommaire

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

3/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Gcc Langage C : rappels

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

4/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Gcc Langage C : rappels

gcc
Sous LINUX, la plupart des langages de programmation disposent de leur compilateur :
G++ : compilateur du langage C++ ; GNAT : compiltateur du langage ADA.

A lorigine : GCC signiait : GNU C Compiler ; Aujourdhui GCC signie : GNU Compiler Collection ; Aujourdhui GCC est une suite de compilateurs pour langages de programmation principaux : C, C++, Objective-C, Objective-C++, Java, Fortran, and Ada.

4/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Gcc Langage C : rappels

gcc (suite)
Pour les langages de programmation pris en compte par GCC, et r egul es par des standards, GCC prend en compte plusieurs versions de ces standards.
En 1983, lInstitut national am ericain de normalisation (ANSI) a form e un comit e de normalisation du langage qui a abouti en 1989 ` a lapprobation de la norme dite ANSI C ou C89 (formellement ANSI X3.159-1989) ; En 1990, cette norme a egalement et e adopt ee par lOrganisation internationale de normalisation (C ISO, formellement ISO/CEI 9899 :1990) ; En 1999, une nouvelle evolution du langage est normalis ee par lISO : C99 (formellement ISO/CEI 9899 :1999) ; Le langage C est r eput e pour sa portabilit e.
5/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Gcc Langage C : rappels

gcc : fonctionnement
gcc : produit uniquement un chier objet ; gcc staticprog o : produit un chier ex ecutable en faisant une liaison avec la biblioth` eque syst` eme ; gcc oprog : idem et pr epare une liaison dynamique (par d efaut) ; gcc g : fournit des informations de mise au point en format syst` eme natif (stabs, COFF, XCOFF, DWARF). GDB peut fonctionner avec cette information de mise au point.

6/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Gcc Langage C : rappels

Petit programme en C

#include <stdio.h> int main() { printf("Bonjour. Premier programme en langage C !\n"); return 0; }

7/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Classication des ordonnanceurs


Il est possible de classier les ordonnanceurs suivant la m ethode de s election des processus A long terme ; A moyen terme ; Court terme. ou suivant la m ethode dallocation des ressources. Avec r equisition (non pr eemptif) ; Sans r equisition (pr eemptif).

8/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Ordonnancement ` a 2 niveaux
La taille de la m emoire centrale de lordinateur peut etre insusante pour contenir tous les processus pr ets ` a etre ex ecut es. Certains sont contraints de r esider sur le disque. Lors dune commutation, si le processus elu nest pas en m emoire, il faut le charger en m emoire ; Le temps de commutation est deux ` a trois fois plus elev e que celui des processus qui se trouvent en m emoire centrale ; Pour eviter ces va-et-vient entre le disque et la m emoire lors dune commutation, lordonnanceur ` a deux niveaux d eplace les processus entre le disque et la m emoire haut niveau et choisit le processus ` a ex ecuter parmi ceux qui sont en m emoire bas niveau.
9/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Ordonnancement ` a 2 niveaux (suite)

P eriodiquement, lordonnanceur de haut niveau retire de la m emoire les processus qui y sont rest es assez longtemps et les remplace par des processus qui sont rest es sur le disque pendant trop de temps. Pour elire un processus, lordonnanceur de bas niveau se restreint au processus en m emoire.

10/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Ordonnanceur de bas niveau (CPU scheduler)


Un ordonnanceur de bas niveau (CPU scheduler) applique lun des algorithmes vus pr ec edemment aux processus r esidant en m emoire centrale. Lordonnanceur de bas niveau se charge d elire un processus parmi ceux qui r esident en m emoire : lordonnanceur de bas niveau utilise plusieurs les, une priorit e est associ ee ` a chaque le (plusieurs niveaux de priorit e). Les processus pr ets qui sont en m emoire sont r epartis dans les les selon leur priorit e. Les priorit es des processus sex ecutant en mode utilisateur sont positives ou nulles, alors que celles des processus sex ecutant en mode noyau sont n egatives. Les priorit es n egatives sont les plus elev ees ;
11/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Ordonnanceur de haut niveau (medium term scheduler)


Lordonnanceur de haut niveau se charge des transferts de processus entre la m emoire centrale et le disque. Un ordonnanceur de haut niveau retire de la m emoire les processus qui y sont rest e assez longtemps et transf` ere en m emoire des processus r esidant sur disque. Lordonnanceur de haut niveau prend en compte les points suivants :
depuis combien de temps le processus s ejourne-t-il en m emoire ou sur disque ? combien de temps processeur le processus a-t-il eu r ecemment ? quelle est la priorit e du processus ? quelle est la taille du processus ? (sil est petit, on le logera sans probl` eme)
GUINKO Tonguim Ferdinand Processus sous LINUX

12/50

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

Types dordonnanceurs Ordonnancement des processus

Ordonnanceur ` a long terme (job scheduler)

Lordonnanceur ` a long terme d etermine si un processus utilisateur qui le demande peut eectivement entrer dans le syst` eme (si les temps de r eponse se d egradent, on peut di erer cette entr ee).

13/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Bloc de controle du processus : rappels


Chaque processus est repr esent e dans le syst` eme dexploitation par un bloc de contr ole de processus (PCB). Il consiste en une zone de m emoire contenant plusieurs informations concernant un processus sp ecique, parmis lesquelles les suivantes : Un identicateur unique du processus (un entier) : le PID ; L etat courant du processus ( elu, pr et, bloqu e) ; Le contexte processeur du processus : la valeur du CO, la valeur des autres registres du processeur ; Le contexte m emoire : ce sont des informations m emoire qui permettent de trouver le code et les donn ees du processus en m emoire centrale ;
14/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Bloc de controle du processus : rappels

Des informations diverses de comptabilisation pour les statistiques sur les performances syst` eme ; Des informations li ees ` a l ordonnancement du processus. Le PCB permet la sauvegarde et la restauration du contexte m emoire et du contexte processeur lors des op erations de commutations de contexte.

15/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Bloc de controle du processus sous Linux


Le PCB est divis e en 2 grandes deux parties : Une entr ee dans la table des processus du noyau structproc d enie dans la librairie < sys/proc.h >.
Chaque processus dispose dune entr ee dans une table g en erale du syst` eme, la table des processus. Cette entr ee contient les informations sur le processus qui sont toujours utiles au syst` eme quel que soit l etat du processus : lidenticateur du processus (pid), l etat du processus, les informations dordonnancement, les informations m emoire, cest-` a-dire ladresse des r egions m emoire allou ees au processus.

16/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Bloc de controle du processus sous Linux (suite)

Une structure structuser appel ee zone U d enie dans < sys/user.h >.
Chaque processus dispose egalement dune autre structure, la Zone U. Cette Zone U contient dautres informations concernant le processus, mais ce sont des informations qui peuvent etre temporairement swapp ees sur le disque.

17/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Appels syst` emes


Les processus sous LINUX communiquent entre eux et avec les ev` enements ext erieurs gr ace aux appels syst` eme. Appels syst` emes Un appel syst` eme (en anglais, system call, abr eg e en syscall) est une fonction fournie par le noyau dun syst` eme dexploitation et utilis ee par les programmes sex ecutant dans lespace utilisateur (en dautres termes, tous les processus distincts du noyau). Ce syst` eme permet de contr oler de fa con s ecuris e les applications dans lespace utilisateur.

18/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Appels syst` emes li es aux op erations sur les processus

fork() /*cr eation*/ exit() /*terminaison*/ wait() /*suspension*/ exec() /*changement du segment de code*/

19/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Fonction Fork() : cr eation dun processus


3 situations de cr eation dun processus :
Initialisation du syst` eme ; Cr eation dun processus enfant par un processus existant ; Cr eation dun processus par un utilisateur. Dans le langage de commande :
un processus est cr e e pour lex ecution de chaque commande on peut cr eer des processus pour ex ecuter des commandes en (pseudo)-parall` ele : prog1 & prog2 & /*cr ee deux processus pour ex ecuter Au niveau des appels syst` eme un processus est cr e e par une instruction sp eciale : fork.

20/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)

Au d emarrage dun syst` eme : un programme bien pr ecis est lanc e qui est charg e du lancement de tous les processus n ecessaires au bon fonctionnement du syst` eme. Sous LINUX, ce programme sappelle init. init est donc le processus primitif, et lanc etre de tous les processus ;

21/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)


Au d emarrage dun syst` eme : init est donc orphelin puisquil na pas de p` ere. Le premier r ole de ce processus est de lancer des ls qui auront chacun une fonction dans lorganisation g en erale de la machine. Par exemple :
un processus pour g erer les E/S asynchrones avec les terminaux ; un processus pour g erer les connexions au syst` eme avec demande et v erication dun nom dutilisateur et dun mot de passe ; un processus pour g erer lallocation du CPU (processeur) aux processus !
22/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)

Les processus ls de init, et init, lui-m eme font partie du syst` eme dexploitation. Ils sex ecutent donc avec des droits etendus. Ils constituent les processus syst` eme ou d emons (daemons) par opposition aux processus utilisateur.

23/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)

24/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Fork() : cr eation dun processus


Sous LINUX la cr eation de processus est r ealis ee, en langage C, par lappel syst` eme : pid t fork().

#include <sys/types.h> /* data types */ #include <unistd.h> /* standard symbolic constants and t pid_t fork(void); pid t = int (process id type) fork cr ee un processus identique ` a lappelant :
m eme m eme m eme m eme
25/50

code pile (copi ee) zone de donn ees (copy on write) zone U (copi ee)
GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)


Le processus cr e e e (le ls) est un clone (copie conforme) du processus cr eateur (le p` ere), ` a lexception des di erences suivantes : PID (du p` ere et du ls) di erent, valeur retourn ee par lappel :
valeur retourn ee au ls : 0 valeur retourn ee au p` ere : PID du ls en cas derreur : -1
ENOMEM : Impossible dallouer assez de m emoire pour copier la table des pages du p` ere et dallouer une structure de t ache pour le ls. EAGAIN : Impossible de trouver un emplacement vide dans la table des processus.
26/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Cr eation dun processus (suite)

Tous les processus - sauf le processus didentication 0 (le main), sont cr e es par un appel syst` eme ` a fork : Le processus qui appelle le fork est appel e processus p` ere ; Le nouveau processus cr e e par un fork est appel e processus ls ; Tout processus a un seul processus p` ere ; Tout processus peut avoir z ero ou plusieurs processus ls.

27/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Fork() : exemple
main () { int pid; switch (pid = fork()) { case {1: /* fork echoue */ perror(appel fork a echoue); exit(1); case 0: /* valeur retourn ee au processus-fils */ printf(Fils: PID = %d\n, getpid()); break; default: GUINKO Tonguim Ferdinand Processus sous LINUX

28/50

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exit() : terminaison dun processus


Les 4 situations darr et dun processus : Arr et volontaire Ces 2 situations de sortie volontaire sont provoqu ees par une instruction sp ecique du processus (exit sous LINUX) avec un code de sortie qui correspond soit a une sortie normale soit a une sortie avec erreur. Sortie normale sans erreur (volontaire) ; Sortie normale avec erreur (volontaire).

29/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exit() : terminaison dun processus (suite)

Arr et involontaire Ces 2 situations sont provoqu ees par le syst` eme dexploitation qui arr ete imm ediatement le processus en cours soit parce quil a commis une infraction soit parce quun autre utilisateur ayant des droits plus elev es ` a envoy e un appel syst` eme de type kill. Le processus commet une erreur fatale (involontaire) ; Le processus est tu e par un autre processus (involontaire).

30/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exit() : terminaison dun processus (suite)

Certains processus actifs en permanence lorsque le syst` eme est en marche, tels que les d emons ne se terminent pas.

31/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exit() : terminaison dun processus (suite)


void exit (int status) Termine lex ecution dun processus : le param` etre status est un code de terminaison, qui est fourni au processus p` ere
(convention : status = 0 indique une terminaison normale) ;

Lappel exit(...) fait passer le processus dans l etat zombie ; il restera dans cet etat jusqu` a ce que son processus p` ere ait lu le status. Cest seulement ` a ce moment que le processus est termin e et dispara t compl` etement du syst` eme ; Si le p` ere dun processus p se termine, alors p est adopt e par le processus init (cest-` a-dire que init devient le p` ere de p) ;
32/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Wait() : suspension dun processus


pid t wait(int *status) Suspend lex ecution du processus jusqu` a ce quun de ses ls se termine Exemple : retval = wait(&status) Si le processus na aucun ls, lappel se termine instantan ement, et retourne la valeur 1 Sil existe des ls, mais aucun dans l etat zombie, lappel est bloquant. D` es quun ls est dans l etat zombie, lappel se termine et retourne le PID de ce ls ; status contient le code de terminaison du ls (param` etre de lappel exit() du ls).
33/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exec() : changement du segment de code


Les compilateurs nous permettent de cr eer des chiers ex ecutables. Ces chiers ont le format suivant qui permet au noyau de les transformer en processus : Une en-t ete qui d ecrit lensemble du chier ; La taille ` a allouer pour les variables non initialis ees ; Une section TEXT qui contient le code (en langage machine) ; Une section de donn ees (DATA) cod ee en langage machine qui contient les donn ees initialis ees ; Eventuellement dautres sections : table des symboles pour le d ebogeur, Images, ICONS, etc ; Pour plus dinformations se reporter au manuel a.out.h sur la machine.
34/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exec() : changement du segment de code (suite)


int exec (char *path, char *argv[]) Lappel syst` eme exec : Compl` ete la cr eation du processus en fournissant le code qui est propre ` a ce nouveau processus ; Change lex ecutable du processus courant en chargeant un nouvel ex ecutable ; Eet de exec :
r einitialise la pile ; r einitialise la zone data. La zone U nest (presque) pas touch ee (uid et gid eectifs, et handlers des signaux) et les variables denvironnement restent inchang ees (sauf dans la troisi` eme variante) ;
35/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Exec() : changement du segment de code (suite)


Path est le nom du chier contenant le code ` a ex ecuter ; Argv[] est la liste des arguments ` a passer au code ` a ex ecuter ; La 1` ere instruction ex ecut ee apr` es execv est la 1` ere instruction du code d esign e par le param` etre path ; Variantes : selon le mode de passage des arguments (vecteur ou liste), selon la pr esence ou non de largument path, selon le passage ou non dun nouvel environnement au processus ; Pas de retour de lappel, sauf si lappel echoue.

36/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Appels syst` emes li es ` a lidentication dun processus


PID, PPID, PGRP
getpid(), getppid(), getpgrp() setpgrp()

UID, EUID
getuid(), getruid(), geteuid() setuid(), setruid(), seteuid(), setreuid()

GID, EGID
getgid(), getrgid(), getegid() setgid(), setrgid(), setegid(), setregid()
37/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Identication dun processus


Un processus est identi e de mani` ere unique par un num ero PID : Process IDentier ; Le processus de PID=0 est cr e e au d emarrage de la machine. Ce processus a toujours un r ole sp ecial pour le syst` eme (surtout pour la gestion de la m emoire) ; Le processus z ero cr ee, gr ace ` a un appel de fork(), le processus init dont le PID est egal ` a 1; Ce processus de PID=1 est lanc etre de tous les autres processus (le processus 0 ne r ealisant plus de fork()) et cest lui qui accueille tous les processus orphelins de p` ere (ceci an de collecter les information ` a la terminaison de chaque processus).
38/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Identication dun processus

La commande ps donne la liste des processus en cours dex ecution (voir man ps) ; La fonction getpid() indique le num ero du processus qui lex ecute. #include <sys/types.h> /* data types */ #include <unistd.h> /* standard symbolic constants and types */ pid_t getpid(void);

39/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Hi erarchie des processus

Lorsquun processus parent cr ee un ou plusieurs processus enfant(s), les enfants restent li es dune certaine mani` ere aux parents ; Comme les enfants peuvent eux-m emes donner naissance a des enfants, on peut avoir toute une arborescence ou hi erarchie de processus li es entre eux :

40/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Hi erarchie des processus (suite)

41/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Hi erarchie des processus (suite)


Fonctions utiles getppid() : obtenir le num ero du p` ere getuid() : obtenir le num ero dusager (auquel appartient le processus)

#include <sys/types.h> /* data types */ #include <unistd.h> /* standard symbolic constants a pid_t getppid(void); uid_t getuid(void);

42/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Processus interractifs
Initi es par, et control es par un terminal ; Les processus interactifs peuvent etre execut es en premier ou en arri` ere plan ;
Les processus interactifs sex ecutant en premier plan sont ceux qui demeurent li es au terminal et communiquent directement avec lui. Exemple : saisir une commande et attendre la r eponse du terminal signie que ce processus interactif est de premier plan ; Lorsquun processus de premier plan sex ecute, il est le seul ` a pouvoir recevoir des donn ees en entr ee du terminal. Exemple : ex ecution de la commande di sur 2 larges chiers. Il est impossible dex ecuter une autre commande dans le m eme terminal, ` a moins de tuer le processus courant avec la commande kill|ctrl+c.
43/50 Tonguim Ferdinand Processus sous LINUX Le contr oleur GUINKO des processus peut d eplacer un processus du

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Processus Avant | Arri` ere plan : exemple


Commande xload : permet dacher de fa con graphique, le load average du processeur. charge moyenne du syst` eme. une mesure de la quantit e de travail que fait le syst` eme durant la p eriode consid er ee Le load average est le nombre de processus pr ets ou actifs sur un intervalle de temps ; Charge moyenne du syst` eme ; Une mesure de la quantit e de travail que fait le syst` eme durant la p eriode consid er ee.

44/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Processus Avant | Arri` ere plan : exemple (suite)

En mode commande : vi /proc/loadavg. Le premier chire est une moyenne de la charge calcul ee sur une minute. Le second chire est calcul e sur cinq minutes, et le troisi` eme sur quinze minutes. Il est un tr` es bon indicateur de la (sur)charge de travail dun syst` eme, mais ne permet pas den identier la cause.

45/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

xload : le prompt ne r eappara t pas apr` es lex ecution du programme ; xload & : met le programme en ex ecution, et en arri` ere plan ; xload ... supposons que nous ayons oubli e de pr eciser le caract` ere & ; ctrl+z suspend le programme ; bg r eactive le programme et le met programme en arri` ere plan ;

46/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Processus batch

Les processus Batch ne sont associ es ` a aucun terminal.

47/50

GUINKO Tonguim Ferdinand

Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

D emons (Daemons)
Les d emons sont des processus serveurs, le plus souvent initialis es au d emarrage du syst` eme ; Ils fonctionnent continuellement tant que le syst` eme est en etat de fonctionnement ; Les d emons veillent en arri` ere plan jusqu` a ce quun processus r eclament leur service. Exemple : inet, cron, apache2, dhcp etc. Le terme daemon semble etre introduit en 1963 par les concepteurs de CTSS du MIT, en r eponse au dragon, terme employ e par les concepteurs dITS. Le retro-acronyme Disk And Execution MONitor (moniteur de disque et dex ecution) a et e invent e pour justier le terme daemon apr` es quil fut devenu populaire.
48/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Attributs des processus

S: etat du processus, S Sleeping, R Runnable UID : num ero de lutilisateur PID : num ero unique du processus PPID : num ero du processus p` ere
49/50 GUINKO Tonguim Ferdinand Processus sous LINUX

Compilateur gcc et langage C Rappels sur lordonnancement des processus Les processus sous LINUX

G en eralit es Appels syst` emes li es aux op erations sur les processus Appels syst` emes li es ` a lidentication dun processus Hi erarchie des processus Processus interractifs Processus batch D emons Attributs des processus

Attributs des processus (suite)

PRI : priorit e du processus ADDR : ladresse m emoire du processus SZ : taille de limage m emoire du processus WCHAN : ladresse de l ev` enement si processus en attente TIME : dur ee de lex ecution du processus CMD : nom de la commande ` a lorigine de la cr eation du processus

50/50

GUINKO Tonguim Ferdinand

Processus sous LINUX