Cours SE
Cours SE
Cours SE
Objectifs du cours :
Lobjectif de ce cours est de prsenter les concepts
fondamentaux des systmes dexploitation. Le systme
UNIX permettra dexpliciter les notions tudies.
Plan :
Introduction
Gestion des processus
Communication inter-processus
Ordonnancement des processus
Les interblocages
Les Entres/sorties
Gestion de la mmoire
Gestion des fichiers
Bibliographie :
Tanenbaum
Les systmes dexlpoitation :conception et mise en uvre.
InterEditions 1989
J. Peterson, A. Silbershatz
Operating system concepts.
Series in computer science addison Wesley 1983
M. Griffiths, M. Vayssade
Architecture des systmes dexlpoitation.
Hermes 1990
A. Mouradi
page 1
$job
$fortran
programme
$load
$run
donnes
$end
page 2
Interface
avec l'utilisateur
Gestion de la mmoire
Allocation du processeur aux processus
A. Mouradi
page 3
PROCESSUS
processus = programme excutable +
ses donnes et sa pile d'excution +
son compteur ordinal +
son pointeur de pile et les autres registres
ELU
2
1
3
PRET
BLOQUE
A. Mouradi
page 4
.
.
A. Mouradi
page 5
A. Mouradi
page 6
Temps dexcution
20
10
A. Mouradi
page 7
A. Mouradi
page 8
NOTION D'INTERRUPTION
A. Mouradi
page 9
2 variables de verrouillage
3 l'alternance
4 l'algorithme de PETERSON
7 les smaphores
8 les moniteurs
9 l'change de messages
A. Mouradi
page 10
P1 P2 P3
4
A. Mouradi
page 11
EXCLUSION MUTUELLE
La partie du programme o il risque davoir
conflit daccs est appele
SECTION CRITIQUE
A. Mouradi
page 12
EXCLUSION MUTUELLE
VARIABLES DE VEROUILLAGE
A. Mouradi
page 13
Processus A
Processus B
Faire toujours
Faire toujours
(2) occup1:=true
(2') occup2:=true
attendre
attendre
section critique
section critique
occup1:=false
occup2:=false
A. Mouradi
page 14
L'ALTERNANCE
Processus B
page 15
L'ALGORITHME DE PETERSON
section non critique
entrer_region
section critique
quitter_region
section non critique
SOLUTION de PETERSON
#define FALSE 0
#define TRUE 1
#define N 2 /* nombre de processus */
int tour /* qui le tour */
int interesse[N] /* tableau initialis FALSE */
entrer_region (process)
int process; /* numro du processus */
{
int autre; /* numro de l'autre processus */
autre = 1-process;
interesse[process]=TRUE;
tour=process;
while (tour==process && interesse[autre]==TRUE) attendre
}
quitter_region (process)
int process;
{
interesse[process]=FALSE;
}
A. Mouradi
page 16
L'ALGORITHME DE PETERSON
Cas o les deux processus sont intresss et appellent
enter-region presque simultanment
Process 0
1
2
3
4
autre = 1-process;
Interesse [process] = TRUE;
tour = process;
while (tour==process && interesse[autre]==TRUE) attendre
autre = 1
interesse[1] = true
tour = 0
autre = 1-process;
Interesse [process] = TRUE;
tour = process;
while (tour==process && interesse[autre]==TRUE) attendre
autre = 0
interesse[0] = true
tour = 1
quitter_region (process)
int process;
{
interesse[process]=FALSE;
}
Lorsque process 0 termine il fait quitter-region(0) et par consquent,
interesse [0] passe false alors process 1 peut alors entrer en S.C.
A. Mouradi
page 17
ret
quitter_region:
mov drapeau,0
ret
A. Mouradi
page 18
Remarques
A. Mouradi
page 19
A. Mouradi
page 20
consommateur()
{while TRUE
{ if (compteur==0) sleep()
retirer_objet
compteur=compteur-1
if (compteur==N-1) /* avant compteur=N */
wakeup(producteur)
}}
A. Mouradi
page 21
consommateur()
{while TRUE
{ if (compteur==0) sleep()
retirer_objet
compteur=compteur-1
if (compteur==N-1) /* avant compteur=N */
wakeup(producteur)
}}
Supposons un instant donn que le buffer est vide et le
consommateur trouve alors 0 dans compteur
A cet instant, le scheduler dcide de suspendre le consommateur et
de relancer le producteur qui met alors un objet dans le buffer et fait
passer compteur de 0 1.
Daprs le programme du producteur, celui-ci va faire un wakeup du
consommateur.
Ce signal wakeup sera perdu car le consommateur ne dormait pas
encore.
A. Mouradi
page 22
LES SEMAPHORES
DOWN(S)
Si S > 0 alors S:=S-1
Sinon s'endormir
UP(S)
page 23
SOLUTION DU PRODUCTEUR-CONSOMMATEUR
AVEC LES SEMAPHORES
consommateur()
{
while TRUE
{
down(plein) /* decrmenter nbre places occupes */
down(mutex) /* entrer en S.C. */
retirer-objet
up(mutex) /* sortir de la S.C. */
up(libre) /* incrmenter nbre places libres */
}
}
A. Mouradi
page 24
LES MONITEURS
A. Mouradi
page 25
monitor Producteur-Consommateur
condition plein,vide;
integer compteur;
procedure mettre;
begin
if compteur=N then wait(plein);
mettre-objet;
compteur:=compteur+1;
if compteur=1 then signal(vide);
end;
procedure retirer;
begin
if compteur=0 then wait(vide);
retirer-objet;
compteur:=compteur-1;
if compteur=N-1 then signal(plein)
end;
compteur:=0;
endmonitor;
procedure producteur;
begin
whileTRUE do
begin
produite_objet;
producteur_consommateur.mettre;
end;
end;
procedure consommateur;
begin
while TRUE do
begin
producteur_consommateur.retirer;
utiliser_objet;
end;
end;
A. Mouradi
page 26
L'ECHANGE DE MESSAGES
A. Mouradi
page 27
modle du producteur-consommateur
avec N messages
#define N 100
producteur()
{ int objet;
message m; /* buffer des messages */
while true
{
produire_objet (&objet)
receive(consommateur,&m)
faire_message(&m,objet)
send(consommateur,&m)
}
}
consommateur()
{
int objet,i;
message m;
for (i=0; i<N ; i++)
send(producteur,&m); /*envoyer m messages vides*/
while TRUE
{
receive(producteur,&m); /*attendre un message*/
retirer_objet(&m,&objet); /*retirer l'objet du message*/
utiliser_objet(objet); /* utiliser objet */
send(producteur,&m); /*renvoyer une rponse vide*/
}
A. Mouradi
page 28
#define N 5
philosophe(i)
int i;
{
while TRUE
{
penser();
prendre_fourchette(i);
prendre_fourchette((i+1)%N);
manger();
poser_fourchette(i);
poser_fourchette((i+1)%N);
}
}
Risque de blocage si tous les philosophes prennent
une fourchette en mme temps
A. Mouradi
page 29
#define N 5
typedef int semaphore /* dfinition de type */
semaphore mutex = 1 /* controle accs S.C. */
philosophe(i)
int i;
{
while TRUE
{
penser();
down(mutex);
prendre_fourchette(i);
prendre_fourchette((i+1)%N);
manger();
poser_fourchette(i);
poser_fourchette((i+1)%N);
up(mutex);
}
}
solution correcte mais non performante
A. Mouradi
page 30
SOLUTION AU PROBLEME
DES PHILOSOPHES
prendre_fourchettes(i)
int i;
{
down(mutex);
etat[i]=FAIM;
test(i);
up(mutex);
down(s[i]);
A. Mouradi
page 31
poser_fourchettes(i)
int i;
{
down (mutex);
etat[i]=PENSE;
test(GAUCHE);
test(DROITE);
up (mutex)
}
test(i)
int i;
{
if (etat[i]==FAIM)&&(etat[GAUCHE]!=MANGE)
&&(etat[DROITE!=MANGE)
{ etat[i]=MANGE; up(s[i]); }
}
A. Mouradi
page 32
redacteur()
{
while TRUE
{
creer_donnees();
down(base);
ecrire_donees();
up(base);
}
}
A. Mouradi
page 33
A. Mouradi
page 34
LES INTERBLOCAGES
A. Mouradi
page 35
A. Mouradi
page 36
exemple
ETAT 0
processus ress. utilises
ress. max
P1
P2
P3
P4
A. Mouradi
page 37
ETAT 1
processus ress. utilises
ress. max
P1
P2
P3
P4
page 38
ETAT 2
ress. max
P1
P2
P3
P4
A. Mouradi
page 39
ALGORITHME DU BANQUIER
POUR PLUSIEURS RESSOURCES
ressources attribues
(ETAT A)
P1
P2
P3
0
1
P: Processus
D: Drouleur
T: table
I: imprimante
R: perforateur
0
ressources exist.
P4
P5
0
0
1
0
E=6342
ressources affect.
A= 5 3 2 2
ressources demandes
ressources disp.
P1
P2
P3
P4
P5
A. Mouradi
D=1020
(E-A)
page 40
A. Mouradi
page 41
P1
P2
P3
P4
P5
P1
P2
P3
P4
P5
A. Mouradi
RA : ressources
attribues
RD : ressources
demandes
page 42
D=1010+1101=2111
P1 peut se terminer
D=2111+3011=5122
P2 peut se terminer
D=5122+0110=5232
P3 peut se terminer
D=5232+1110=6342
P5 peut se terminer
D=D+0000=D
page 43
RA
P
P1
P2
P3
P4
P5
P1
RD
P2
P3
P4
P5
page 44
LES E/S
Les E/S demandes par les utilisateurs sont effectues
via le systme d'exploitation
L'utilisateur demande une opration d E/S en spcifiant
un nom logique du support et c'est le systme
d'exploitation qui:
- s'assure qu'un processus n'utilise que les ressources
qui lui sont alloues,
- prend en charge les caractristiques des dispositifs
d'E/S (disques, disquettes, bande magntique, ...)
Un processus dsirant faire une E/S fait appel un
module du SE en lui transmettant les paramtres qui
prcisent la nature de l'E/S (lecture,criture), la
quantit d'informations transfrer, ...
Le module appel analyse la requte et signale les
erreurs ventuelles (priphrique inexistant,
priphrique non allou, ...)
Si la requte est correcte alors il :
- lance le transfert en excutant des instructions
appropries (pilote),
- bloque le processus demandeur,
page 45
page 46
PILOTE (DRIVER)
A. Mouradi
page 47
des
fonctions graphiques
qui vont
permettre
matriels
ou grce
des
pilotes standards
d'exploitation).
A. Mouradi
page 48
A. Mouradi
page 49
CPU
Mmoire
Contrleur
disque
BUS
Contrleur
imprimante
Liaison
srie
Contrleur
terminal
ENTRELACEMENT ( interleaving )
A. Mouradi
page 50
A. Mouradi
page 51
page 52
page 53
A. Mouradi
page 54
1) les disques
Les disques durs constituent un des lments importants
dans un ordinateur. Un disque est souvent utilis comme
source et destination des traitements.
page 55
Pilotes de disques
Lorsqu'on veut lire un bloc d'un disque, il faut:
- positionner le bras sur la piste (temps de recherche)
- positionner le secteur sous la tte (dlai de rotation)
- lire le bloc (temps de transfert)
Nous voulons rduire le temps de lecture ou d'criture
donc il faut rduire le temps de recherche.
53
98
>>
>>
98
183
= 045
= 085
183
>>
37
= 146
37
>>
122
= 085
122
>>
14
= 108
14
124
>>
>>
124
65
= 110
= 059
65
>>
67
= 002
640
A. Mouradi
page 56
Algorithme SCAN
53
37
>>
>>
37
14
= 016
= 023
14
>>
65
= 051
65
>>
67
= 002
67
>>
98
= 031
98
122
>>
>>
122
124
= 024
= 002
124
>>
183
= 059
208
A. Mouradi
page 57
A. Mouradi
page 58
GESTION DE LA MMOIRE
A. Mouradi
page 59
CAS DE LA MONOPROGRAMMATION
Dans ce cas, nous avons en mmoire le SE et un
processus utilisateur. Sur les PC, les pilotes des
priphriques sont dans une ROM appele BIOS
(Basic Input Output System)
BIOS
Processus
utilisateur
S.E.
CAS DE LA MULTIPROGRAMMATION
La multiprogrammation amliore les performances d'un
systme informatique et permet plusieurs utilisateurs
de travailler en interactif.
Dans ce cas, il est ncessaire d'avoir plusieurs
processus en mmoire
Supposons que nous disposons d'une mmoire de 1
Moctets (le SE occupe 200K et chaque processus
occupe 200k)
On peut loger alors 4 processus en mmoire
A. Mouradi
page 60
100 _
1
2
3
4
5
6
7
8
9
10
11
12
13
14
80 _
60 _
40 _
20 _
utilisation
pourcentage
CPU
0,20
20,00
0,36
36,00
0,49
48,80
0,59
59,04
0,67
67,23
0,74
73,79
0,79
79,03
0,83
83,22
0,87
86,58
0,89
89,26
0,91
91,41
0,93
93,13
0,95
94,50
0,96
95,60
page 61
1100
Part 4 (400k)
700
Part 3 (300k)
400
Part 2 (200k)
Part 1 (100k)
S.E.
A. Mouradi
200
100
0
page 62
1100
Part 4 (400k)
700
Part 3 (300k)
400
Part 2 (200k)
Part 1 (100k)
S.E.
A. Mouradi
200
100
0
page 63
adresse
CPU
adresse
>
fence
oui
MEM
non
erreur d'adresse
A. Mouradi
page 64
Rallocation
A. Mouradi
page 65
Programme
E
fence
S.E.
1000
adresse
logique
CPU
A. Mouradi
registre de base
adresse
physique
+
MEM
page 66
A. Mouradi
page 67
page 68
GESTION DE LA MEMOIRE
Nous allons tudier quelques mthodes pour la
gestion de l'occupation mmoire:
les tables de bits,
les listes chanes,
les subdivisions.
GESTION DE LA MEMOIRE PAR TABLE DE BITS
La mmoire est divise en units d'allocation.
A chaque unit on associe un bit dans la tables des bits.
Ce bit est 0 si l'unit d'allocation est libre, 1 si
elle est occupe.
A : 5 Ko
3 Ko inutliss
B : 6 Ko
C : 4 Ko
2 Ko inutiliss
D : 6 Ko
E : 3 Ko
3 Ko inutiliss
11111000
11111111
11001111
11111000
Table des Bits
A. Mouradi
page 69
A. Mouradi
20 6
14 4
26 3
18 2
29 3
page 70
P 0 5
page 71
A. Mouradi
page 72
L512O
L256O
L128O
L64O
L32O
L16O
L8O
L4O
L2O
L1O
page 73
LA MEMOIRE VIRTUELLE
E
F
C
Les segments de recouvrement sont stocks sur
disque et il y a un swapping entre le disque et la M.C.
effectu par le systme d'exploitation.
Mais c'est le programmeur qui doit dfinir les
diffrents segments de recouvrement et comment ils
sont disposs ( leur indpendance )
C'est une tche qui n'est pas vidente lorsqu'on a des
programmes assez volumineux.
page 74
Mmoire
virtuelle
Objet
dsignation
Mmoire
physique
allocation
de mmoire
LA PAGINATION
Les programmes manipulent des adresses virtuelles.
Pour les ordinateurs qui disposent d'une MMU
(Memory Management Unit), cette unit se charge de
traduire les adresses virtuelles en adresses physiques.
L'espace d'adressage virtuel est divis en units
appeles pages. La mmoire physique est divise en
units de mme taille appeles frames. Le transfert
entre la mmoire physique et le disque se fait par
pages entires ( 512 o, 1k, ...,4K)
A. Mouradi
page 75
A. Mouradi
0-4
4-8
8-12
12-16
0-4
16-20
4-8
20-24
3X
8-12
24-28
12-16
28-32
X3
16-20
32-36
20-24
36-40
24-28
10
40-44
28-32
11
44-48
12
48-52
13
52-56
14
56-60
15
60-64
page 76
LA SEGMENTATION
on a la possibilit d'avoir :
- 16 processus,
- chaque processus a 1024 pages (de 4k)
donc chaque processus peut avoir 4 MgaOctets.
page 77
proc
n 0
64
descp
Descripteur de segment
long
ptr sur
protection table
pages
16
pages
max
proc
n 15
A. Mouradi
page 78
registre spcial
N de
processus
6 bits 4 bits
N de N de
Seg
page
12 bits
dplacement
dans page
10 bits
index dans la table des seg
page 79
7 0 1
7 0 1
7 0
7
ddd
2 0 3 0 4 2
2 3 0 42
1 2 3 04
0 1 2 30
d d d dd
3
3
2
4
d
0 3 2 1 2 0 1 7 0 1
0
1 2
7 0 1
3
0 1
2 7 0
2
3 0
1 2 7
d
dd
ddd
A. Mouradi
page 80
Anomalie de Belady
avec 3 frames
0 1 2
0 1 2
0 1
0
ddd
3
3
2
1
d
0
0
3
2
d
1
1
0
3
d
4 0 1 2 3 4
4
2 3
1
4 2
0
1 4
d
dd
3 0 1 4 0 1 2 3
3
4 0 1 2 3
2
3 4 0 1 2
1
2 3 4 0 1
0
1 2 3 4 0
dddd
ddddd
4
4
3
2
1
d
A. Mouradi
page 81
7 0 1
7 0 1
7 0
7
ddd
2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
1 3 3
3
1
1
0 0 4
0
0
0
2 2 2
2
2
7
d d d
d
d
d
A. Mouradi
page 82
7 0 1
7 0 1
7 0
7
ddd
2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
1 3 3 2 2 2
2 7
2
0 0 0 0 33
0 0
3
2 2 4 4 40
1 1
1
d d d d dd
d d d
A. Mouradi
page 83
page 84
ALGORITHME NFU
Si une page est trs active pendant une certaine priode alors elles
reste en mmoire mme si elle nest plus rfrence.
On peut modifier cet algorithme de la manire suivante :
- On dcale les compteurs dun bit vers la droite avant de leur
additionner le bit de rfrence R
A. Mouradi
page 85
Bits de rfrence
Bits de rfrence
Compteurs de pages
Compteurs de pages
A. Mouradi
page 86
A. Mouradi
page 87
accs squentiel
(bas sur le modle bande magntique)
accs direct (bas sur le modle disque)
accs squentiel index
(ISAM : Indexed Sequential Access Method)
Nous pouvons construire d'autres mthodes d'accs
partir de l'accs direct. Ces mthodes demandent
la construction d'un index pour le fichier. L'index
contient des pointeurs vers les diffrents blocs du
fichier. Pour trouver une entre dans le fichier, on
cherche d'abord dans l'index et on utilise le pointeur
pour accder directement le fichier.
A. Mouradi
page 88
bloc
libre
A. Mouradi
bloc
libre
page 89
L'allocation contigu
La mthode d'allocation contigu ncessite que chaque
fichier occupe un ensemble de blocs dont les adresses
se suivent. D'une manire gnrale, lorsqu'on a lu
un bloc, la lecture du bloc suivant ne ncessite pas de
dplacement de la tte de lecture (ou bien une piste
au maximum lorsqu'on est sur le dernier secteur
d'une piste.)
Dans ce type d'allocation, un fichier est dfini par son
adresse de dpart et sa longueur. cette information
est mmorise dans l'entre du rpertoire du fichier.
A. Mouradi
page 90
A. Mouradi
page 91
L'allocation Indexe
1 2
nom du fichier
extension (cas des grands fichiers qui ncessitent plus
d'une entre dans le rpertoire
A. Mouradi
page 92
10
nom du fichier
type du fichier
attributs du fichier
rserv
heure
date
A. Mouradi
page 93
Nom du fichier
14
- date de cration,
- date du dernier accs,
page 94
bin
dev
user
.
.
Bloc 100
6
1
15
17
..
..
..
adm
classe1
..
..
..
noeud d'information 17
.
.
taille
date
200
rpertoire de user
A. Mouradi
noeud d'information 6
.
.
taille
date
100
Bloc 200
17
6
25 prog
.
.
.
.
rpertoire de classe1
page 95
rpertoire
A
B
FAT
6
9
0
1
2
3
eof
eof
10
9
10
fichier A
fichier B
A. Mouradi
taille
disque
2
3
10
page 96
7 0 1
7 0 1
7 0
7
ddd
A. Mouradi
2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
1 3 3 2 2 2
2 7
2
0 0 0 0 33
0 0
3
2 2 4 4 40
1 1
1
d d d d dd
d d d
page 97