Вы находитесь на странице: 1из 64

Systmes

dExploitation
Licence Informatique 2me Anne
2015-2016

Gestion des Processus

Introduction
Un processus est un programme en excution
Un processus a besoin de ressources : du temps
CPU, de la mmoire, des fichiers, des devices dI/O pour

accomplir sa tche
Le systme dexploitation est responsable des activits

suivantes en connection avec la gestion des processus :


Cration et suppressions de processus
Suspension et redmarrage de processus
Fourniture de mcanismes pour :
Synchronisation de processus
Communication entre processus

Problme:
Comment grer lexcution de plusieurs

processus sur une seule UCT


Un processus sera
parfois en excution sur lUCT,
parfois en attente dune E/S,
parfois en attente de lUCT

Cration et synchronisation de processus

En UNIX, le fork cr un processus identique au pre, except son pid


exec peut tre utilis pour excuter un nouveau programme

Exemples de processus systme dans UNIX


init est cr au lancement du systme
assure lexistence dun processus pour chaque
terminal de commandes
il le fait en invoquant la commande getty
processus pre de tous les processus shells crs
par lutilisateur
cron lance des dates spcifies des commandes

particulires
lpsched assure l'ordonnancement des requtes
d'impression
fork() cre un processus fils identique son pre

Exemples de Commandes shell


Quelques commandes simples :
date ; cal
Date; calendrier
who
Qui est connect?
logname; pwd
Qui suis je?; O suis
je ?
tty
nom du terminal
passwd
Changer le mot de passe

Etat dun processus


Au fur et mesure de son excution, un processus

change dtat :
New:

le processus est en cours de cration

Running: le processus est en train dtre excut par lUC


Waiting: le processus est en train dattendre un

vnement (p.ex. la fin dune opration dE/S)


Ready: le processus est en attente de passer en running

(gestion du scheduler)
Terminated: le processus a termin son excution

Ordonnanceur UCT
Une UCT dans un ordi est une ressource qui peut

tre affecte tantt un processus, tantt un


autre
Quand une UCT se libre, un programme est

invoqu qui dcide quel processus lui sera affect


Ce programme est parfois appel gestionnaire de

tches, task manager, etc.


Nous lappellerons ordonnanceur UCT

Diagramme de transition dtats


dun processus

Ordonnanceur = angl. scheduler

tats Nouveau, Termin:

Nouveau

Le SE a cr le processus

mais ne sest pas encore engag excuter le


processus (pas encore admis)

a construit un identificateur pour le processus


a construit les tableaux pour grer le processus

pas encore allou des ressources

La file des nouveaux travaux est souvent appele


spoule travaux (job spooler)

Termin:

Le processus nest plus excutable, mais le SE est


encore en train de nettoyer ses donnes

Transitions de processus

Prt Excution

Lorsque lordonnanceur UCT choisit un processus pour excution

Excution Prt

Premption: Rsultat dune interruption cause par un vnement


indpendant du processus

Il faut traiter cette interruption, donc le processus excutant


perd lUCT
Le processus puis temps dUCT (minuterie-temporisation)
Un autre processus prt devient urgent et doit tre excut

Transitions de processus

Excution Attente

Lorsquun processus fait un appel de systme


(interruption cause par le processus lui-mme)

initie une E/S: doit attendre le rsultat


a besoin de la rponse dun autre processus

Attente Prt

lorsque l'vnement attendu se produit

Ch.4

13

Commutation de processus
et
Process Control Block

Sauvegarde dinformations de
processus
Un processus excute sur lUCT de faon

intermittente
Chaque fois quun processus reprend lUCT
(transition prt excution) il doit la reprendre
dans la mme situation o il la laisse (mme
contenu de registres UCT, etc.)
Donc au moment o un processus sort de ltat
excution il est ncessaire de sauvegarder ses
informations essentielles, quil faudra rcuprer
quand il retourne cet tat
15

PCB = Process Control Block:


Reprsente la situation actuelle dun processus, pour le reprendre
plus tard

Registres UCT

16

Process Control Block (PCB)


pointeur: les PCBs sont rangs dans des listes

enchanes ( voir)
tat de processus: prt, exec, attente
compteur programme: le processus doit reprendre
linstruction suivante
autres registres UCT

Accumulateur etc.

bornes de mmoire
fichiers quil a ouvert
etc., v. manuel
17

