Cours SE-P1 PDF
Cours SE-P1 PDF
Cours SE-P1 PDF
Chapitre 1: Introduction
The Osborne 1 - the first
commercially successful
portable microcomputer.
released on April 3, 1981 by
Osborne Computer
Corporation
Ordinateur
Un ordinateur est une machine lectronique
qui permet l'excution des programmes
Ordinateur
(cont.)
Hardware X Software
Un programme est un ensemble
d'instructions qui seront traduites en signaux
lectriques
La sortie de ces programmes est convertie
nouveau pour que l'utilisateur puisse la
comprendre
Les composants internes
Un ordinateur est compos au
moins de :
processeur
carte mre
mmoire vive
mmoires de masse
priphriques
Processeur
C'est le cerveau de l'ordinateur, il contient
diffrents composants responsables pour
l'interprtation des instructions et le calcul
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
La mmoire vive (RAM)
Pour travailler avec plusieurs donnes, le
processeur doit utiliser une mmoire auxiliaire
pour sauvegarder temporairement les donnes
La mmoire RAM (Random Access Memory) est
une mmoire volatile, c'est--dire qu'elle ne peut
garder des informations que si elle est alimente
lectriquement
Les mmoires de masse
Utiles quand on doit sauvegarder les donnes
d'une faon persistante (par exemple, quand
l'ordinateur est teint)
Disque dur, disquette, Cl USB, CD-ROM, etc.
Plus lentes que la mmoire vive
Les priphriques d'entre et sortie
Ce sont les composants qui permettent
l'ordinateur de communiquer avec l'extrieur
(utilisateur ou autre ordinateur)
Priphriques d'entre : clavier, souris, carte
rseau, mmoires de masse, etc.
Priphriques de sortie : cran, imprimante, carte
rseau, mmoires de masse, etc.
Logiciels (Software)
Les logiciels
le systme
d'exploitation
les applications
Hardware
Systme dexploitation
Applications
Systmes d'exploitations
angl. Operating System (OS)
Qu'est-ce que c'est?
Programme assurant la gestion de l'ordinateur et
de ses priphriques
[www.dicofr.com]
A quoi ca sert?
simplifier la vie des utilisateurs et des
programmeurs
grer les ressources de la machine d'une
manire efficace
Abstraction
Cacher la complexit des machines pour
l'utilisateur afin d'utiliser la machine sans savoir
ce qui est derrire
Abstraction du terme Machine selon Coy:
machine relle = Unit centrale + priphriques
machine abstraite =machine relle + systme
d'exploitation
machine utilisable = machine abstraite +
application
Exigences un Systme d'exploitation
Gnralits
Satisfaire les utilisateurs et les programmeurs
Grer 2D, 3D, vido, audio, rseau, CD, DVD, cl
USB, ...
Plusieurs utilisateurs (itinrants) --> multi-
utilisateurs
tre extensible
De plus en plus gros et complexe :
Efficace, volutif, maintenable
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
Efficacit dans tous les cas
= Machine tendue
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 utilisateur donne plusieurs
commandes ( J obs ) dans une queue
d'xcution de programmes
Entirement squentielle
p.ex. pour faire plusieurs calculs pendant
la nuit
p.ex. 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
systme avec plusieurs processeurs
parallle
vrai multi-tache
doit assurer qu'il y a l'xecution d'autant de processus que
processeurs en meme temps
contrairement: systme avec un seul processeur
quasi-parallle
arreter et reprendre les diffrentes processus
Gestion avec le scheduler (ordonnancement des processus)
Dfinitions:
Systmes Multi-utilisateurs ( time-sharing)
permettre a diffrentes personnes de travailler avec
un ordinateur en mme temps
connexion par
via le terminal de l'ordinateur lui-mme
distance (telnet, ssh, ftp, ...)
donner l'impression chaque utilisateur qu'il est seul
exige une gstion des droits
de fichiers (pour viter la destruction des fichiers etc.)
de processus
Dfinitions:
Multi-utilisateurs
Login
Type:
Administrateur ( root )
Groupes
Utilisateurs
pour grer les droits
Dfinitions:
Systmes Temps rels
Sert pour le pilotage et le contrle des droulements
externes (p.ex. centrale lectrique)
doit garantir des temps de ractions donnes pour des
signaux extrieur urgents
plusieurs systmes d'exploitations n'y arrivent pas car
l'interruption de certaines activits met le systme dans
un tat instable
Dfinitions:
Systmes distribus
doit permettre l'xecution d'un seul
programme sur plusieurs machines
distribuer les processus et les remettre
ensemble
pour gros calculs, p.ex. inversion de grandes
matrices
SE: Modle en couches
Noyau du Systme dexploitation
Matriel
Gestion des priphriques (entres/sorties)
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Gestion des processus
Pilote Pilote Pilote
Ingrdients
Gestion de la mmoire
Gestion des fichiers
Gestion des processus
Gestion des priphriques (entres/sorties)
Contrle des pripheriques via Pilotes (Driver)
Quelques logiciels
Logiciels utilitaires (ls, pwd, format, ...)
Logiciels d'application (Bloc-notes, ...)
Logiciels de communication (Internet Explorer, ...)
Historique (avant les Systmes
d'Exploitations)
1945 - 55 : tubes et interrupteurs
Pas de systme d'exploitation
1955 - 65 : transistors, cartes perfores
Traitement par lots
1965 - 80 : circuits intgrs, disques
Multiprogrammation, temps-partag, entres/sorties
Unix, version BSD, AT&T, interface POSIX
1980 -- : ordinateurs personnels (PC)
Interface graphique (concept cre vers 1960, Stanford)
Rseaux et systmes distribus
--> Systme d'exploitation ncssaire
Systmes d'exploitations
CP/M (depuis 1974), Digital Research
UNIX (depuis 1969-1979), premier par
AT&T
MS-DOS (depuis 1981), Microsoft
MacOS (depuis 1984), Apple
Windows (depuis 1991), Microsoft
Linux (depuis 1992), OpenSource
Systmes d'exploitations
CP/M (depuis 1974), Digital Research
Gestion de disque dur, mais pas
d'arborescence
Pas de graphisme
Exemple:
CPU 8088, 2 MHz
64 KO de RAM
5 MO de disque dur
cf. la loi de Murphy
Systmes d'exploitations
UNIX (depuis 1969-1979), AT&T
a servi de modle pour MS-DOS,
Windows, ..
Multi-tche et Multi-utilisateurs
accs simultan aux fichiers, pripheriques,
mmoire, processeurs, ..
Protection mmoire : aucun programme
ne peut faire planter le systme
systmes de fichiers hirarchique
GUI X-Windows
Systmes d'exploitations
MS-DOS (depuis 1981), Microsoft
Systmes d'exploitations
MacOS (depuis 1984), Apple
premier GUI
Systmes d'exploitation Windows
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 stand-
alone
Systmes d'exploitations
Linux (depuis 1992), OpenSource
finlandais Linus Thorwald
Licence GPL (General Public Licence)
OpenSource
Multi-tche et Multi-utilisateurs
Distributions
Red Hat
Fedore
S.u.S.e
Debian
Mandrake..
Historique
Modle en couches
Noyau du Systme dexploitation
Matriel
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Pilote Pilote Pilote
Noyau du Systme dexploitation
Matriel
Gestion des priphriques (entres/sorties)
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Gestion des processus
Pilote Pilote Pilote
Modle en couches
Noyau du Systme dexploitation
Matriel
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Pilote Pilote Pilote
Noyau du Systme dexploitation
Matriel
Gestion des priphriques (entres/sorties)
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Gestion des processus
Pilote Pilote Pilote
Modle en couches
Noyau du Systme dexploitation
Matriel
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Pilote Pilote Pilote
Noyau du Systme dexploitation
Matriel
Gestion des priphriques (entres/sorties)
Gestion des fichiers
Gestion de la mmoire
Application (Logiciel, p.ex. Microsoft Word)
Gestion des processus
Pilote Pilote Pilote
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
1.3 rappels sur les interruptions
interruption
un agent extrieur ( priphrique ou canal)
interrompt l'UC pour lui faire excuter une partie
d'un autre processus
droutement:
mme technique, mais la commutation est due au
processus en cours ( div par zro, protection
mmoire)
Chapitre 1. Introduction
1.3 rappels sur les interruptions
cycle de l'UC avec interruption
as: adresse sauvegarde CO
ai : adresse 1re instruction excuter sur interruption
IP : boolen vrai ssi interruption prsente
IA : boolen vrai ssi traitement interruption autoris
Chapitre 1. Introduction
cycle de l'UC avec interruption
rpter
RI := Mem[CO];
CO :=CO + 1;
xcuter (RI);
si (IP et IA) alors
dbut
Mem[as] :=CO;
CO :=ai;
IP := IA := faux; co=as;
fin ;
jusqu' faux;
Chapitre 1. Introduction
1.4 rappels sur les E/S
E/S = transfert d'information
entre mmoire centrale (et/ou UC) et priphrique
* une instruction de l'UC initialise ces transferts
avec adresse mmoire, adresse priphrique, sens,
longueur (plus ou moins explicitement)
* sur gros ordinateur, un organe autonome le canal
conduit ces transferts et prvient l'UC en fin d'E/S .
Chapitre 1. Introduction
2.1 systmes squentiels avec E/S synchrones
2.2 systmes squentiels avec E/S synchrones +
" faux" priphriques
2.3 systmes squentiels avec E/S asynchrones
2.4 systmes avec multi -programmation
2.5 systmes multi-processeurs
2.6 systmes distribus
Chapitre 2. Typologie des systmes
Phase 1: Les dbuts
Au dbut, on a observ qu`il y avait des
fonctionnalits communes tous les
programmes
il fallait les pr-programmer et les fournir
au programmeur moyen d`instructions
d`appel:
amorage du systme
entre/sortie
Un ordinateur principal (mainframe)
du milieu des annnes 60
Muse de lhistoire de linformatique http://www.computerhistory.org/
lecteur de cartes
rubans
disques
UCT
(mmoire probablem.
autour de 250-500K)
console oprateur
Oui, cartes perfores Oui, cartes perfores
Une ligne de donnes ou de programme tait code
dans des trous qui pouvaient tre lus par la machine
Oprateur lisant un paquet de
cartes perfores
Source: http://www.tietokonemuseo.saunalahti.fi/eng/kuva_32_eng.htm
Finnish Data Processing Museum Association
Caractristiques dsirables du matriel (1)
Protection de la mmoire
ne pas permettre aux pgms usager daltrer
la rgion de la mmoire o se trouve le
moniteur
Minuterie
limite le temps qu`une job peut excuter
produit une interruption lorsque le temps est
coul
Caractristiques dsirables du matriel (2)
Instructions privilgies
excutables seulement par le moniteur
une interruption se produit lorsquun programme usager
tente de les excuter
UCT peut excuter en mode moniteur ou mode usager
Les instructions privilgies ne peuvent tre excutes que en
mode moniteur
l usager ne peut excuter que en mode usager
seulement le SE ou une interruption peuvent changer de mode
Interruptions
facilitent le transfert de contrle entre le systme
d exploitation, les oprations d`E/S et les programmes
usagers
Le mode moniteur sera plus souvent appel mode
superviseur
Les systmes par lots
Ont t les premiers systmes d`exploitation.
Ils sont associs aux concepts suivants:
langage de contrle de travaux (J CL)
systme d exploitation rsident en mmoire
kernel = noyau
protection de mmoire
instructions privilgies
modes usager-moniteur
interruptions
minuterie
Toutes ces caractristiques se retrouvent dans les systmes
daujourdhui
Encore aujourdhui on parle de jobs par lots quand ils sont
excuts squentiellement sans intervention humaine
P.ex. salaires, comptabilit dune compagnie
Traitement par lots multiprogramm
Les oprations E/S sont extrmement
lentes (compar aux autres instructions)
Mme avec peu dE/S, un programme
passe la majorit de son temps
attendre
Donc: pauvre utilisation de lUCT
lorsquun seul pgm usager se trouve en
mmoire
[Stallings]
Traitement par lots
multiprogramm
Si la mmoire peut contenir +sieurs
pgms, lUCT peut excuter un autre
pgm lorsquun pgm attend aprs E/S
Cest la multiprogrammation
[Stallings]
Plusieurs programmes en mmoire
pour la multiprogrammation
Exigences pour multiprogrammation
Interruptions
afin de pouvoir excuter dautres jobs lorsquun job attend
aprs E/S
Protection de la mmoire: isole les jobs
Gestion du matriel
plusieurs jobs prts tre excutes demandent des
ressources:
UCT, mmoire, units E/S
Langage pour grer lexcution des travaux:
interface entre usager et OS
jadis J CL, maintenant shell, command prompt ou
semblables
Spoule ou spooling
Au lieu d excuter les travaux au fur et
mesure quils sont lus, les stocker sur
une mmoire secondaire (disque)
Puis choisir quels programmes excuter
et quand
Ordonnanceur long terme, discuter
quilibre de travaux
S`il y a un bon nombre de travaux excuter, on peut chercher
obtenir un quilibre
Travaux qui utilisent peu l`UCT, beaucoup l E/S, sont appels
tributaires de l`E/S
Nous parlons aussi de travaux tributaires de l UCT
Le temps d`UCT non utilis par des travaux trib. de l E/S peut
tre utilis par des travaux trib. de l UCT et vice-versa.
L obtention d`un tel quilibre est le but des ordonnanceurs long
terme et moyen terme ( discuter).
Dans les systmes de multiprog. on a souvent coexistence de
travaux longs et pas urgents avec travaux courts et urgents
Le SE donne priorit aux deuximes et excute les premiers
quand il y a du temps de machine disponible.
Phase 3: Systmes temps partag (TSS)
ordinateur principal
(mainframe)
Terminaux
stupides
Chaque terminal a sa propre partition de
mmoire
Systmes temps partag (TSS)
Le traitement par lots multiprogramm ne supporte pas
linteraction avec les usagers
excellente utilisation des ressources mais frustration des
usagers!
TSS permet la multiprogrammation de desservir plusieurs
usagers simultanment
Le temps d UCT est partag par plusieurs usagers
Les usagers accdent simultanment et interactivement au
systme laide de terminaux
Systmes temps partag
(TSS)
Le temps de rponse humain est lent:
supposons qu`un usager ncessite, en
moyenne, 2 sec du processeur par minute
dutilisation
Environ 30 usagers peuvent donc utiliser le
systme sans dlais notable du temps de
raction de lordinateur
Les fonctionnalits du SE dont on a besoin
sont les mmes que pour les systmes par
lots, plus
la communication avec usagers
le concept de mmoire virtuelle pour faciliter la
gestion de mmoire
traitement central des donnes des usagers
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
Ordinateurs Personnels (PCs)
Au dbut, les PCs taient aussi simples
que les premiers ordinateurs
Le besoin de grer plusieurs applications
en mme temps conduit redcouvrir la
multiprogrammation
Le concept de PC isol volue
maintenant vers le concept d ordinateur
de rseau (network computer), donc
extension des principes des TSS.
Aujourdhui Aujourdhui
ordinateur principal
(mainframe ou serveur)
Terminaux
intelligents (PCs)
Retour aux concepts de TSS Retour aux concepts de TSS
Plusieurs PC (clients) peuvent tre
desservis par un ordi plus puissant
(serveur) pour des services qui sont trop
complexes pour eux (clients/serveurs,
bases de donnes, telecom)
Les grands serveurs utilisent beaucoup
des concepts dvelopps pour les
systmes TSS
Et puis
Systmes dexploitation rpartis:
Le SE excute travers un ensemble de
machines qui sont relies par un rseau
Pas discuts dans ce cours
volution des SE
(fig. mise jour par rapport
votre livre)
Une synthse historique
Ordinateurs Personnels
Mainframes et grands serveurs
Multics et beaucoup d`autres
(1960s)
Unix
(1970)
MS-DOS
(1981)
Windows
(1990)
Linux
(1991)
Windows NT
(1988)
Windows 2000
Windows XP
Solaris(1995)
Mac/OS
(1984)
Systmes parallles (tightly
coupled)
Le petit cot des puces rend possible
leur composition dans systmes
multiprocesseurs
Les ordinateurs partagent mmoire,
horloge, etc.
Avantages:
plus de travail fait (throughput)
plus fiable:
dgradation harmonieuse (graceful degradation)
Systmes parallles
Symtriques
Tous les UCTs excutent le mme SE
Elles sont fonctionnellement identiques
Asymtrique
Les UCTs ont des fonctionnalits
diffrentes, par exemple il y a un matre et
des esclaves.
Aujourdhui, tout ordinateur puissant est
un systme parallle.
Systmes distribus ( = rpartis)
Les rseaux d ordinateurs sont en
pleine mergence...
Systmes multiprocesseurs faiblement
coupls (loosely coupled)
consistent d ordinateurs autonomes, qui
communiquent travers lignes de
communication
Systmes distribus ( = rpartis)
SE rpartis
il y a un SE qui fonctionne entre ordinateurs
l usager voit les ressources loignes
comme si elles taient locales
SE en rseau (network operating
systems) fournissent:
partage de fichiers (systmes client-
serveur)
patrons de communication (protocoles)
autonomie des ordinateurs
Systmes temps rel
Doivent ragir ou contrler des vnements
externes (p.ex. contrler une usine). Les
dlais de raction doivent tre borns
systmes temps rel souples:
les chances sont importantes, mais ne sont pas
critiques (p.ex. systmes tlphoniques)
systmes temps rel rigides (hard):
le chances sont critiques, p.ex.
contrle dune chane d`assemblage
graphiques avec animation
88
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
89
Interface graphique
Gnre le texte des commandes par un
systme d'icnes et de cases cocher.
Exemples
Windows (Microsoft)
Xwindow, Openwin, CDE (Unix)
Avantage : facilit dutilisation et large
accessibilit
Inconvnient : puissance affaiblie
90
Interprteur de commandes
Lutilisateur tape une commande au clavier
qui sera ensuite interprte par un
programme systme
Exemples
command.com + fichiers .bat (MsDos)
sh, csh, tcsh, bash + scripts (Unix)
Avantage : puissance grce aux fichiers de
commandes (branchements, boucles : c'est
dj un langage de programmation).
Inconvnients : Peu convivial.. syntaxe
requise.
91
Protection des fichiers sous Unix
r
(read)
w
(write)
x
(execute)
a (all)
u (user)
g (group)
o (others)
Exemple : rwx r-x r--
u g o chmod 754 toto
7 5 4
92
Redirection vers/depuis des
fichiers
Il est possible de :
rediriger lentre ou la sortie standards vers un
fichier en utilisant > , >>, <, <<
ls > liste_fichiers
ls >> liste_fichiers
cat < liste_fichiers
cat < liste_fichiers> resultat
rediriger la sortie standard dune commande vers
lentre standard dune autre commande en
utilisant |
ls | sort r /*affiche le contenu dun rpertoire tri lenvers*/
93
Hirarchie des langages
Langages volus : C, C++, Ada, J ava
Une instruction C = un ensemble
d'instructions en langage machine
Assembleur : une instruction assembleur
une instruction en langage machine mais
c'est plus lisible.
Langage machine : format directement
lisible par le processeur
94
Traduction dun programme
Traducteurs
Ce sont des programmes qui transforment
un code un niveau de la hirarchie (code
source) en un code un niveau plus bas,
plus prs de la machine (code cible).
Certaines erreurs ne sont comprhensibles
que si l'on sait comment une instruction est
traduite.
Source Cible
Traduction
95
Programmes et fichiers
Un programme source (C, assembleur,...)
ensemble des instructions qui vont tre traduites
en un fichier en langage machine directement
excutable par le S.E.
Un programme source peut tre rparti
dans plusieurs fichiers (ce qui est
souhaitable ds quil devient un peu gros).
Notion de projet (en C, C++, J AVA, ) : un
programme rparti sur plusieurs fichiers
96
Du code source au programme
excutable
Le S.E. utilise plusieurs tapes de
traductionpour transformer du code
source (crit en langage volu) en un
programme excutable.
Ces tapes sont (tudies en TD/TP) :
Pr-compilation : Source Source
Compilation : Source Assembleur
Assemblage : Assembleur Langage
machine
Edition des liens : fichier Objet
97
Pr-Compilation
Principe :
Traitement fichier par fichier o il sagit de
remplacer les macro-instructions.
Le rsultat est encore en langage source.
Exemples de macro-instruction
#define TAILLE 30 // remplacement de toutes les
occurrences de TAILLE par 30 (expansion)
#define FOO TAILLE + 3 // FOO sera expans par 30 +
3
#define MIN(A, B) ((A) > (B)) ? (B) : (A) // MIN (x-
y,x+y) sera expans en ( (x-y) >(x+y)) ? (x+y) : (x-y)
98
Examples (suite)
#include <stdio.h>// le fichier stdio.h
l'emplacement des headers standards est copi cet
endroit.
#if VERSION = 4 // code spcifique de la version 4
#endif // obligatoire
#ifdef MAINFILE // code inclure dans le seul
fichier principal
#endif //obligatoire
99
Compilation
La compilation (fichier par fichier) traduit le
source en assembleur.
A cette tape, chaque variable reoit un
emplacement mmoire pour stocker sa valeur
(ou sa dfinition).
Toute utilisation de la variable dans la suite du
programme est une rfrence.
Une rfrence est dite externe si elle appelle
une variable ou une fonction dont la dfinition
se trouve dans un autre fichier source ou un
fichier de bibliothque.
100
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.
101
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)
102
Edition de liens
dition de liens (tous les fichiers ensemble) :
un fichier objet d'initialisation est ajout
(rcupration de la ligne de commande, de
l'environnement, certaines routines ou
variables de traitement d'erreur, etc.), de
mme que les fonctions de bibliothque.
Tous les fichiers objet sont rassembls en un
seul code. Il faut fournir la liste des
bibliothques utilises (sauf la bibliothque
standard).
103
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.
104
Exemples
En turbo-C, les diffrentes tapes de cration
d'un excutable sont accessibles par la fentre
de projet, menu contextuel du fichier source
(bouton droit)| edit Node Attributes, champ
Translator.
Sous unix, cc enchane sucessivement :
le prprocesseur C,
le compilateur C,
loptimiseur,
lassembleur,
et lditeur de lien.
105
Options du cc
Cet enchanement peut tre contrl grce
aux options de la commande cc :
cc -c : arrt la fin de la phase de compilation et
gnration dun fichier objet (.o)
cc -S : suppression de la phase dassemblage et
de la phase ddition de liens, et production dun
fichier assembleur (.s)
cc -O : optimisation pour acclrer la vitesse
dexcution du programme
cc -o nom-fichier : indication du nom du binaire
excutable gnr. Quand cette option nest pas
prcise, le nom de lexcutable est un a.out.
106
Exemple
On veut utiliser dans un programme
assembleur la fonction printf du C.
Appel printf est ralis par un call far ptr
printf : appel de procdure standard, mais
dans un autre segment de code
Passage des arguments :
Les entiers sont recopis sur la pile.
Les chanes sont passes par pointeur far (le
segment, puis l'offset).
Les arguments sont empils en ordre inverse de
leur appel dans la fonction C. La pile est nettoye
dans le programme principal.
107
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
108
Remarques
A la gnration du code excutable
(assemblage, dition de lien) il faut tenir
compte de l'appel printf.
Pour cela, il faut lier les fichiers objet avec la
bibliothque standard du C.
109
Portage sur diffrentes machines
et langages machine virtuelle
Ce qui dpend de la machine ou du S.E. :
Le processeur dfinit le langage machine et les
mnmoniques assembleur.
Le systme dfinit le format des excutables. En
gnral, il fournit un diteur de liens qui dtermine
les possibilits d'emploi des rfrences en
assembleur.
Le systme dtermine aussi la liste des appels
systme disponibles (fonctions utilisant le
matriel, par ex. lecture clavier, disque).
110
Compatibilit
Si deux compilateurs de langages
diffrents traduisent de la mme faon
les noms de variable et de fonction et
utilisent des mthodes d'appel de sous-
programmes compatibles, on peut lier
dans le mme excutable des fichiers
objets gnrs par les deux
compilateurs.
111
Portabilit
Pour disposer du mme langage sur
diffrentes machines ou diffrents systmes,
on doit chaque fois rcrire le compilateur.
En pratique, il y a souvent des petites
diffrences, ce qui fait que le code passe
parfois mal d'un compilateur l'autre.
Deux solutions ce problme :
Premire solution :
dfinir a priori le compilateur, et porter le mme
compilateur sur diffrentes machines.
C'est le cas de gcc (compilateur C freeware) qui existe
l'identique sur la plupart des machines sous Unix (sauf la
taille des types de base, qui dpend du processeur).
112
Portabilit (suite)
2me solution:
Recours une machine virtuelle pour
garantir la portabilit sur des systmes trs
diffrents.
La technique des machines virtuelles est
utilise en particulier par
Lisp (List Processor, un des plus anciens
langages d'intelligence artificielle)
et J ava.
113
Machine virtuelle
On spcifie (dcrit de faon abstraite) une
machine avec sa taille de mot, ses registres,
ses accs mmoire, son langage machine,
son assembleur et son chargeur.
Il faut alors crire sur chaque type de machine
relle et chaque systme d'exploitation un
logiciel qui simule la machine virtuelle en
respectant scrupuleusement ses
spcifications.
114
Machine virtuelle (suite)
Tous les compilateurs gnrent le mme
code dans le langage de la machine virtuelle,
quel que soit le systme et le processeur ce
qui facilite l'criture des compilateurs.
Les programmes compils sur une machine
peuvent tre excuts sur une autre sans
problme, ce qui est un avantage important.
Par contre, la machine virtuelle constitue un
intermdiaire supplmentaire lors de
l'excution, qui est moins rapide que celle
d'un excutable dans le langage de la
machine relle.
115
Exemple
Le J DK sous Dos comporte une machine
virtuelle (java.exe), un
compilateur/assembleur (javac.exe), un
debogueur (jdb.exe), un dsassembleur
(javap.exe).
Gestion de Processus
Chapitre 3
Concepts importants du Chapitre Concepts importants du Chapitre
Processus
Cration, terminaison, hirarchie
tats et transitions dtat des processus
Process Control Block
Commutation de processus
Sauvegarde, rechargement de PCB
Files dattente de processus et PCB
Ordonnanceurs court, moyen, long terme
Processus communicants
Producteurs et consommateurs
Processus et terminologie
(aussi appel job, task, user program)
Concept de processus: un programme en
excution
Possde des ressources de mmoire, priphriques, etc
Ordonnancement de processus
Oprations sur les processus
Processus cooprants
Processus communicants
Cration de processus
Les processus peuvent crer dautres
processus, formant une hirarchie
(instruction fork ou semblables)
Terminaison de processus
Un processus excute sa dernire
instruction
pourrait passer des donnes son parent
ses ressources lui sont enleves
Le parent termine lexcution dun fils
(avortement) pour raisons diffrentes
le fils a excd ses ressources
le fils n`est plus requis
etc.
Arbre de processus en UNIX
tat de processus
IMPORTANT
Au fur et a mesure quun processus
excute, il change dtat
nouveau: le processus vient d tre cr
excutant-running: le processus est en train
dtre excut par l UCT
attente-waiting: le processus est en train
dattendre un vnement (p.ex. la fin dune
opration d E/S)
prt-ready: le processus est en attente
dtre excut par l UCT
terminated: fin d excution
Diagramme de transition d`tats
d`un processus
Ordonnanceur = angl. scheduler
tats Nouveau, Termin:
Nouveau
Le SE a cr le processus
a construit un identificateur pour le processus
a construit les tableaux pour grer le processus
mais ne sest pas encore engag excuter le
processus (pas encore admis)
pas encore allou des ressources
La file des nouveaux travaux est souvent appele
spoule travaux (job spooler)
Termin:
Le processus n est plus excutable, mais ses
donnes sont encore requises par le SE
(comptabilit, etc.)
Transitions entre processus
Prt Excution
Lorsque l ordonnanceur UCT choisit un
processus pour excution
Excution Prt
Rsultat dune interruption cause par un
vnement indpendant du processus
Il faut traiter cette interruption, donc le
processus courant perd lUCT
Cas important: le processus puis son intervalle de
temps (minuterie)
Transitions entre 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
Sauvegarde dinformations processus
En multiprogrammation, un processus excute sur
l UCT de faon intermittente
Chaque fois quun processus reprend l UCT
(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
PCB = Process Control Block:
Reprsente la situation actuelle d un processus, pour le
reprendre plus tard
Registres UCT
Process Control Block (PCB)
IMPORTANT
pointeur: les PCBs sont rangs dans des
listes enchanes ( voir)
tat de processus: ready, running, waiting
compteur programme: le processus doit
reprendre l instruction suivante
autres registres UCT
bornes de mmoire
fichiers quil a ouvert
etc., v. manuel
Commutation de processeur
Aussi appele commutation de contexte ou context switching
Quand lUCT passe de lexcution d un
processus 0 l excution d`un proc 1, il faut
mettre jour et sauvegarder le PCB de 0
reprendre le PCB de 1, qui avait t
sauvegard avant
remettre les registres d UCT tels que le
compteur d instructions etc. dans la mme
situation qui est dcrite dans le PCB de 1
Commutation de processeur
(context switching)
Il se peut que beaucoup de temps passe avant le retour au
processus 0, et que beaucoup dautres proc soient excuts
entre temps
Le PCB n est pas la seule information
sauvegarder
Il faut aussi sauvegarder l tat des
donnes du programme
Ceci se fait normalement en gardant
l image du programme en mmoire
primaire ou secondaire (RAM ou disque)
Le PCB pointera cette image
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
Chaque lment de cette pile est appel stack frameou 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
A
B
Appel A Appel B
PILE
Donnes P
Donnes B
Donnes A
P
Pointeurs de pile processus
sauvegarder: base et borne
cadre 1
cadre 2
cadre 3
cadre 4
pointeur de base
pointeur de borne
La pile fait normal. partie de limage du programme, mais les pointeurs sont normal. des
registres dUCT donc il sont sauvegards dans le PCB
Rle du matriel et du logiciel dans le
traitement dinterruptions
MATRIEL
LOGICIEL
Signal dinterruption gnr
UCT termine linstruction courante
et dtecte interruption
Registres dUCT sont
sauvegards dans une pile
UCT saute ladresse trouve dans
le vecteur dinterruption
Infos mises jour et
sauvegardes dans PCB
Le code de traitement de
linterruption est excut
Lordonnanceur choisit un
processus dans la file prt
Les registres dUCT sont rechargs
avec ce quon avait sauvegard
dans PCB pour ce processus,
qui reprend lexcution
Les infos relatives ce processus
sont rtablies partir de son PCB
dispatcher
Files dattente IMPORTANT
Les ressources d ordinateur sont souvent limites par
rapport aux processus qui en demandent
Chaque ressource a sa propre file de processus en
attente
un moment donn, un proc ne peut se trouver que
dans une seule des diffrentes files du SE
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 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.
Cet ensemble de files inclut donc la table de
statut priphriques
2 fois la mme erreur ici: imprimante devrait tre disque 3
Une faon plus synthtique de dcrire la mme
situation (pour les devoirs et les examens)
prt 7 2
bandmag0
bandmag1
disq03146
term05
Les PCBs ne sont pas dplacs en mmoire pour tre mis dans les diffrentes files:
ce sont les pointeurs qui changent.
ready
disk unit 0
. . .
PCB4
. . .
PCB2 PCB3 PCB5
PCB6 PCB7 PCB14
term. unit 0
Ordonnanceurs (schedulers)
Programmes qui grent l utilisation de
ressources de l`ordinateur
Trois types d`ordonnanceurs :
court terme = ordonnanceur processus:
slectionne quel processus doit excuter la
transition prt excution
long terme = ordonnanceur travaux:
slectionne quels processus peuvent
excuter la transition nouveau prt
(vnement admitted) (de spoule travaux file
prt)
moyen terme: nous verrons
Ordonnanceur travaux = long terme
et ordonnanceur processus = court terme
Ordonnanceur travaux
Ordonnanceur processus
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 l E/S
Ordonnancement de processus (court terme)
Disponibilit Ress.
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
Ordonnanceurs Ordonnanceurs court court et et moyen moyen terme terme
court
moyen
tats de processus dans UNIX
Un exemple de diagramme de transitions dtats pour un SE rel
Kernel, user mode =
monitor, user mode
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
P.ex. gestion dvnements indpendants
Un proc traite le clavier, un autre traite le modem
Le pb du producteur - consommateur
Un problme classique dans l tude des processus
communicants
un processus producteur produit des donnes (p.ex.des
enregistrements dun fichier) pour un processus
consommateur
un pgm dimpression produit des caractres -- consomms
par une imprimante
un assembleur produit des modules objet qui seront
consomms par le chargeur
Ncessit dun tampon pour stocker les items produits
(attendant dtre consomms
Tampons de communication
Prod
Cons
1 donn
Prod
Cons
1 donn 1 donn 1 donn
Si le tampon est de longueur 1, le producteur et consommateur doivent
forcement aller la mme vitesse
Des tampons de longueur plus grandes permettent une certaine
indpendance. P.ex. droite le consommateur a t plus lent
Le tampon born (bounded buffer)
une structure de donnes fondamentale dans les SE
b[0] b[1]
b[7] b[2]
b[6] b[3]
b[4] b[5]
ou
out: 1re
pos. pleine
in: 1re
pos. libre
b[0] b[1] b[7] b[2] b[6] b[3] b[4] b[5]
in: 1re
pos. libre
out: 1re
pos.
pleine
bleu: plein, blanc: libre
Le tampon born se trouve dans la mmoire partage entre
consommateur et usager
lcriture dune nouvelle info dans le tampon, le producteur met
jour le pointeur in
Si le tampon est plein, le prod devra sendormir, il sera plus tard
rveill par le consommateur
Le rle du consommateur est symtrique
Utilisation du concept du tampon born
Les tampons borns sont partout en
informatique, et partout dans les SE
Les files utilises dans un SE sont des
tampons borns:
Files dattente pour ressources: file prt,
files pour imprimante, pour disque, etc.
Les protocoles de communications
utilisent des tampons borns: TCP, et
autres
Un client communique avec un serveur
par des tampons borns, etc.
Ordonnancement Processus
Chapitre 4
Aperu du chapitre
Concepts de base
Critres dordonnancement
Algorithmes dordonnancement
Ordonnancement de multiprocesseurs
Ordonnancement temps rel
valuation dalgorithmes
Diagramme de transition d`tats d`un processus
Files dattente de processus pour ordonnancement
file prt
Nous ferons lhypothse que le premier processus dans une file est celui
qui utilise la ressource: ici, proc7 excute
Concepts de base
La multiprogrammation vise obtenir une
utilisation optimale des ressources, surtout lUCT
et aussi un bon temps de rponse pour lusager
L`ordonnanceur UCT est la partie du SE qui
dcide quel processus dans la file ready/prt
obtient l UCT quand elle devient libre
L UCT est la ressource la plus prcieuse dans
un ordinateur, donc nous parlons delle
Cependant, les principes que nous verrons
s appliquent aussi l ordonnancement des autres
ressources (units E/S, etc).
Les cycles dun processus
Cycles (bursts) dUCT et E/S: lexcution dun
processus consiste de squences dexcution sur
UCT et dattentes E/S
Observation exprimentale:
dans un systme typique, nous observerons un grand nombre de court cycles, et un
petit nombre de long cycles
Les programmes tributaires de l UCT auront normalm. un petit nombre de long
cycles UCT
Les programmes tributaires de lE/S auront normalm. un grand nombre de court
cycles UCT
Histogramme de dure des cycles UCT
Quand invoquer lordonnanceur UCT
L ordonnanceur UCT doit prendre sa dcision chaque fois que
le processus excutant est interrompu, ce-.-d.
1. un processus se se prsente en tant que nouveau ou se termine
2. un processus excutant devient bloqu en attente
3. un processus change dexcutant/running prt/ready
4. un processus change de attente prt/ready
en conclusion, tout vnement dans un systme cause une interruption
de lUCT et lintervention de lordonnanceur,
qui devra prendre une dcision concernant quel proc ou thread aura
lUCT aprs
Premption: on a premption si on enlve lUCT un processus
qui lavait et ne la pas laisse de propre initiative
P.ex. premption dans le cas 3, pas de premption dans le cas 2
Plusieurs pbs rsoudre dans le cas de premption, v. manuel
Dispatcheur
Le processus qui donne le contrle au
processus choisi par lordonnanceur. Il doit se
proccuper de:
changer de contexte
changer mode usager
ramorcer le processus choisi
Attente de dispatcheur (dispatcher latency)
le temps ncessaire pour excuter les fonctions du
dispatcheur
il est souvent nglig, il faut supposer quil soit petit
par rapport la longueur dun cycle
Critres dordonnancement
Il y aura normalement plusieurs processus dans la file prt
Quand lUCT devient disponible, lequel choisir?
Critres gnraux:
Bonne utilisation de lUCT
Rponse rapide lusager
Mais ces critres peuvent tre jugs diffremment...
Critres spcifiques dordonnancement
Utilisation UCT: pourcentage dutilisation
Dbit = Throughput: nombre de processus qui
compltent dans l unit de temps
Temps de rotation = turnaround: le temps pris
par le proc de son arrive sa termin.
Temps dattente: attente dans la file prt
(somme de tout le temps pass en file prt)
Temps de rponse (pour les systmes
interactifs): le temps entre une demande et la
rponse
Critres dordonnancement:
maximiser/minimiser
Utilisation UCT: pourcentage dutilisation
ceci est maximiser
Dbit =Throughput: nombre de processus qui compltent dans
l unit de temps
ceci est maximiser
Temps de rotation (turnaround): temps terminaison moins temps
arrive
minimiser
Temps dattente: attente dans la file prt
minimiser
Temps de rponse (pour les systmes interactifs): le temps entre
une demande et la rponse
minimiser
Examinons maintenant plusieurs mthodes
dordonnancement et voyons comment elles se
comportent par rapport ces critres
Premier arrive, premier servi (First
come, first serve, FCFS)
Exemple: 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:
Temps dattente pour P1= 0; P2= 24; P3= 27
Temps attente moyen: (0 + 24 + 27)/3 = 17
P
1
P
2
P
3
24 27 30 0
Premier arrive, premier servi
Utilisation UCT = 100%
Dbit = 3/30 = 0,1
3 processus complts en 30 units de temps
Temps de rotation moyen: (24+27+30)/3 = 27
P
1
P
2
P
3
24 27 30 0
Tenir compte du temps darrive!
Dans le cas o les processus arrivent moment
diffrents, il faut soustraire les temps darrive
Exercice: rpter les calculs si:
P1 arrive temps 0 et dure 24
P2 arrive temps 2 et dure 3
P3 arrive temps 5 et dure 3
Donc P1 attend 0 comme avant
Mais P2 attend 24-2, etc.
P
1
P
2
P
3
24 27 30 0
arrive P2
FCFS Scheduling (Cont.)
Si les mmes processus arrivent 0 mais dans lordre
P
2
, P
3
, P
1
.
Le diagramme de Gantt est:
Temps dattente pour P
1
= 6 P
2
=0 P
3
= 3
Temps moyen dattente: (6 +0 +3)/3 =3
Temps de rotation moyen: (3+6+30)/3 =13
Beaucoup mieux!
Donc pour cette technique, les temps peuvent varier grandement
par rapport lordre darrive de diffrent processus
Exercice: calculer aussi le dbit, etc.
P
1
P
3
P
2
6 3 30 0
Effet daccumulation (convoy effect) dans
FCFS
Supposons un processus tributaire de lUCT et plusieurs
tributaires de l`E/S (situation assez normale)
Les processus tributaires de lE/S attendent pour l UCT: E/S
sous-utilise (*)
Le processus tributaire de lUCT fait une E/S: les autres proc
excutent rapidement leur cycle UCT et retournent sur lattente
E/S: UCT sous-utilise
Processus tributaire de lUCT fini son E/S, puis les autres procs
aussi : retour la situation (*)
Donc dans ce sens FCFS favorise les procs tributaires de lUCT
Et peut conduire une trs mauvaise utilisation des ressources
Tant dUCT que de priphriques
Une possibilit: interrompre de temps en temps les proc
tributaires de lUCT pour permettre aux autres procs dexcuter
(premption)
Plus Court dabord = Shortest J ob First (SJ F)
Le processus qui demande moins
dUCT part le premier
Optimal en principe du point de vue
du temps dattente moyen
(v. le dernier exemple)
Mais comment savons-nous quel
processus demande moins dUCT!
SJ F avec premption ou non
Avec premption: si un processus qui dure
moins que le restant du processus courant se
prsente plus tard, lUCT est enleve au proc
courant et donne ce nouveau processus
SRTF: shortest remaining-time first
Sans premption: on permet au processus
courant de terminer son cycle
Observation: SRTF est logique pour lUCT car le processus
excutant sera interrompu par larrive du nouveau processus
Il est retourn ltat prt
Il est impossible pour les units qui ne permettent pas de premption
p.ex. une unit disque, imprimante
Processus Arrive Cycle
P
1
0 7
P
2
2 4
P
3
4 1
P
4
5 4
SJ F (sans premption)
Temps dattente moyen = (0+(8-2)+(7-4)+(12-5))/4
(0 +6 +3 +7)/4 =4
Temps de rotation moyen =7+(12-2)+(8-4)+(16-5) = 8
Example de SJ F sans premption
P
1
P
3
P
2
7 3 16 0
P
4
8 12
P
2
arr.
P
3
arr.
P
4
arr
Exemple de SJ F avec premption
Processus Arrive Cycle
P
1
0 7
P
2
2 4
P
3
4 1
P
4
5 4
SJ F (premptive)
Temps moyen d`attente =(9 +1 +0 +2)/4 =3
P1 attend de 2 11, P2 de 4 5, P4 de 5 7
Temps de rotation moyen =16+ (7-2) + (5-4) + (11-5) = 7
P
1
P
3
P
2
4
2
11 0
P
4
5 7
P
2
P
1
16
P
2
arr.
P
3
arr.
P
4
arr
Tourniquet = Round-Robin (RR)
Le plus utilis en pratique
Chaque processus est allou une tranche de temps
(p.ex. 10-100 millisecs.) pour excuter
Tranche aussi appele quantum
Sil excute pour tranche entire sans autres interruptions,
il est interrompu par la minuterie et l UCT est donne
un autre processus
Le processus interrompu redevient prt ( la fin de la file)
Mthode premptive
P[0] P[1]
P[7] P[2]
P[6] P[3]
P[4] P[5]
La file prt est un
cercle (dont RR)
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
Exemple: Tourniquet tranche = 20
Processus Cycle
P
1
53
P
2
17
P
3
68
P
4
24
Observez
temps de rotation et temps dattente moyens beaucoup plus levs que SJ F
mais aucun processus nest favoris
P
1
P
2
P
3
P
4
P
1
P
3
P
4
P
1
P
3
P
3
0 20 37 57 77 97 117 121 134 154 162
Priorits
Affectation dune priorit chaque
processus (p.ex. un nombre entier)
souvent les petits chiffres dnotent des
hautes priorits
0 la plus haute
LUCT est donne au processus prt
avec la plus haute priorit
avec ou sans premption
il y a une file prt pour chaque priorit
Problme possible avec les priorits
Famine: les processus moins prioritaires
narrivent jamais excuter
Solution: vieillissement:
modifier la priorit d un processus en
fonction de son ge et de son historique
dexcution
le processus change de file d`attente
Plus en gnral, la modification
dynamique des priorits est une politique
souvent utilise (v. files rtroaction ou retour)
Files plusieurs niveaux (multiples)
La file prt est spare en plusieurs files, p.ex.
travaux `darrire-plan`(background - batch)
travaux `de premier plan`(foreground - interactive)
Chaque file a son propre algorithme dordonnancement,
p.ex.
FCFS pour arrire-plan
tourniquet pour premier plan
Comment ordonnancer entre files?
Priorit fixe chaque file famine possible, ou
Chaque file reoit un certain pourcentage de temps UCT,
p.ex.
80% pour arrire-plan
20% pour premier plan
Ordonnancement avec files multiples
Files multiples et retour
Un processus peut passer d une file
l autre, p.ex. quand il a pass trop de
temps dans une file
dterminer:
nombre de files
algorithmes d ordonnancement pour chaque file
algorithmes pour dcider quand un proc doit passer
dune file l`autre
algorithme pour dterminer, pour un proc qui
devient prt, sur quelle file il doit tre mis
Files multiples et retour
PRIO = 0
la + leve
PRIO = 1
PRIO = 2
Exemple de files multiples
retour
Trois files:
Q0: tourniquet, tranche =8 msecs
Q1: tourniquet, tranche =16 msecs
Q2: FCFS
Ordonnancement:
Un nouveau processus entre dans Q0, il reoit 8 msecs
dUCT
S il ne finit pas dans les 8 msecs, il est mis dans Q1, il reoit
16 msecs additionnels
S il ne finit pas encore, il est interrompu et mis dans Q2
Si plus tard il commence avoir des cycles plus courts, il
pourrait retourner Q0 ou Q1
En pratique...
Les mthodes que nous avons vu sont toutes utilises
en pratique (sauf plus court servi pur qui est
impossible)
Les SE sophistiqus fournissent au grant du systme
une librairie de mthodes, quil peut choisir et
combiner au besoin aprs avoir observ le
comportement du systme
Pour chaque mthode, plusieurs params sont
disponibles: p.ex. dure des tranches, coefficients,
etc.
Ces mthodes videmment sont importantes
seulement pour les ordis qui ont des fortes charges de
travail
Aussi
Notre tude des mthodes dordonnancement est thorique, ne
considre pas en dtail tous les problmes qui se prsentent
dans lordonnancement UCT
P.ex. les ordonnanceurs UCT ne peuvent pas donner lUCT un
processus pour tout le temps dont il a besoin
Car en pratique, lUCT sera souvent interrompue par quelque
vnement externe avant la fin de son cycle
Cependant les mmes principes dordonnancement sappliquent
units qui ne peuvent pas tre interrompues, comme une
imprimante, une unit disque, etc.
Dans le cas de ces units, on pourrait avoir des infos compltes
concernant le temps de cycle prvu, etc.
Aussi, cette tude ne considre pas du tout les temps dexcution
de lordonnanceur, du dispatcheur, etc.
Systmes temps rel
systmes temps rel rigides (hard):
les chances sont critiques (p.ex. contrle dune chane
d`assemblage, animation graphique)
il est essentiel de connatre la dure des fonctions
critiques
il doit tre possible de garantir que ces fonctions sont
effectivement excutes dans ce temps (rservation de
ressources)
ceci demande une structure de systme trs particulire
systmes temps rel souples (soft):
les chances sont importantes, mais ne sont pas
critiques (p.ex. systmes tlphoniques)
les processus critiques reoivent la priorit
Systmes temps rel:
Problmes dattente dans plus. systmes (ex. UNIX)
Dans UNIX classique il n est pas permis d effectuer
changement de contexte pendant un appel du
systme - et ces appels peuvent tre longs
Pour le temps rel il est ncessaire de permettre la
premption des appels de systmes ou du noyau en
gnral
Donc ce systme nest pas considr appropri pour
le temps rel
Mais des varits appropries de UNIX ont t
conues (p.ex. Solaris)
Inversion de priorit et hritage de
priorits
Quand un processus de haute priorit
doit attendre pour des processus de
moindre priorit (p.ex. a besoin de donnes
produites par ces derniers)
Pour permettre ces derniers de finir
rapidement, on peut lui faire hriter la
priorit du processus plus prioritaire
Synchronisation de Processus
Chapitre 5
Problmes avec concurrence =
paralllisme
Les threads concurrents doivent parfois
partager donnes (fichiers ou mmoire
commune) et ressources
On parle donc de tches coopratives
Si laccs nest pas contrl, le rsultat de
lexcution du programme pourra dpendre de
lordre dentrelacement de lexcution des
instructions (non-dterminisme).
Un programme pourra donner des rsultats
diffrents et parfois indsirables de fois en fois
Un exemple
Deux threads excutent
cette mme procdure et
partagent la mme base
de donnes
Ils peuvent tre
interrompus nimporte o
Le rsultat de
l excution concurrente
de P1 et P2 dpend de
l`ordre de leur
entrelacement
M. X demande une
rservation
davion
Base de donnes
dit que fauteuil
A est disponible
Fauteuil A est
assign X et
marqu occup
Vue globale dune excution
possible
M. Guy demande une
rservation davion
Base de donnes dit
que fauteuil 30A est
disponible
Fauteuil 30A est
assign Guy et
marqu occup
M. Leblanc demande une
rservation davion
Base de donnes dit
que fauteuil 30A est
disponible
Fauteuil 30A est
assign Leblanc et
marqu occup
Interruption
ou retard
P1
P2
Deux oprations en parallle sur une var a partage
(b est priv chaque processus)
b=a
b++
a=b
b=a
b++
a=b
P1 P2
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)
interruption
3me exemple
Thread P1
static char a;
void echo()
{
cin >> a;
cout << a;
}
Thread P2
static char a;
void echo()
{
cin >> 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
Problme qui affecte le programme du tampon born,
v. manuel
Quand plusieurs threads excutent en parallle, nous ne pouvons
pas faire dhypothses sur la vitesse dexcution des threads, ni
leur entrelacement
Peuvent tre diffrents chaque excution du programme
Section Critique
Partie dun programme dont lexcution
de doit pas entrelacer avec autres
programmes
Une fois quun tche y entre, il faut lui
permettre de terminer cette section sans
permettre autres tches de jouer sur les
mmes donnes
Le problme de la section critique
Lorsquun thread manipule une donne (ou ressource) partage, nous
disons quil se trouve dans une section critique (SC) (associe cette
donne)
Le problme de la section critique est de trouver un algorithme
d`exclusion mutuelle de threads dans l`excution de leur SCs afin que le
rsultat de leurs actions ne dpendent pas de lordre dentrelacement
de leur excution (avec un ou plusieurs processeurs)
Lexcution des sections critiques doit tre mutuellement exclusive:
tout instant, un seul thread peut excuter une SC pour une var donne
(mme lorsquil y a plusieurs processeurs)
Ceci peut tre obtenu en plaant des instructions spciales dans les
sections d`entre et sortie
Pour simplifier, dornavant nous faisons lhypothse quil ny a qune
seule SC dans un programme.
Structure du programme
Chaque thread doit donc demander une permission
avant dentrer dans une section critique (SC)
La section de code qui effectue cette requte est la
section dentre
La section critique est normalement suivie dune
section de sortie
Le code qui reste est la section restante (SR): non-
critique
repeat
section dentre
section critique
section de sortie
section restante
forever
Application
M. X demande une
rservation davion
Section dentre
Base de donnes dit que
fauteuil A est disponible
Fauteuil A est assign X et
marqu occup
Section de sortie
Section
critique
Critres ncessaires pour solutions
valides
Exclusion Mutuelle
tout instant, au plus un thread peut tre dans une
section critique (SC) pour une variable donne
Non interfrence:
Si un thread sarrte dans sa section restante, ceci
ne devrait pas affecter les autres threads
Mais on fait l hypothse quun thread qui
entre dans une section critique, en sortira.
Critres ncessaires pour
solutions valides
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
Absence de famine: aucun thread
ternellement empch datteindre sa
SC
Difficile obtenir, nous verrons
Types de solutions
Solutions par logiciel
des algorithmes dont la validit ne sappuie pas sur
lexistence d`instruction spciales
Solutions fournies par le matriel
sappuient sur lexistence de certaines instructions (du
processeur) spciales
Solutions fournies pas le SE
procure certains appels du systme au programmeur
Toutes les solutions se basent sur latomicit de laccs la
mmoire centrale: une adresse de mmoire ne peut tre affecte
que par une instruction la fois, donc par un thread la fois.
Plus en gnral, toutes les solutions se basent sur l existence
dinstructions atomiques, qui fonctionnent comme SCs de base
Atomicit = indivisibilit
Solutions par logiciel
(pas pratiques, mais intressantes pour comprendre le pb)
Nous considrons dabord 2 threads
Algorithmes 1 et 2 ne sont pas valides
Montrent la difficult du problme
Algorithme 3 est valide (algorithme de Peterson)
Notation
Dbutons avec 2 threads: T0 et T1
Lorsque nous discutons de la tche Ti, Tj dnotera toujours
lautre tche (i !=j)
Algorithme 1: threads se donnent mutuellement le tour
La variable partage turn est
initialise 0 ou 1
La SC de Ti est excute ssi
turn =i
Ti est occup attendre si Tj
est dans SC.
Fonctionne pour lexclusion
mutuelle!
Mais critre du progrs nest
pas satisfait car lexcution
des SCs doit strictement
alterner
Thread Ti:
repeat
while(turn!=i);
SC
turn = j;
SR
forever
Ex 1: T0 possde une longue SR et T1 possde une courte SR. Si turn==0, T0 entre
dans sa SC et puis sa SR (turn==1). T1 entre dans sa SC et puis sa SR (turn==0), et
tente dentrer dans sa SC: refuse! il doit attendre que T0 lui donne le tour.
Rien
faire
Thread T0:
repeat
while(turn!=0);
SC
turn = 1;
SR
forever
Thread T1:
repeat
while(turn!=1);
SC
turn = 0;
SR
forever
Algorithme 1 vue globale
Ex 2: Gnralisation n threads: chaque fois, avant quun thread puisse rentrer dans
sa section critique, il lui faut attendre que tous les autres aient eu cette chance!
initialisation de turn 0 ou 1
Rien
faire
Algorithme 2 ou lexcs de courtoisie...
Une variable Boolenne par
Thread: flag[0] et flag[1]
Ti signale quil dsire excuter
sa SC par: flag[i] =vrai
Mais il nentre pas si lautre est
aussi intress!
Exclusion mutuelle ok
Progrs pas satisfait:
Considrez la squence:
T0: flag[0] = vrai
T1: flag[1] = vrai
Chaque thread attendra
indfiniment pour excuter
sa SC: on a un
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
Algorithme 2 vue globale
T0: flag[0] = vrai
T1: flag[1] = vrai
interblocage!
Aprs vous, monsieur
Aprs vous, monsieur
Algorithme 3 (dit de Peterson): bon!
combine les deux ides: flag[i]=intention dentrer; turn= qui le tour
Initialisation:
flag[0] = flag[1] = faux
turn = i ou j
Dsire dexcuter SC
est indiqu par flag[i] =
vrai
flag[i] = faux la section
de sortie
Thread Ti:
repeat
flag[i] = vrai;
// je veux entrer
turn = j;
// je donne une chance lautre
do while
(flag[j] && turn==j);
SC
flag[i] = faux;
SR
forever
Entrer ou attendre?
Thread Ti attend si:
Tj veut entrer est cest la chance Tj
flag[j]==vrai et turn==j
Un thread Ti entre si:
Tj ne veut pas entrer ou cest la chance Ti
flag[j]==faux ou turn==i
Pour entrer, un thread dpend de lautre quil
lui donne la chance!
Thread T0:
repeat
flag[0] = vrai;
// T0 veut entrer
turn = 1;
// T0 donne une chance T1
while
(flag[1]&&turn=1);
SC
flag[0] = faux;
// T0 ne veut plus entrer
SR
forever
Thread T1:
repeat
flag[1] = vrai;
// T1 veut entrer
turn = 0;
// T1 donne une chance 0
while
(flag[0]&&turn=0);
SC
flag[1] = faux;
// T1 ne veut plus entrer
SR
forever
Algorithme de Peterson vue globale
Scnario pour le changement de
contrle
Thread T0:
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