Professional Documents
Culture Documents
http://www.slideshare.net/secret/mXzhZp1rTxohC6
Rfrences bibliographiques
Plan
COURS
Chapitre 1: Introduction
The Osborne 1 - the first
commercially successful
portable microcomputer.
Ordinateur
Ordinateur (cont.)
processeur
carte mre
mmoire vive
mmoires de masse
priphriques
Processeur
Carte Mre
Elle relie les diffrents composants d'un
ordinateur, travers un bus
La carte mre est aussi responsable de
contrler l'accs aux
diffrents types
d'entre et de sortie
Logiciels (Software)
Les logiciels
le systme
d'exploitation
les applications
Applications
Systme dexploitation
Hardware
Systmes d'exploitations
A quoi ca sert?
Abstraction
Exigences de l'utilisateur
Faut que a marche !
(comme j'en ai envie ...)
a imprime pas ...
= Machine utilisable (machine tendu)
Exigences du programmeur
Simplifier l'accs aux ressources de la
machine :
Mmoire, processeur, priphriques, fichiers,
programmes, rseaux, communication interne
Modle de programmation simple et unifi
Quelques dfinitions
Processus
Traitement
par lots
Systmes Multi-tche
Systmes Multi-utilisateurs
Systmes Multi-processeurs
Systmes temps rel
Systmes distribus
Dfinitions: Processus
Df.:
Un processus est un programme lors de
l'xcution
(aspect dynamique d'un programme)
Dfinitions:
Traitement par lots (Batch processing)
Un
autoexec.bat
Dfinitions:
Systmes Multi-tache (Multitasking)
Assurer
l'xcution de plusieurs
programmes en meme temps (c--d.
plusieurs processus)
Chaque
processus a besoin du
processeur
situation concurrente
solution: scheduling
Dfinitions:
Systmes Multi-processeurs
parallle
vrai multi-tache
doit assurer qu'il y a l'xecution d'autant de processus que
processeurs en meme temps
quasi-parallle
arreter et reprendre les diffrentes processus
Dfinitions:
Systmes Multi-utilisateurs ( time-sharing )
Dfinitions:
Multi-utilisateurs
Login
Type:
Administrateur ( root )
Groupes
Utilisateurs
pour
Dfinitions:
Systmes Temps rels
Dfinitions:
Systmes distribus
Ingrdients
Gestion de la mmoire
Gestion des fichiers
Gestion des processus
Gestion des priphriques (entres/sorties)
Quelques logiciels
Systmes d'exploitations
CP/M
Systmes d'exploitations
CP/M
Systmes d'exploitations
UNIX
Systmes d'exploitations
MS-DOS
Systmes d'exploitations
MacOS
premier GUI
Windows 3.11
pas de multitche, pas de multi-utilisateurs
Windows 95
multi-tche
premier systme 32 bit
Windows 98
Internet integr dans le GUI
Plug & Play
paralllement Windows NT
systme d'exploitation rseaux multi-utilisateur
Windows 2000, et aprs Windows XP
jumellage entre systme d'exploitations rseaux et standalone
Systmes d'exploitations
Linux
Red Hat
Fedore
S.u.S.e
Debian
Mandrake..
Historique
Modle en couches
Application (Logiciel, p.ex. Microsoft Word)
Gestion des fichiers
Gestion des priphriques (entres/sorties)
Gestion des processus
Gestion de la mmoire
Noyau du Systme dexploitation
Pilote
Pilote
Pilote
Matriel
Modle en couches
Application (Logiciel, p.ex. Microsoft Word)
Gestion des fichiers
Gestion des priphriques (entres/sorties)
Gestion des processus
Gestion de la mmoire
Noyau du Systme dexploitation
Pilote
Pilote
Pilote
Matriel
Modle en couches
Application (Logiciel, p.ex. Microsoft Word)
Gestion des fichiers
Gestion des priphriques (entres/sorties)
Gestion des processus
Gestion de la mmoire
Noyau du Systme dexploitation
Pilote
Pilote
Pilote
Matriel
Chapitre 1. Introduction
1.2 Rappel sur le fonctionnement de l'UC
* appel de sous- programme
branchement et conservation de l'adresse de retour
objectif : pouvoir appeler une squence
d'instructions de plusieurs endroits
moyen :
conservation de l'adresse de retour (= lecture du
CO )
branchement
(= criture du CO )
passage de paramtres :
convention entre l' appelant et l'appel (sys +lg)
Chapitre 1. Introduction
Chapitre 1. Introduction
Chapitre 1. Introduction
Chapitre 1. Introduction
amorage du systme
entre/sortie
rubans
UCT
(mmoire probablem.
autour de 250-500K)
lecteur de cartes
console oprateur
Source: http://www.tietokonemuseo.saunalahti.fi/eng/kuva_32_eng.htm
Finnish Data Processing Museum Association
Protection de la mmoire
Minuterie
limite le temps qu`une job peut excuter
produit une interruption lorsque le temps est
coul
Instructions privilgies
Interruptions
protection de mmoire
instructions privilgies
kernel = noyau
modes usager-moniteur
interruptions
minuterie
[Stallings]
[Stallings]
Interruptions
Spoule ou spooling
quilibre de travaux
ordinateur principal
(mainframe)
MULTICS et UNIX
MULTICS a t un systme TSS des
annes 60, trs sophistiqu pour son
poque
Ne russit pas cause de la faiblesse du
matriel de son temps
Quelques unes de ses ides furent
reprises dans le systme UNIX
Aujourdhui
Terminaux
intelligents (PCs)
ordinateur principal
(mainframe ou serveur)
Et puis
volution des SE
Unix
Ordinateurs Personnels
(1970)
MS-DOS
(1981)
Mac/OS
(1984)
Linux
Solaris (1995)
(1991)
Windows NT
(1988)
Windows
(1990)
Windows 2000
Windows XP
Systmes parallles
Symtriques
Tous les UCTs excutent le mme SE
Elles sont fonctionnellement identiques
Asymtrique
SE rpartis
il y a un SE qui fonctionne entre ordinateurs
l usager voit les ressources loignes
comme si elles taient locales
Interface utilisateur
Rle : permet l'utilisateur de dialoguer
avec le S.E.
Moyen : transmet des chanes de
caractres (nom des programmes
excuter et arguments leur passer).
Deux possibilits
Interprteur de commandes
Interface graphique
88
Interface graphique
Gnre le texte des commandes par un
systme d'icnes et de cases cocher.
Exemples
Windows (Microsoft)
Xwindow, Openwin, CDE (Unix)
89
Interprteur de commandes
90
w
(write)
x
(execute)
u (user)
a (all)
g (group)
o (others)
Exemple :
91
Il est possible de :
ls > liste_fichiers
ls >> liste_fichiers
cat < liste_fichiers
cat < liste_fichiers> resultat
Traducteurs
Cible
94
Programmes et fichiers
Un programme source (C, assembleur,...)
95
96
Pr-Compilation
Principe :
Exemples de macro-instruction
#define MIN(A, B) ((A) > (B)) ? (B) : (A) // MIN (xy,x+y) sera expans en ( (x-y) > (x+y)) ? (x+y) : (x-y)
97
Examples (suite)
#endif //obligatoire
98
Compilation
Compilation
Les dclarations dans les headers
permettent de connatre au moins la taille
des rfrences externes.
La position du code assembleur dans le
programme complet n'est pas connue,
puisqu'on ne sait pas dans quel ordre les
diffrents fichiers seront regroups, ni
quelle sera la taille des autres fichiers
traduits.
Les rfrences qui ne sont pas encore
dfinitivement fixes sont dites
relogeables.
100
Assemblage
Assemblage (fichier par fichier) :
traduction de l'assembleur en langage
machine.
Les rfrences relogeables ou non
rsolues sont notes dans un tableau
d'en-tte (tableau des rfrences non
rsolues)
101
Edition de liens
Edition de liens
La plupart des rfrences sont connues,
sauf les rfrences absolues (celles qui
dpendent de l'adresse de chargement).
Le rsultat est un programme
excutable.
On peut aussi faire une dition de lien
partielle : plusieurs fichiers objets sont
rassembls en un fichier objet plus gros,
mais qui n'est pas encore excutable.
103
Exemples
le prprocesseur C,
le compilateur C,
loptimiseur,
lassembleur,
et lditeur de lien.
104
Options du cc
Exemple
DATA segment
x
dw 125
y
dw 12742
format db "(%d,%d)"
DATA ends
CODE segment
; printf("(%d,%d)",x,y)
push y
push x
push ds
mov ax, offset format
push ax
call far ptr _printf
add sp,8
CODE ends
107
Remarques
A
Pour
108
Compatibilit
Portabilit
Premire solution :
Portabilit (suite)
2me solution:
112
Machine virtuelle
113
Exemple
115
Gestion de Processus
Chapitre 3
Processus
Producteurs et consommateurs
Processus et terminologie
(aussi appel job, task, user program)
Ordonnancement de processus
Processus cooprants
Processus communicants
Cration de processus
Terminaison de processus
etc.
tat de processus
IMPORTANT
Nouveau
Le SE a cr le processus
Termin:
Prt Excution
Excution Prt
Excution Attente
Attente Prt
Registres UCT
Commutation de processeur
Aussi appele commutation de contexte ou context switching
Commutation de processeur
(context switching)
Appel B
B
Donnes B
Donnes A
Donnes P
PILE
pointeur de borne
cadre 4
cadre 3
cadre 2
pointeur de base
cadre 1
La pile fait normal. partie de limage du programme, mais les pointeurs sont normal. des
registres dUCT donc il sont sauvegards dans le PCB
MATRIEL
Infos mises jour et
sauvegardes dans PCB
Signal dinterruption gnr
Le code de traitement de
linterruption est excut
Lordonnanceur choisit un
processus dans la file prt
dispatcher
Files dattente
IMPORTANT
Ce sont les PCBs qui sont dans les files dattente (dont le
besoin d un 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.
prt 7 2
bandmag0
bandmag1
disq0 3 14 6
term0 5
Les PCBs ne sont pas dplacs en mmoire pour tre mis dans les diffrentes files:
ce sont les pointeurs qui changent.
term. unit 0
ready
disk unit 0
. . .
PCB14
Ordonnanceurs (schedulers)
Programmes qui grent l utilisation de
ressources de l`ordinateur
Trois types d`ordonnanceurs :
prt)
Ordonnanceur processus
Ordonnanceurs
Disponibilit Ress.
court
Processus cooprants
Les processus cooprants peuvent
affecter mutuellement leur excution
Avantages de la coopration entre
processus:
partage de l information
efficacit en faisant des tches en parallle
modularit
la nature du problme pourrait le demander
Le pb du producteur - consommateur
Tampons de communication
Prod
Prod
1 donn
Cons
Cons
b[0] b[1]
b[7]
b[2]
b[6]
b[3]
ou
b[5] b[4]
out: 1re
pos.
pleine
Le tampon
in: 1re
pos. libre
out: 1re
pos.
pleine
Ordonnancement Processus
Chapitre 4
Aperu du chapitre
Concepts de base
Critres dordonnancement
Algorithmes dordonnancement
Ordonnancement de multiprocesseurs
Ordonnancement temps rel
valuation dalgorithmes
file prt
Nous ferons lhypothse que le premier processus dans une file est celui
qui utilise la ressource: ici, proc7 excute
Concepts de base
Observation exprimentale:
Dispatcheur
changer de contexte
changer mode usager
ramorcer le processus choisi
Critres dordonnancement
Critres gnraux:
Critres dordonnancement:
maximiser/minimiser
minimiser
minimiser
minimiser
Processus
Temps de cycle
P1
24
P2
3
P3
3
Si les processus arrivent au temps 0 dans lordre: P1 , P2 , P3
Le diagramme Gantt est:
P1
0
P2
24
P3
27
30
P2
24
P3
27
30
arrive P2
P2
24
P3
27
30
P3
3
P1
6
30
le dernier exemple)
Mais
Processus
Arrive
Cycle
P1
P2
P3
P4
0
2
4
5
7
4
1
4
P3
P2
8
P4
12
16
P2 arr. P3 arr.
P4 arr
Temps dattente moyen = (0+(8-2)+(7-4)+(12-5))/4
(0 + 6 + 3 + 7)/4 = 4
Arrive
Cycle
0
2
4
5
7
4
1
4
P1
P2
P3
P4
SJF (premptive)
P1
P2
P3
P2 arr. P3 arr.
P4
P1
11
P4 arr
P2
P1 attend de 2 11, P2 de 4 5, P4 de 5 7
16
P[2]
P[6]
P[3]
P[5] P[4]
Performance de tourniquet
S il y a n processus dans la file prt et la
tranche est t, alors chaque processus
reoit 1/n du temps UCT dans units de
dure max. t
Si t grand FIFO
Si t petit... nous verrons
Cycle
P1
P2
P3
P4
53
17
68
24
P1
0
P2
20
37
P3
P4
57
P1
77
P3
97 117
P4
P1
P3
P3
Observez
temps de rotation et temps dattente moyens beaucoup plus levs que SJF
mais aucun processus nest favoris
Priorits
0 la plus haute
nombre de files
algorithmes d ordonnancement pour chaque file
algorithmes pour dcider quand un proc doit passer
d une file l`autre
algorithme pour dterminer, pour un proc qui
devient prt, sur quelle file il doit tre mis
PRIO = 1
PRIO = 2
Trois files:
Ordonnancement:
En pratique...
Aussi
Synchronisation de Processus
Chapitre 5
Un exemple
M. X demande une
rservation
davion
Base de donnes
dit que fauteuil
A est disponible
Fauteuil A est
assign X et
marqu occup
Interruption
ou retard
P2
b=a
interruption
P2
b=a
b++
a=b
b++
a=b
Supposons que a soit 0 au dbut
P1 travaille sur le vieux a donc le rsultat final sera a=1.
Sera a=2 si les deux tches sont excutes lune aprs lautre
Si a tait sauvegard quand P1 est interrompu, il ne pourrait pas tre partag avec P2 (il y aurait deux
a tandis que nous en voulons une seule)
3me exemple
Thread P1
Thread P2
static char a;
static char a;
void echo()
{
cin >> a;
void echo()
{
cin >> a;
cout << a;
}
cout << a;
}
Si la var a est partage, le premier a est effac
Si elle est prive, lordre daffichage est renvers
Autres exemples
Des threads qui travaillent en simultanit sur une
matrice, par ex. un pour la mettre jour, l`autre pour
en extraire des statistiques
Section Critique
Structure du programme
Application
M. X demande une
rservation davion
Section dentre
Section
critique
Exclusion Mutuelle
Non interfrence:
Progrs:
absence d`interblocage (Chap 8)
si un thread demande d`entrer dans une
section critique un moment o aucun
autre thread en fait requte, il devrait tre
en mesure dy entrer
Aussi ncessaire
Types de solutions
Atomicit = indivisibilit
Notation
initialisation de turn 0 ou 1
Thread T0:
repeat
Thread T1:
repeat
while(turn!=0);
SC
turn = 1;
SR
forever
while(turn!=1);
SC
turn = 0;
SR
Rien
forever
faire
interblocage
Thread Ti:
repeat
flag[i] = vrai;
while(flag[j]);
SC
flag[i] = faux;
SR
forever
rien faire
Thread T0:
repeat
flag[0] = vrai;
while(flag[1]);
SC
flag[0] = faux;
SR
forever
Thread T1:
repeat
flag[1] = vrai;
while(flag[0]);
SC
flag[1] = faux;
SR
forever
Thread Ti:
Initialisation:
repeat
flag[0] = flag[1] = faux
flag[i] = vrai;
// je veux entrer
turn = i ou j
turn = j;
Dsire dexcuter SC
// je donne une chance lautre
do while
est indiqu par flag[i] =
(flag[j] && turn==j);
vrai
SC
flag[i] = faux la section
flag[i] = faux;
de sortie
SR
forever
Entrer ou attendre?
flag[j]==vrai et turn==j
flag[j]==faux ou turn==i
Thread T0:
repeat
flag[0] = vrai;
// T0 veut entrer
turn = 1;
// T1 veut entrer
turn = 0;
while
(flag[1]&&turn=1);
SC
flag[0] = faux;
// T0 ne veut plus entrer
SR
forever
Thread T1:
repeat
flag[1] = vrai;
while
(flag[0]&&turn=0);
SC
flag[1] = faux;
// T1 ne veut plus entrer
SR
forever
SC
flag[0] = faux;
// T0 ne veut plus entrer
SR
Thread T1:
flag[1] = vrai;
// T1 veut entrer
turn = 0;
// T1 donne une chance T0
while
(flag[0]&&turn=0) ;
//test faux, entre
SR
flag[0] = vrai;
// T0 veut entrer
turn = 1;
flag[1] = vrai;
// T1 veut entrer
turn = 0;
// T1 donne une chance T0
// mais T0 annule cette action
while
(flag[1]==vrai&&turn=1) ;
// test vrai, nentre pas
while
(flag[0]&&turn=0) ;
//test faux, entre
T0 veut rentrer mais est oblig de donner une chance T1, qui entre
SC
flag[0] = faux;
// 0 ne veut plus entrer
RS
flag[0] = vrai;
// 0 veut entrer
turn = 1;
// 0 donne une chance 1
// mais T1 annule cette action
flag[1] = vrai;
// 1 veut entrer
turn = 0;
// 1 donne une chance 0
while
(flag[1] && turn=1) ;
// test faux, entre
while
(flag[0]&&turn=0);
// test vrai, nentre pas
Si T0 et T1 tentent simultanment dentrer dans SC, seule une valeur pour turn
survivra:
non-dterminisme (on ne sait pas qui gagnera), mais lexclusion fonctionne
flag[0] = vrai
// prend linitiative
turn = 1
SC
flag[0] = faux
Un protocole commun
Solutions matrielles:
dsactivation des interruptions
Sur un uniprocesseur:
exclusion mutuelle est
prserve mais lefficacit
se dtriore: lorsque dans
SC il est impossible
dentrelacer lexcution
avec dautres threads dans
une SR
Perte dinterruptions
Sur un multiprocesseur:
exclusion mutuelle nest pas
prserve
Une solution qui nest
gnralement pas
acceptable
Process Pi:
repeat
inhiber interrupt
section critique
rtablir interrupt
section restante
forever
Linstruction test-and-set
Une version C de
test-and-set:
bool testset(int& i)
{
if (i==0) {
i=1;
return true;
} else {
return false;
}
}
Instruction atomique!
Un algorithme utilisant
testset pour Exclusion
Mutuelle:
Variable partage b
est initialise 0
Le 1er Pi qui met b
1 entre dans SC
Tche Pi:
while testset(b)==false ;
SC //entre quand vrai
b=0;
SR
Instruction change
usage:
Thread Ti:
repeat
k = 1
while k!=0 xchg(k,b);
SC
xchg(k,b);
SR
forever
Smaphores
wait(S):
while S=0 ;
S--;
Attend si no. de threads qui
peuvent entrer = 0
signal(S):
S++;
Augmente de 1 le no des threads qui
peuvent entrer
Atomicit
Wait: La squence testdcrment est atomique,
mais pas la boucle!
V
S=0
F
Rappel: les sections atomiques ne
peuvent pas tre excutes
simultanment par diffrent threads
(ceci peut tre obtenu un utilisant un des
mcanismes prcdents)
atomique
S--
SC
Atomicit et interruptibilit
SC
S++
interruptible
V
S=0
F
atomique
S--
SC
La boucle nest pas atomique pour permettre un autre thread
dinterrompre lattente sortant de la SC
autre thr.
Pour n threads
Initialiser S 1
Alors 1 seul thread
peut tre dans sa SC
Pour permettre k
threads dexcuter
SC, initialiser S k
Thread Ti:
repeat
wait(S);
SC
signal(S);
SR
forever
Initialise S >=1
Thread T1:
repeat
wait(S);
SC
signal(S);
SR
forever
Thread T2:
repeat
wait(S);
SC
signal(S);
SR
forever
On a 2 threads: T1
et T2
nonc S1 dans T1
doit tre excut
avant nonc S2
dans T2
Dfinissons un
smaphore S
Initialiser S 0
Synchronisation
correcte lorsque T1
contient:
S1;
signal(S);
et que T2 contient:
wait(S);
S2;
T0
T1
wait(S)
wait(Q)
wait(Q)
wait(S)
wait(S):
while S=0 ;
S--;
Smaphores: observations
Quand S >= 0:
Une valeur
Une liste dattente L
Implementation
(les botes rprsentent des squences non-interruptibles)
}
signal(S): S.value ++;
if S.value 0 {
// des threads attendent
remove a process P from S.L;
wakeup(P) // thread choisi devient prt
S.value doit tre initialis une valeur non-ngative (dpendant de lapplication,
}
v. exemples)
Problmes classiques de
synchronisation
Le pb du producteur - consommateur
Tampons de communication
Prod
Prod
1 donn
Cons
Cons
b[0] b[1]
b[7]
b[2]
b[6]
b[3]
b[5] b[4]
out: 1re
pos. pleine
ou
in: 1re
pos. libre
out: 1re
pos.
pleine
Smaphores: rappel.
take():
w=b[out];
Out ++ mod k;
return w;
Producer:
repeat
produce v;
wait(E);
wait(S);
append(v);
signal(S);
signal(N);
forever
Consumer:
repeat
wait(N);
wait(S);
w=take();
signal(S);
signal(E);
consume(w);
forever
Sections critiques
tats sr et non sr
1 si demande(Pi)<=besoin(Pi)
2 aller 5
3 sinon
4 erreur(demande suprieur aux besoins)
5 si demande (Pi)<=disponible
6 aller 9
7 sinon
8 bloquer Pi;
9 dterminer_tat avec:
10 disponible=disponible -demande(Pi)
11 allou(Pi)=allou(Pi)+DEmande (Pi)
12 si etat sur alors faire la maj des structure de
donnes
banquier
25
9
(a) sr
(b) sr
(c) non sr
26
1
R
26
2
1.
2.
3.
26
3
Problmes
Variation:
26
5
au milieu de la tche
rquisitionner l'imprimante
!!??
Solution dans ce cas: utiliser
le disque et le
dmon dimpression
26
6
Ressources ordonnes
numriquement
A peux demander i
B ne peux pas demander i
sansdabord librer j
26
7
Autres considration
Le verrouillage en deux phases
Premire phase
26
9
27
0
Solution:
Glossaire
Atomicit, non-interruptibilit: