Professional Documents
Culture Documents
Mcanismes dexcution
F. Boyer, Laboratoire Lig
Fabienne.Boyer@imag.fr!
F. Boyer, UJF!
1!
Cours de E. Berthelot!
http://www.iie.cnam.fr/EBerthelot/!
Cours de A. Sylberschatz!
www.sciences.univ-nantes.fr/info/perso/permanents/attiogbe/SYSTEME/
CoursSysteme.html!
Cours de A. Griffaut!
http://dept-info.labri.fr/~griffault/Enseignement/SE/Cours!
!
!
F. Boyer, UJF!
2!
Notion de processus!
Espace isol!
Isolation des fautes!
Isolation mmoire!
F. Boyer, UJF!
3!
Contexte dexcution!
F. Boyer, UJF!
4!
Modes dexcution!
Mode utilisateur!
Accs rduit lespace dadressage propre au processus !
Instructions limites!
Mode superviseur!
Toutes les instructions autorises et toute la mmoire accessible !
Superviseur # SuperUser (shell)!
F. Boyer, UJF!
5!
Cycle de vie!
inexistant
termin
cration
lu
prt
prempt
fin attente
bloqu
actif
fin exc.
6!
!
Cration / destruction!
Activation / suspension!
Suspension momentane!
Attente de la terminaison dun fils!
Commutation (opration de bas niveau)!
F. Boyer, UJF!
7!
!
Files de processus !
File des prts (Ready queue)!
File des bloqus sur E/S (Device queues) !
File des bloqus sur conditions de synchronisation (Blocked
queue)!
...!
Un processus actif!
F. Boyer, UJF!
8!
Etat processus,
priorit,.. "
Identifications "
PCB (Process Control Block):!
informations requises pour
permettre au SE de grer un
processus!
!
Table des Processus:!
PCB [ MAX-PROCESSUS ]!
!
!
F. Boyer, UJF!
9!
Un processus qui cre dautres processus pour excuter des commandes (sauf
pour les commandes built-in)!
F. Boyer, UJF!
10!
Exemple du shell!
xterm 1!
[initialisation des variables denvt partir du fichier .bashrc]!
env!
USERNAME=fabienne"
PATH=.:/usr/local/bin:/usr/bin:/sbin:/bin"
PWD=/home/fabienne"
PATH=$PATH:/usr/lib/jvm/java-6-sun/bin!
CLASSPATH=.!
env!
USERNAME=fabienne"
PATH=.:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-sun/bin"
PWD=/home/fabienne"
CLASSPATH=."
>xterm &!
!
.bashrc!
USERNAME=fabienne!
PATH=.:/usr/local/bin:.!
PWD=/home/fabienne!
..!
xterm 2!
[initialisation des variables denvt partir du fichier .bashrc]!
env!
USERNAME=fabienne"
PATH=.:/usr/local/bin:/usr/bin:/sbin:/bin"
CLASSPATH et PATH ne sont pas hrits dans le shell fils!
PWD=/home/fabienne"
Il aurait fallu les exporter dans le pre pour ce faire!
!
!
!
F. Boyer,
UJF!
11!
Cours de Systmes dExploitation RICM4!
Allocation du processeur au
processus!
Ordonnanceur (scheduler) est la partie du
F. Boyer, UJF!
12!
Stratgies!
Choix du quantum!
Petit ou grand!
Gestion de priorits!
Processus systmes!
Processus utilisateurs interactifs!
Processus utilisateurs peu interactifs!
F. Boyer, UJF!
13!
Algorithmes dordonnancement!
Multiprogrammation!
!
FIFO / FCFS !
Efficace (utilisation maximale de lUC) et quitable!
!
F. Boyer, UJF!
14!
Shortest-Job-First (SJF)!
excution!
Excute en priorit le processus dont la dure est la
plus courte!
Deux possibilits !
Non premptif !
Premptif (algorithme Shortest-Remaining-Time-First (SRTF))!
Evaluation!
SJF est optimal par rapport au temps de rponse moyen!
Impose de connatre le temps dexcution!
Non quitable!
!
F. Boyer, UJF!
15!
Round Robin!
Principes!
Les processus prts sont dans une file de type FIFO!
Lors dune commutation, le processus le suivant dans la file est lu
(getFirst())!
Le processus prempt sinsre en fin de file (putLast())!
Evaluation!
Efficace (sauf si quantum trop petit)!
Equitable et bon / temps de rponse et rendement (sauf si
quantum trop grand)!
!
F. Boyer, UJF!
16!
Evaluation!
Bon compromis efficacit / rendement!
Temps de rponse bons (travaux interactifs prioritaires)!
Non quitable!
Famine possible !
Les processus de faible priorit peuvent ne jamais s'excuter!
Aging Solution augmenter la priorit d'un processus avec
son ge!
priorits dynamiques!
!
!
F. Boyer, UJF!
17!
Principes!
Mise en oeuvre!
Un paramtre (une dure et un nombre dinterruptions, ou l'ge)
permet daugmenter ou diminuer la priorit des processus!
Ou bien la priorit p est fonction de la fraction de quantum (f)
utilise (p = 1/f)!
Evaluation!
Equitable!
Bon rendement!
Temps moyen de rponse bons!
!
!
F. Boyer, UJF!
18!
Algorithmes dordonnancement
plusieurs niveaux!
mmoire centrale!
!
Certains sont dchargs sur disque, ce qui rend leur activation
plus longue!
!
Le processus lu est toujours pris parmi ceux chargs en
mmoire centrale!
!
En parallle, on utilise un deuxime algorithme
19!
cration
inexistant
prt disque
fin E/S
bloqu
dcharg
lu
prt RAM
charg
interrompu
fin exc.
termin
20!
Au moment de la cration!
Hritage de ltat du pre!
!
!
F. Boyer, UJF!
21!
Notion de thread!
Partage de donnes!
Facilit et efficacit dcriture des applications concurrentes!
!!
F. Boyer, UJF!
22!
A.Sylberschatz!
F. Boyer, UJF!
23!
Exemple threads C!
#define _REENTRANT
#include <stdio.h>
#include <thread.h>
/* thread function */
void * Add_to_Value();
main() {
int i; /* initialize the mutexes and data */
for (i=0; i<5; i++) {
mutex_init(&Data.data_lock[i], USYNC_THREAD, 0);
Data.int_val[i] = 0;
Data.float_val[i] = 0;
}
F. Boyer, UJF!
24!
Exemple threads C!
/* Threaded routine */
void *Add_to_Value(void *arg) {
int inval = (int) arg;
int i;
for (i=0;i<10000;i++){
mutex_lock(&Data.data_lock[i%5]);
Data.int_val[i%5] += inval;
Data.float_val[i%5] += (float) 1.5 * inval;
mutex_unlock(&Data.data_lock[i%5]);
}
return((void *)0);
}
F. Boyer, UJF!
25!
Exemple pthreads!
#include <stdio.h>
#include <pthread.h>
F. Boyer, UJF!
26!
Unit dadressage!
Unit dexcution!
2 notions historiquement couples avec les
!
!
UA
UE!
UA
UE!
F. Boyer, UJF!
27!
Types de threads!
!
Threads User-level !
Threads Kernel-supported!
Solutions mixtes!
F. Boyer, UJF!
28!
Threads user-level!
th1!
th2!
th1!
Gestionnaire de threads!
Processus A!
th2!
th1!
Gestionnaire de threads!
Processus B!
Noyau!
F. Boyer, UJF!
29!
Efficacit (+)!
La commutation de contexte est rapide!
Paralllisme (-)!
Pas de paralllisme rel entre les threads dun EV!
!
30!
Threads kernel-level!
Notion de thread gre par le noyau!
Lorsquun thread se bloque, le noyau alloue le processeur un
autre thread!
Examples: Windows 95/98/NT/2000, Solaris, Tru64 UNIX, Linux, Threads Java (HotSpot)!
!
th1!
th2!
th1!
th1!
th2!
Processus B!
Processus A!
Gestionnaire de threads!
F. Boyer, UJF!
Noyau!
31!
Efficacit (-)!
Commutation plus chre que pour les threads User-level, car
demande un passage en mode noyau.!
F. Boyer, UJF!
32!
F. Boyer, UJF!
33!
User-level threads!
Appel
bloquant!
ordonnanceur!
B"
A"
ordonnanceur!
F. Boyer, UJF!
Processus!
Kernel space !
34!
paralllisme !
Les threads User-level fournissent la capacit davoir
F. Boyer, UJF!
35!
User-level threads!
ordonnanceur!
ordonnanceur!
User space!
Kernel space !
B"
A1" A2"
Kernel-level threads!
ordonnanceur!
F. Boyer, UJF!
36!
Modles de Threads!
Many-to-One
One-to-One
Many-to-Many!
F. Boyer, UJF!
37!
A. Sylberschatz!
F. Boyer, UJF!
38!
F. Boyer, UJF!
39!
Threads Java!
F. Boyer, UJF!
40!
Exemple / threads!
...!
new Thread(new Runnable() {!
public void run() {!
........!
........!
}!
}).start()!
...!
F. Boyer, UJF!
41!