Académique Documents
Professionnel Documents
Culture Documents
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Eric.Leclercq@u-bourgogne.fr
D
epartement IEM
http://ufrsciencestech.u-bourgogne.fr
http://ludique.u-bourgogne.fr/leclercq
Plan
1 La notion de processus
La gestion des ressources
Definitions
La commutation de contexte
2 Implantation du mecanisme multitaches
Multitache / multi-utilisateurs
Classification des processus
3 Filiation des processus
Modes de lancement des processus
Les processus legers
Le cycle de vie des processus
4 API thread de Java
5 La communication inter-processus
Le differents modes de communication
6 Le partage de ressources entre processus
Notion de processus concurrents, exclusion mutuelle
7 La synchronisation des processus
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Definitions
Definition : (Processus)
Un processus est un programme en execution
La commutation de contexte
La commutation de contexte
Le multit
ache coop eratif : chaque processus doit explicitement
permettre `a un autre dacceder au processeur
ce mecanisme a ete utilise dans les SE Microsoft Windows
jusqu`a Windows 3.11 et dans Mac OS jusqu`a Mac OS 9
cette approche simplifie larchitecture du SE mais presente
plusieurs inconvenients :
si un des processus ne passe pas la main `a un autre processus,
le syst`eme entier peut etre bloque ;
le partage des ressources (CPU, memoire, disque, etc.) peut
etre inefficace (IO bound)
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
La commutation de contexte
Le multit ache preemptif : le processeur signale au syst`eme
dexploitation que le processus en cours dexecution doit etre mis
en sommeil pour permettre lexecution dun autre processus.
` la difference du multitache cooperatif, la commutation de
A
contexte est transparente.
Dune facon generale la strategie de commutation choisie `a un
impact enorme sur lutilisation des ressources.
Une question subsiste : comment peut-on realiser la commutation
de contexte dans le mode preemptif ?
Understanding the Linux Kernel, Third Edition, Daniel P. Bovet,
Marco Cesati, Oreilly, November 2005, pp. 942
Linux System Programming, Robert Love, Oreilly September 2007,
pp. 388
De nombreux chapitres disponibles en preview sur le site
http://www.oreilly.com
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Multitache / multi-utilisateurs
Clonage
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Exemple :
id-fils=fork()
if (id-fils==0)
traitements relatif au fils
else
traitements relatif au p`
ere
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Exemple :
...
pid = fork();
switch(pid) {
case -1: /* erreur dans fork() */
fprintf(stderr,"error %d in fork: %s\n",errno,sys_errlist[errno]);
exit(errno);
case 0: /* on est dans le fils */
fprintf(stdout,"Dans le fils, pid = %d\n",getpid());
sleep(20);
break;
default: /* on est dans le pere */
fprintf(stdout,"Dans le pere, pid = %d\n",getpid());
sleep(20);
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
pile dappel
Les mod`eles de thread sont implantes par les biblioth`eques dans les
langages de programmation avec deventuelles abstractions:
Dans la langages imperatifs : C, C++, Java, etc.
Dans les langages declaratifs :
Scala, http://www.scala-lang.org/
Erlang, http://www.erlang.org/
Clojure, http://clojure.org/
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
code objet
(byte code)
Interprteur Java
Systme hte
Interaction de la MV avec le SE
Processus A a Processus A
a segment partag
Processus B
Processus B
Noyau a Noyau
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Note :
Lors de lutilisation de threads, la zone de memoire utilisee par le
parent et partagee automatique avec les thread crees.
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Objet Java
BoundedBuffer
rfrence rfrence
Producteur Consommateur
Definition : (Ressource)
La notion de ressource dans les SE designe tout element qui est
utile au deroulement dun processus
La notion verrouillage
La notion verrouillage
Les semaphores
Les moniteurs
Hoare (1974) `a propose une solution de plus haut niveau basee sur
le concept de moniteur.
il sagit dune construction specifique au langage de
programmation ;
un seul processus `a la fois peut executer une fonction du
moniteur ;
les moniteurs sont implantes dans le langage Java via la notion
de methodes definies avec le modificateur synchronized
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Commutation
de contexte
... ...
1 Verouiller(R1) 2 Verouiller(R2)
Verouiller(R2) Verouiller(R1)
utiliser R1 et R2 utiliser R1 et R2
Dverouiller(R2) Dverouiller(R1)
Dverouiller(R1) P1 P2 Dverouiller(R2)
1 2
R1 R2
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Synchronisation
Paradigme dacteur
Definition
Un acteur (actor ) est une abstraction logicielle qui implemente un
protocole de passage de message permettant de gerer la
concurrence.
Paradigme dacteur
Exemple
Principes :
Definir des messages auxquels lobjet repond
Scala propose des case classes similaire aux classes avec
quelques ajouts :
methodes pour effectuer du pattern matching
pas dutilisation de new, le compilateur gen`ere les methodes de
base (getter, setter, constructeurs)
pas degalite de reference mas une egalite de contenu
Deux messages differents : Status et HotSwap.
1 // triggers the status method
2 case object Status
3 // triggers hotswap - carries the new server to be hotswapped to
4 case class HotSwap ( s : Server )
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
1 $ scala - cp .
2
3 scala > import hotswap . _
4 import hotswap . _
5
6 scala > val actor = ServerActor . actor
7 starting actor ...
8 actor : hotswap . ServerActor = hotswap . Se r ve r Ac to r @5 2 8e d7
9
10 scala > actor ! Status
11 current server : hotswap . ServerOne@226445
12
13 scala > class ServerTwo extends Server {
14 | override def status = println ( " hotswapped server : " + this )
15 | }
16 defined class ServerTwo
17
18 scala > actor ! HotSwap ( new ServerTwo )
19 hot swapping code ...
20
21 scala > actor ! Status
22 hotswapped server : l i n e 5 $ o b j e c t $ $ i w $ $ i w $ $ i w $ S e r v e r T w o @ b 5 5 6
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
CPU GPU
ALU un multiprocesseur
Unit de ALU
ALU
Controle
ALU
CACHE
RAM RAM
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Carte GPU
CPU GPU
ALU
Unit de ALU
ALU
Controle
ALU
CACHE
RAM RAM
La notion de processus Implantation du m
ecanisme multit
aches Filiation des processus API thread de Java IPC Partage de
Exemple