O se trouve le BCP
Puisque le BCP contient des informations

critiques pour le processus, il est plac dans


une rgion de la mmoire centrale interdite
daccs par les utilisateurs. Dans certains SE
le BCP est plac au dbut de la pile noyau du
processus puisque cest une zone protge.
Lexistence dun processus est forcment
manifeste par la cration dun BCP
Un changement de contexte sopre lorsquun
nouveau processus reprend lexcution

Table des processus


Pour mettre en uvre le modle des

processus, le SE gre une table des processus


dont chaque entre correspond un
processus.
Table des codes
PCB1

..
P1

PCB1

P2

PCB2

P3

PCB3

.
Table des
processus
rsidente en
mmoire

Pointeur vers
code
.

PCB2

..
Compteur
ordinal
..

chargs en
mmoire
Pointeur
vers code

Commutation de processeur
Aussi appl commutation de contexte ou context switching

Quand lUCT passe de lexcution dun

processus P0 lexcution d`un proc P1, il faut


mettre jour et sauvegarder le PCB de
P0
reprendre le PCB de P1, qui avait t

sauvegard avant
remettre les registres dUCT tels que le
compteur dinstructions etc. dans la
mme situation qui est dcrite dans le
PCB de P1
Ch.4

20

Commutation de processeur (context


switching)

inactif?

Nous faisons lhypothse que seulement 2 procs soient


21
actifs

Rle du matriel et du logiciel dans


le traitement dinterruptions
MATRIEL

Signal dinterruption gnr

UCT termine linstruction courante


et dtecte interruption
Registres dUCT sont
sauvegards dans la pile des interr.
UCT saute ladresse trouve dans
le vecteur dinterruption

LOGICIEL
Infos
sauvegardes dans PCB
Le code de traitement de
linterruption est excut
Lordonnanceur choisit un
processus qui est prt
Les infos relatives ce processus
sont rtablies partir de son PCB
Les registres dUCT sont rechargs
avec ces infos
LUCT reprend lexec de ce proc

dispatcher

22

Le PCB nest pas la seule


information sauvegarder
Il faut aussi sauvegarder ltat des donnes

du programme
Ceci se fait normalement en gardant limage
du programme en mmoire primaire ou
secondaire (RAM ou disque)
Le PCB pointera cette image

Ch.4

23

La pile dun processus


Quand

un processus fait appel une


procdure, une mthode, etc., il est
ncessaire de mettre dans une pile ladresse
laquelle le processus doit retourner aprs
avoir termin cette procdure, mthode,
etc.

Aussi on met dans cette pile les variables

locales de la procdure quon quitte, les


paramtres, etc., pour les retrouver au
retour
24

La pile dun processus


Chaque lment de cette pile est appel stack

frame ou cadre de pile


Donc il y a normalement une pile dadresses de
retour aprs interruption et une pile dadresses de
retour aprs appel de procdure
Ces
deux piles fonctionnent de faon
semblable, mais sont indpendantes
Les informations relatives ces piles (base,
pointeur) doivent aussi tre sauvegardes au
moment de la commutation de contexte

La Pile dun processus


P

Appel A

Appel B

B
Donnes B

Donnes A

Donnes P
PILE
26

Pointeurs de pile processus


sauvegarder: base et borne

pointeur de borne

cadre 4
cadre 3
cadre 2

pointeur de base

cadre 1

Les pointeurs sont souvent des registres dUCT donc il sont sauvegards dans le PCB
27

Files dattentes de
processus

28

Files dattente
Les ressources dordi sont souvent limites par

rapport aux processus qui en demandent


Chaque ressource a sa propre file de processus en

attente
Quand il y a interruption sur une ressource (pex fin

dE/S) les files permettent aussi de dterminer quel


processus doit tre notifi
29

Files dattente
En changeant dtat, les processus se

dplacent dune file l`autre


File prt: les processus en tat
prt=ready
Files associs chaque unit E/S
etc.

Ce sont les PCBs qui sont dans les files dattente


(dont le besoin dun pointeur dans le PCB)

file prt

Nous ferons lhypothse que le premier processus dans une file est celui qui utilise la
ressource: ici, proc7 excute, proc3 utilise disque 0, etc.

31

Une faon plus synthtique de dcrire


la mme situation

prt 7 2
bandmag0
bandmag1
disq0 3 14 6
term0 5
32

Les PCBs ne sont pas dplacs


en mmoire pour tre mis dans
les diffrentes files:
ce sont les pointeurs qui
changent.

term. unit 0

. . .

PCB2

PCB3

disk unit 0

PCB4

PCB5

ready

PCB6

PCB7

. . .

PCB14

33

Trois structures de donnes essentielles


pour la gestion des processus
Les structures de donnes suivantes sont relies mais
distinctes dans leur utilisation et contenu
Pile propre chaque processus pour grer les appels-

retours aux procdures, mthodes, fonctions etc.


Pile du SE pour grer les interruptions et retours des

interruptions
Liste des PCBs actifs dans le systme un moment donn,

est partitionne en plusieurs listes dattente, une pour


chaque ressource qui peut tre affecte un proc
34

Trois structures de donnes essentielles


pour la gestion des processus
Chacune de ces piles ou listes doit
sauvegarder des informations pour pouvoir
retourner
la bonne place
du bon processus
avec le bonnes donnes
aprs avoir fait dautres traitements

Ces listes sont


diffrentes!
Pile propre chaque processus pour grer les

appels-retours aux procdures, mthodes,


fonctions etc.
Cette pile doit exister dans tout systme qui
admet ces appels, mme si le systme nadmet
ni les interruptions, ni la multiprogrammation
Elle est gre par le systme dexcution du
programme compil

36

Ces listes sont


diffrentes!
Pile du SE pour grer les interruptions et retours

des interruptions
Cette pile doit exister dans tout systme qui
admet des interruptions, mme sil nadmet pas
de multiprogrammation
Elle est gre directement par le matriel

Ces listes sont


diffrentes!
Liste des PCBs actifs dans le systme
Ncessaire pour la multiprogrammation
Elle est gre par le SE

Ordonnanceurs
(schedulers)

39

Ordonnanceurs
(schedulers)
Programmes qui grent lutilisation de ressources de

lordinateur
Trois types dordonnanceurs :
court terme = ordonnanceur processus: slectionne quel

processus doit excuter la transition

prtexcution

long terme = ordonnanceur travaux: slectionne quels

processus peuvent excuter la transition nouveau prt


(vnement admitted) (de spoule travaux file prt)
moyen terme: nous verrons

40

Dispatcheur
Programme qui, faisant suite la dcision de

lordonnanceur, effectue la commutation de


contexte
Souvent considr partie de lordonnanceur

Ch.4

41

Ordonnanceur travaux = long terme


et ordonnanceur processus = court terme
Ordonnanceur travaux

Ordonnanceur processus

42

Ordonnanceurs
L`ordonnanceur court terme est excut

trs souvent (millisecondes)


doit tre trs efficace

L`ordonnanceur long terme doit tre

excut beaucoup plus rarement: il contrle le


niveau de multiprogrammation
Un des ses critres pourrait tre la bonne

utilisation des ressources de lordinateur


P.ex. tablir une balance entre travaux lis
lUCT et ceux lis lE/S
43

Ordonnanceur moyen
terme
Le manque de ressources peut parfois forcer

le SE suspendre des processus


ils seront plus en concurrence avec les autres

pour des ressources


ils seront repris plus tard quand les ressources
deviendront disponibles

Ces processus sont enlevs de mmoire

centrale et mis en mmoire secondaire, pour


tre repris plus tard
`swap out`, `swap in`, va-et-vien
Ch.4

44

Ordonnanceurs long, court et moyen terme


moyen

long

court

45

Programmation en C sous
UNIX

46

Manipulation de processus.
Les commandes fork(),wait().
Communication inter-processus.
Les signaux

Les processus
Cration dun processus.
Lorsquon entre une commande, le shell lance un
processus pour lexcuter.
Le shell attend la fin du processus, puis attend la
commande suivante.
Arborescence de processus.
Chaque processus a un pre, celui qui la lanc.
Le numro du processus du pre est le PPID.
Un processus pre peut avoir plusieurs processus fils
Sous UNIX, un premier processus init est crer avec

un PID de 1. Anctres de tous les processus.

Cration de processus
Duplication dun processus.
Seule faon de crer un processus bas niveau.
Appel systme fork()
Cre une copie complte du processus, fils de
ce processus.
Le fils change de programme en appelant
exec().
La fonction exec() remplace le code et ses
donnes par celui dune nouvelle commande.

Excution dune
commande
Excution dune commande:
Le shell se duplique avec fork(). On a alors deux
processus shell identiques.
Le shell pre attend la fin du processus fils avec
wait().
Le shell fils remplace son excutable par celui de
la commande tar avec exec()
La commande tar sexcute. Lorsquelle se
termine, le processus fils disparait.
Le shell pre est ractiv et attend la commande
suivante.

La primitive int fork()


Lappel a fork() duplique le processus.
Lexcution continue dans les deux processus.
Valeur retourne par fork():
Dans le processus pre, retourne le PID du fils.
Dans le processus fils, retourne 0.
Si le fork choue, renvoie -1.
getpid() et getppid()
getpid() retourne le PID du processus.
getppid() retourne le PID du pre du processus.

Exemple avec fork()


#include <stdio.h>
#include <unistd.h>
int main()
{
int pidfils=fork();
if(pidfils!=0)
{
printf("Je suis le pre.");
printf("PID de mon fils:%d\n",pidfils);
}
else
{
printf("Je suis le fils.");
printf("Mon pid est:%d\n",getpid());
}
}

Exemple avec fork()


Rsultat: forksimple
Je suis le pre. PID de mon fils:2864
Je suis le fils. Mon PID est:2864
Peut aussi apparatre dans lordre inverse.

wait
La primitive wait( &Etat ) permet un

processus dattendre la fin dun de ses fils.


Si pas de fils ou erreur, retourne -1.
Sinon, retourne le PID du fils qui sest termin.

wait
Quand un processus se termine, le signal

SIGCHILD est envoy son pre. La rception


de ce signal fait passer le processus pre de
l'tat bloqu l'tat prt. Le processus pre
sort donc de la fonction wait.
Chaque fois qu'un fils se termine le processus

pre sort de wait, et il peut consulter Etat


pour obtenir des informations sur le fils qui
vient de se terminer.

exit
La primitive exit permet de terminer le

processus qui lappelle.


void exit(int status)
status : permet dindiquer au processus pre

quune erreur sest produite.


status=0 si pas derreur.

La primitive sleep
Similaire la commande shell sleep
int sleep(int seconds)
Le processus qui appelle sleep est bloqu
pendant le nombre de secondes spcifi.
Diffrence avec wait()
wait() bloque jusqu la fin du fils, alors que
sleep() bloque un temps spcifi.

Exemple
int pidfils=fork();
if(pidfils!=0)
{
printf("Je suis le pre.\n");
if (wait(&status)>0)
printf("mon fils a termin.\n");
}
else
{
printf("je suis le fils.\n");
sleep(2);
printf("arrt du fils.\n");
exit(0);
}

Rsultat
Rsultat
$ fork
Je suis le pre
je suis le fils
arrt du fils
mon fils a termin
$

Les signaux asynchrones


Les signaux permettent dindiquer un

processus quun certain vnement sest


produit.
Il existe 32 types de signaux prdfinis.
Un signal peut-tre envoy par un processus ou

par le systme (lorsquune erreur se produit).

Les signaux asynchrones


Traitement des signaux.
Les signaux reus peuvent tre traits par le
processus: une fonction traitante peut tre
automatiquement appele ds rception dun
signal.
Sauf pour le signal numro 9 qui entraine
toujours la fin du processus.

Envoyer des signaux


La fonction kill : int kill ( int pid, int signum)
kill() peut tre utilis pour envoyer n'importe
quel signal n'importe quel processus ou groupe
de processus.
Si pid est positif, le signal sig est envoy au
processus pid.
Si pid vaut zro, alors le signal sig est envoy
tous les processus appartenant au mme groupe
que le processus appelant.
Si pid vaut -1, alors le signal sig est envoy
tous les processus sauf le premier (init) dans

Envoyer des signaux


Liste des signaux:
9: SIGKILL, fin du processus.
10: SIGUSR1, dfinissable par lutilisateur.
18: SIGCONT, reprise dun processus stopp.
19: SIGSTOP, stopper un processus.

Envoyer des signaux


Depuis le clavier:
Ctrl-C.
Envoie un signal SIGINT au processus qui

sexcute.
Cela entraine par dfaut la fin du processus.

Ctrl-Z:
Envoie un signal SIGTSTP au processus qui
sexcute.
Par dfaut, lexcution du processus est
suspendu.

Вам также может понравиться