Syst `emes temps r ´eel et syst `emes embarqu ´es
Syst `emes d’exploitation
Jacques Gangloff, Lo¨ıc Cuvillon
Ecole Nationale Sup ´erieure de Physique de Strasbourg
8 janvier 2008
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 1 / 56
Plan
Plan
1 Introduction Plan du cours Bibliographie D ´efinition Historique
Concepts de base
Architectures de syst `emes d’exploitation
2 Processus Introduction
Communication inter-processus (IPC) Ordonnancement (scheduling)
Introduction
Plan
1 Introduction Plan du cours Bibliographie D ´efinition Historique
Concepts de base
Architectures de syst `emes d’exploitation
2 Processus Introduction
Communication inter-processus (IPC) Ordonnancement (scheduling)
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 3 / 56
Introduction Plan du cours
Introduction
D ´efinition Historique
Concepts de base Appels syst `eme Architectures
Processus
Introduction IPC
Ordonnancement
Introduction Plan du cours
Entr ´ees-sorties
Acc `es au mat ´eriel
Gestionnaire de p ´eriph ´erique Situations de blocage
Gestion de la m ´emoire
Notions de base M ´emoire virtuelle Segmentation
Syst `eme de fichiers
Fichiers et r ´epertoires Architecture
S ´ecurit ´e et protection
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 5 / 56
Introduction Bibliographie
A. Tannenbaum et A. Woodhull
Operating systems – Design and implementation Prentice Hall 2006, troisi `eme ´edition.
A. Tannenbaum
Modern operating systems Prentice Hall, deuxi `eme ´edition.
Introduction D ´efinition
D ´efinition
Un syst `eme d’exploitation (Operating System ou OS en anglais) est un programme r ´ealisant les fonctions ´el ´ementaires suivantes :
Gestion des ressources physiques de l’ordinateur (temps cpu, m ´emoire, p ´eriph ´eriques)
Protection de l’int ´egrit ´e des donn ´ees stock ´ees et ex ´ecut ´ees (en m ´emoire, sur les unit ´es de stockage)
Assurer un niveau d’abstraction du mat ´eriel pour l’utilisateur
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 7 / 56
Introduction Historique
La pr ´ehistoire
1642 – La Pascaline
Blaise Pascal invente en 1642 une machine `a calculer m ´ecanique r ´ealis ´ee `a l’aide d’engrenages. Elle permettait de r ´ealiser des additions et des soustrac- tions. Environ 50 exemplaires furent fabriqu ´es mais ce fut un ´echec commercial en raison d’un prix de revient ´elev ´e. En m ´emoire de sa contribution `a l’histoire de l’informatique, Pascal donna son nom `a un langage de programmation.
La pascaline – mus ´ee des arts et m ´etiers – Paris
Introduction Historique
1822 – Babbage & Lovelace
Charles Babbage invente la machine `a diff ´erence destin ´ee `a faire des calculs polyn ˆomiaux `a l’aide de diff ´erences finies, puis la machine analytique qui jette les bases de l’informatique moderne. Il invente ainsi les concepts de machine s ´equentielle, de s ´eparation des donn ´ees et des codes d’ex ´ecution, de bran- chement conditionnel, de boucles d’ex ´ecution et de p ´eriph ´erique d’impression.
Il collabore avec la math ´ematicienne Ada Lovelace qui ´ecrit pour sa machine ce qui est consid ´er ´e comme le tout premier programme informatique : un algo- rithme de calcul des nombres de Bernoulli. Pour des raisons technologiques (elle devait peser 13 tonnes et ´etait constitu ´ee de 25000 pi `eces), il ne pourra jamais terminer sa machine. Elle fut n ´eanmoins achev ´ee apr `es sa mort et per- mis de r ´ealiser des calculs avec une pr ´ecision de 31 chiffres significatifs.
La machine de Babbage Ada Lovelace
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 9 / 56
Introduction Historique
L’antiquit ´e
1945-1955 – Relais et tubes `a vide
A cette ´epoque les ordinateurs sont constitu ´es de relais et/ou d’amplificateurs
`a base de tubes `a vide (par exemple l’ENIAC, 30 tonnes, 17500 tubes `a vide, 1500 relais, maximum 5 jours sans panne). Alan turing invente la machine qui porte son nom et avec elle la notion d’algorithme. John Von Neumann donne son nom `a l’architecture moderne des ordinateurs : une unit ´e de contr ˆole, une unit ´e arithm ´etique et logique, une m ´emoire, des entr ´ees-sorties. La notion de syst `eme d’exploitation est toujours inconnue `a cette ´epoque.
ENIAC – U.S. Army’s Ballistic Research Laboratory
Introduction Historique
La renaissance
1955-1965 – La r ´evolution du transistor
L’utilisation du transistor en informatique `a partir de 1955 fut une v ´eritable r ´evolution. Le prix et surtout la fiabilit ´e des ordinateurs s’am ´eliora de mani `ere drastique. Les ordinateurs de cette ´epoque se nommaient mainframes et
´etaient encore r ´eserv ´es aux institutions (par exemple l’IBM 7094 avec en- viron 128 Ko de m ´emoire et une fr ´equence d’horloge inf ´erieure `a 1 MHz).
Ils n ´ecessitaient un personnel pl ´ethorique pour sa maintenance. On assiste au d ´eveloppement d’un embryon de syst `eme d’exploitation : les syst `emes de batch.
Dual IBM 7090 – NASA – Projet mercury
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 11 / 56
Introduction Historique
L’ ´epoque moderne
1965-1980 – La naissance des syst `emes d’exploitation
Apparition des circuits int ´egr ´es (IBM 360)
Apparition de la notion de multiprogramming (OS/360)
Apparition de l’un des premiers syst `emes d’exploitation `a temps partag ´e : CTSS (Compatible Time-Sharing System). Invention du concept de shell.
IBM 360
Introduction Historique
1965-1980 – La naissance des syst `emes d’exploitation
Invention de l’anc ˆetre de tous les syst `emes d’exploitation : MULTICS (MULTiplexed Information and Computing Service) par le MIT, les Laboratoires Bell et General Electrics. Apports de MULTICS :
◮ Multi-t ˆaches, multi-utilisateurs
◮ Syst `eme d’invite de commande `a la base du shell actuel
◮ Notion d’anneaux permettant d’isoler l’ex ´ecution du code entre utilisateurs
◮ Segmentation et m ´emoire virtuelle
◮ Syst `eme de fichiers hi ´erarchis ´e, nom longs, liens symboliques, fichiers p ´eriph ´eriques
Apparition d’UNIX : 2 principales versions, System V et BSD. Plus tard, IEEE a d ´evelopp ´e une norme pour rendre le d ´eveloppement sous UNIX compatible : POSIX.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 13 / 56
Introduction Historique
L’ ´epoque contemporaine
1980-nos jours – La d ´emocratisation
Miniaturisation des circuits int ´egr ´es
INTEL commercialise le 8086 en 1980 tandis que Motorola sort le 6502 Apparition de l’IBM PC (Personal Computer) ´equip ´e du syst `eme
d’exploitation MS/DOS et du langage de programmation Microsoft BASIC Apparition du Macintosh : interface graphique utilisant des fen ˆetres et la souris comme pointeur
Windows 1.0 : p ˆale tentative de copie de l’interface d’Apple par Microsoft
IBM PC
Introduction Historique
1980-nos jours – La d ´emocratisation
Invention de Xwindows par le MIT en 1984
D ´eveloppement de Windows NT (partenariat Microsoft-IBM initi ´e en 1990) qui a conduit `a Windows XP (NT 5.1) et Windows Vista (NT 6.0).
Naissance de Linux en 1991, UNIX-like compatible POSIX, open-source, multi-plateformes
Apparition de MAC OSX d ´eriv ´e d’un UNIX BSD 4.4 compatible POSIX Invention du concept de syst `emes d’exploitation distribu ´es
Ordinateur XO du projet OLPC
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 15 / 56
Introduction Concepts de base
Concepts de base
Le Noyau (Kernel)
Programme r ´ealisant toutes les fonctions du syst `emes d’exploitation En g ´en ´eral, le noyau a le degr ´e de privil `ege maximum pour l’acc `es aux ressources mat ´erielles
Le syst `eme d’exploitation (Operating Systems ou OS) est constitu ´e du noyau et de diverses applications p ´eriph ´eriques
Introduction Concepts de base
Les processus (processes)
Programme en ex ´ecution Contexte d’un processus :
◮ Espace d’adressage propre contenant le code ex ´ecutable, les donn ´ees, une pile
◮ Liste de zones m ´emoire accessibles
◮ Registres : compteur d’instruction, compteur de pile, indexes, registres de calcul en virgule flottante (Floating Point Unit ou FPU), ...
Dans la plupart des syst `emes d’exploitation, les informations relatives `a la gestion du processus sont stock ´ees dans la table des processus (process table)
Les processus sont lanc ´es par exemple au moyen d’un interpr ´eteur de commande (shell). Sous UNIX, le premier processus lanc ´e au moment du d ´emarrage est un script nomm ´einit
Un processus peut cr ´eer un ou plusieurs processus enfant(s) (child process)
Les processus peuvent communiquer ou se synchroniser entre eux : on parle de communication inter-processus (Inter-Process Communication ou IPC)
Le syst `eme d’exploitation peut envoyer des signaux aux processus
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 17 / 56
Introduction Concepts de base
Le mode utilisateur (user) et le mode noyau (kernel)
Un processeur moderne a plusieurs modes de fonctionnement (rings) Dans le mode superviseur ou mode noyau ou mode kernel (ring 0) le processeur a acc `es `a toutes les ressources sans restriction. Le code du noyau d’un syst `eme d’exploitation est ex ´ecut ´e dans ce mode.
Dans le mode utilisateur ou user (ring>0, d ´epend de l’OS), le
processeur teste en permanence les permissions de ce qu’il ex ´ecute et g ´en `ere des interruptions logicielles (exceptions) en cas d’infraction. Les processus utilisateur sont ex ´ecut ´es dans ce mode.
Les niveaux de protection d’un processeur
Introduction Concepts de base
Les fichiers (files)
Syst `eme de rangement et labelisation des donn ´ees ind ´ependant du mat ´eriel.
Rangement dans une arborescence de r ´epertoires (directories)
Association d’un nom de fichier et d’attributs (type de fichier, propri ´etaire, groupe d’utilisateur, droits en lecture/ ´ecriture, attributs sp ´eciaux)
Le syst `eme de fichier (filesystem) g `ere le stockage physique des fichiers en maximisant la robustesse et la performance
Les fichiers sp ´eciaux permettent un interfac¸age simple avec le syst `eme d’exploitation ou le mat ´eriel
Les tuyaux (pipes) sont des fichiers sp ´eciaux permettant l’ ´echange d’information entre processus
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 19 / 56
Introduction Concepts de base
Les appels syst `eme (system calls)
Interface entre le noyau et les processus
M ´ecanisme de tr `es bas niveau souvent en langage machine (assembly code) : int ´egr ´e dans une biblioth `eque de fonctions (library)
Le m ´ecanisme des interruptions logicielles est utilis ´e pour passer le contr ˆole au noyau.
Les diff ´erentes cat ´egories d’appels syst `eme (liste non exhaustive) :
◮ Gestion des processus (r ´eplication de processus (fork), attente passive de fin d’ex ´ecution d’un processus enfant (waitpid), lancement de nouveau processus (exec), ...
◮ Gestion des signaux (sigaction)
◮ Gestion du syst `eme de fichier (cr ´eation de fichier (creat), lecture (read),
´ecriture (write), ...
◮ Gestion des volumes de stockage (association (mount), dissociation (unmount), ...
◮ Gestion des gestionnaires de p ´eriph ´erique (ioctl)
◮ ...
Introduction Concepts de base
L’interpr ´eteur de commandes (shell)
Interface primaire entre un utilisateur et le syst `eme
L’utilisateur saisit la commande au clavier apr `es l’invite de commande (prompt)
La sortie par d ´efault (stdout) de la commande se fait sous forme de texte dans la fen ˆetre du shell
Les sorties peuvent ˆetre redirig ´ees soit vers un fichier ou en entr ´ee d’un autre processus (stdin)
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 21 / 56
Introduction Architectures de syst `emes d’exploitation
Architectures de syst `emes d’exploitation
Syst `emes monolithiques
Tout le code du noyau tourne dans le ring 0, gestionnaires de p ´eriph ´eriques (drivers) compris
Ces syst `emes n’utilisent que 2 modes de fonctionnement (ring) du processeur : le ring 0 pour le noyau et le ring 1 pour les processus utilisateur.
Le code du noyau est tr `es volumineux
Robustesse moindre : plus de code tourne en mode superviseur R ´eactivit ´e meilleure : le protocole d’acc `es au mat ´eriel est le plus simple possible
Exemple : linux du type monolithique modulaire (les drivers peuvent ˆetre charg ´es `a la demande).
Introduction Architectures de syst `emes d’exploitation
Syst `emes `a couches (layered systems)
Ce syst `eme est organis ´e en plusieurs niveaux imbriqu ´es qui correspondent `a plusieurs rings du processuer
Dans le sens du plus au moins privil ´egi ´e : distribution du temps
processeur (Computer Processing Unit ou CPU), gestion de la m ´emoire, communication homme-processus, gestion des entr ´ees-sorties
(Inputs/Outputs ou IOs), programmes utilisateurs
Cette architecture logicielle est renforc ´ee par le mat ´eriel : le pentium supporte au moins 4 rings
MULTICS est la seule impl ´ementation de cette architecture `a l’heure actuelle
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 23 / 56
Introduction Architectures de syst `emes d’exploitation
Machines virtuelles (virtual machines)
Id ´ee : faire tourner plusieurs syst `emes d’exploitation sur la m ˆeme machine
Un nano-noyau assure l’interfac¸age entre le mat ´eriel et les syst `emes d’exploitation h ˆotes
On parle d’exo-noyau (exokernel) lorsque seule une partie des ressources est partag ´ee. Un exo-kernel ne tourne pas forc ´ement en mode superviseur.
Introduction Architectures de syst `emes d’exploitation
Exemples de machines virtuelles
Machine virtuelle MSDOS sous Windows (exokernel) : le partage des ressources est g ´er ´e au niveau du noyau de Windows
VMWare (exokernel) : un module noyau doit ˆetre charg ´e pour g ´erer le partage des ressources
Dosbox sous linux : on parle plut ˆot d’ ´emulation car le mat ´eriel est acc ´ed ´e au moyen des m ´ecanismes classiques disponibles dans l’espace user.
Xen (paravirtualiseur ou hyperviseur) : c’est un nano-noyau qui permet d’offrir aux syst `emes d’exploitation h ˆotes une interface avec le mat ´eriel qui est normalis ´ee.
Adeos (nanokernel) : couche logicielle permettant le partage de
ressources mat ´erielles par plusieurs syst `emes d’exploitation concurrents, y compris plusieurs instances d’un m ˆeme syst `eme. Xenomai et RTAI, 2 syst `emes temps-r ´eel bas ´es sur linux sont des clients de adeos.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 25 / 56
Introduction Architectures de syst `emes d’exploitation
Micro-noyau
Id ´ee : mettre le moins de code possible dans le noyau et d ´eporter le maximum de code en mode prot ´eg ´e. Cette architecture est aussi appel ´ee micro-noyau (microkernel)
Ce syst `eme est beaucoup plus robuste qu’un syst `eme monolithique car le nombre de ligne de code en mode supervisuer est tr `es r ´eduit
Les drivers sont d ´eport ´es en mode utilisateur. Si ils commettent une action interdite ils peuvent ˆetre tu ´es (killed) et relanc ´es. Ce syst `eme est donc tol ´erant aux fautes
Les drivers acc `edent au mat ´eriel via un m ´ecanisme logiciel de protection d’o `u une perte de r ´eactivit ´e
Exemple : Mach, Minix, Windows (de type micro-noyau enrichi car certaines fonctions tr `es sollicit ´ees sont mises dans le noyau)
Introduction Architectures de syst `emes d’exploitation
Syst `emes temps-r ´eel
Le noyau permet de respecter des contraintes temporelles fortes R ´eactivit ´e par rapport aux interruptions mat ´erielles
Cr ´eation de t ˆaches p ´eriodiques avec une fluctuation de la p ´eriode (jitter) minimale
Exemples : VXWorks (micro-noyau temps-r ´eel), QNX (micro-noyau temps-r ´eel UNIX-like), Xenomai (monolithique modifi ´e avec micro-noyau sous-jacent tournant sur une machine virtuelle nano-noyau adeos)
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 27 / 56
Processus
Plan
1 Introduction Plan du cours Bibliographie D ´efinition Historique
Concepts de base
Architectures de syst `emes d’exploitation
2 Processus Introduction
Communication inter-processus (IPC) Ordonnancement (scheduling)
Processus Introduction
Introduction
D ´efinitions
Processus : s ´equence d’instructions ex ´ecut ´ees par le processeur.
Sur un syst `eme multit ˆaches, l’illusion du parall ´elisme est donn ´ee en r ´ealisant un multiplexage temporel de la ressource CPU et en la distribuant entre les diff ´erents processus suivant une loi appel ´ee ordonnancement (scheduling).
Les processus ne sont pas tous ´egaux. Certains sont prioritaires et doivent ˆetre trait ´es rapidement car ils servent par exemple au bon fonctionnement du syst `eme d’exploitation.
Chaque processus fonctionne de mani `ere cloisonn ´ee par rapport aux autres. Le contexte d’un processus est l’ ´etat courant du mat ´eriel (processeur principalement) lorsque ce processus est en cours d’ex ´ecution.
Le d ´ecoupage temporel du temps CPU entre les diff ´erents processus implique une commutation de contexte du mat ´eriel pour sauvegarder le contexte courant du processus en cours de suspension et la restauration du contexte du processus sur le point d’ ˆetre r ´eveill ´e.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 29 / 56
Processus Introduction
Cr ´eation d’un processus
Les 3 situations de cr ´eation d’un processus :
◮ Initialisation du syst `eme
◮ Cr ´eation d’un processus enfant par un processus existant
◮ Cr ´eation d’un processus par un utilisateur
Lors du d ´emarrage d’un syst `eme, un programme bien pr ´ecis est lanc ´e qui est charg ´e du lancement de tous les processus n ´ecessaires au bon fonctionnement du syst `eme. Sous UNIX, ce programme s’appelleinit.
Certains processus actifs en permanence lorsque le syst `eme est en marche s’appellent des d ´emons (daemons). Ils servent `a effectuer des t ˆaches de service telles que la gestion des t ˆaches d’impression, la gestion des connexions externes, la gestion de la fen ˆetre de login sous Xwindows, ...
Processus Introduction
Fin d’un processus
Les 4 situations d’arr ˆet d’un processus :
◮ Sortie normale sans erreur (volontaire)
◮ Sortie normale avec erreur (volontaire)
◮ Le processus commet une erreur fatale (involontaire)
◮ Le processus est tu ´e par un autre processus (involontaire)
Les 2 premi `eres situations de sortie volontaire sont provoqu ´ees par une instruction sp ´ecifique du processus (exitsous UNIX) avec un code de sortie qui correspond soit `a une sortie normale soit `a une sortie avec erreur.
Les 2 derni `eres situations sont provoqu ´ees par le syst `eme d’exploitation qui arr ˆete imm ´ediatement le processus en cours soit parce qu’il a commis une infraction soit parce qu’un autre utilisateur ayant des droits plus ´elev ´es a envoy ´e un appel syst `eme de type kill.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 31 / 56
Processus Introduction
Hi ´erarchie des processus
Lorsqu’un processus parent cr ´e ´e un ou plusieurs processus enfant(s), les enfants restent li ´es d’une certaine mani `ere aux parents.
Comme les enfants peuvent eux-m ˆemes donner naissance `a des enfants, on peut avoir toute une arborescence ou hi ´erarchie de processus li ´es entre eux.
Il est possible d’envoyer un signal `a une hi ´erarchie de processus.
Lorsqu’un processus enfant s’arr ˆete, le parent en est inform ´e.
Exemple : commandepstreesous UNIX.
Processus Introduction
Etat des processus
En cours d’ex ´ecution (running) : le CPU ex ´ecute le processus `a cet instant
Pr ˆet (ready) : le processus attend que le CPU ait finit d’ex ´ecuter d’autres processus
Bloqu ´e (blocked) : le processus est en attente d’un ´ev ´enement externe
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 33 / 56
Processus Introduction
Les processus l ´egers (threads)
Les threads partagent le m ˆeme espace d’adressage, donc les m ˆemes variables et le m ˆeme code. Seuls les registres du processeur diff `erent.
Les threads peuvent ˆetre g ´er ´ees dans l’espace user ou par le kernel.
Les threads impliquent de g ´erer certains nouveaux probl `emes :
◮ Acc `es simultan ´e `a un m ˆeme fichier : que se passe t’il si un thread ferme le fichier alors que l’autre est en train de le lire ?
◮ Allocation dynamique : si un thread a besoin de plus de m ´emoire en m ˆeme temps qu’un autre ?
◮ Si un thread commet une erreur, affiche la valeur deerrnoet qu’ `a ce moment-l `a un autre thread commet une erreur.
◮ ...
Processus Communication inter-processus (IPC)
Communication inter-processus
Introduction
Comment communiquer des donn ´ees entre processus ? Comment synchroniser la transmission des donn ´ees ? Comment ´eviter les situations de blocage ?
Comment g ´erer l’acc `es concurrent `a des ressources communes ?
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 35 / 56
Processus Communication inter-processus (IPC)
Situation de comp ´etition (race condition)
Deux processus ou plus ´ecrivent puis lisent des donn ´ees et le r ´esultat d ´epend de quel processus a ´et ´e le premier.
Exemple : competition entre 2 threads
Processus Communication inter-processus (IPC)
Section critique (critical section)
Pour ´eviter les situations de comp ´etition, il faut d ´efinir une section critique Les conditions pour r ´ealiser une section critique :
◮ Il ne peut y avoir plus d’un processus dans sa section critique en m ˆeme temps
◮ Un processus en dehors de sa section critique ne peut bloquer un autre processus
◮ Aucun processus ne peut bloquer en permanence pour entrer dans sa section critique
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 37 / 56
Processus Communication inter-processus (IPC)
Exclusion mutuelle avec attente active (mutual exclusion with busy waiting)
Alternance stricte r ´esoulue avec un verrou rotatif (spin lock)
Algorithme de Peterson (attente active) : r ´esolution de la comp ´etition entre 2 threads
Instruction processeur
Processus Communication inter-processus (IPC)
Alternance stricte
while( 1 ) {
while( turn != 0 );
/* section critique */
/* ... */
turn = 1;
/* section non critique */
/* ... */
}
while( 1 ) {
while( turn != 1 );
/* section critique */
/* ... */
turn = 0;
/* section non critique */
/* ... */
}
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 39 / 56
Processus Communication inter-processus (IPC)
Algorithme de Peterson
flag[0] = flag[1] = turn = 0;
P0: flag[0] = 1;
turn = 1;
while( flag[1] && turn == 1 );
// do nothing // critical section ...
// end of critical section flag[0] = 0;
P1: flag[1] = 1;
turn = 0;
while( flag[0] && turn == 0 );
// do nothing // critical section ...
// end of critical section flag[1] = 0;
Processus Communication inter-processus (IPC)
Instruction processeur i86 : XCHG
LOCK: ; mutex pointer is in EBX; clobbers EAX XOR EAX, EAX ; EAX = 0
XCHG EAX, [EBX] ; atomic exchange AND EAX, EAX ; test if EAX = 0
JZ LOCK ; if we got a zero, spin-wait RET
UNLOCK: ; mutex pointer is in EBX MOV [EBX], 1 ; release the lock RET
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 41 / 56
Processus Communication inter-processus (IPC)
Probl `eme d’inversion de priorit ´e
Consid ´erons 2 processus H de priorit ´e haute et B de priorit ´e basse qui partagent un acc `es `a une ressource commune
La strat ´egie d’ordonnancement fait que H est plac ´e en mode((running)) d `es qu’il est((ready))
Supposont que B soit dans une section critique et qu’ `a ce moment H passe du mode((blocked))au mode((ready)).
H est donc mis en mode((running))et B est mis en mode((ready)). Or H veut acc ´eder `a la section critique et bloque donc sur le m ´ecanisme d’exclusion mutuelle sans aucun espoir que B passe en mode((running)) et lib `ere le verrou.
Sommeil et r ´eveil d’un processus (Sleep and wakeup)
Pour ´eviter les attentes actives, utilisation desleepetwakeup.
Processus Communication inter-processus (IPC)
S ´emaphore
Methode classique pour acc ´eder `a une ressource commune
Le s ´emaphore est un compteur qui est initialis ´e `a la valeur du nombre de ressources partag ´ees `a prot ´eger
Lorsqu’il n’y a qu’une seule ressource `a partager, on parle de s ´emaphore binaire ou mutex
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 43 / 56
Processus Communication inter-processus (IPC)
S ´emaphores : exemple du producteur-consommateur
BufferSize = 3;
semaphore mutex = 1; // access to critical section semaphore empty = BufferSize; // number of empty slots semaphore full = 0; // number of full buffer slots Producer() {
int widget;
while (TRUE) { // loop forever
make_new(widget); // create a new widge
down(empty); // decrement the empty semaphore down(&mutex); // enter critical section
put_item(widget); // put widget in buffer up(&mutex); // leave critical section
up(&full); // increment the full semaphore }
}
Processus Communication inter-processus (IPC)
S ´emaphores : exemple du producteur-consommateur
Consumer() { int widget;
while (TRUE) { // loop forever
down(&full); // decrement the full semaphore down(&mutex); // enter critical section
remove_item(widget);// take a widget
up(&mutex); // leave critical section
up(empty); // increment the empty semaphore consume_item(widget);// consume the item
} }
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 45 / 56
Processus Communication inter-processus (IPC)
Mutex
Un mutex est un cas particulier d’un s ´emaphore qui n’aurait que 2 ´etats : 0 ou 1
Un mutex est typiquement utilis ´e lorsqu’il faut prot ´eger une section critique
Processus Communication inter-processus (IPC)
Moniteurs (monitors)
Ensemble de proc ´edure, variables, structures de donn ´ees regroup ´ees dans un objet sp ´ecial appel ´e moniteur
Les processus externes au moniteur peuvent appeler les proc ´edures du moniteur mais une seule proc ´edure du moniteur ne peut ˆetre active `a la fois
La synchronisation est g ´er ´ee par le compilateur qui sait que le moniteur est une structure sp ´eciale. C’est le compilateur qui rajoute les
m ´ecanismes de synchronisation ad ´equats.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 47 / 56
Processus Communication inter-processus (IPC)
Transmission de message (message passing)
Transmission de messages inter-processus
Les fonctionsendetreceivepermettent de passer des messages en garantissant l’int ´egrit ´e des donn ´ees
Processus Ordonnancement (scheduling)
Ordonnancement
Introduction
Partage du temps CPU entre les processus. Le passage d’un processus
`a un autre s’appelle la commutation de processus. C’est l’ordonnanceur du noyau qui effectue cette commutation.
La prise de d ´ecision des commutations s’effectue de mani `ere p ´eriodique (”tic” du syst `eme)
Deux principaux types de comportement des processus : processus d ´edi ´es aux entr ´ees-sorties et processus d ´edi ´es aux calculs
Quand commuter les processus : quand un processus se termine, quand un processus bloque sur une entr ´ee/sortie, un s ´epaphore, ...
Eventuellement : quand un nouveau processus est cr ´e ´e, quand une interruption mat ´erielle intervient.
Diff ´erents objectifs d’ordonnancement : ´equit ´e, veiller `a ce qui la politique d’ordonnencement soit respect ´ee, ´equilibre. Pour les syst `emes
interactifs : temps de r ´eponse court, ergonomie adapt ´ee aux attentes des utilisateurs. Pour les syst `emes temps-r ´eel : respect strict des d ´elais, d ´eterminisme.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 49 / 56
Processus Ordonnancement (scheduling)
Ordonnancement FCFS ou FIFO
First Come First Served : les processus sont d ´emarr ´es dans l’ordre o `u ils sont lanc ´es et tournent jusqu’ `a ce qu’ils bloquent
Inconv ´enient : pas adapt ´e aux syst `emes interactifs
Processus Ordonnancement (scheduling)
Ordonnancement round robin
Chaque processus obtient un quantum de temps CPU. L’ordonnanceur distribue de mani `ere cyclique ces quantums aux processus.
Exemple de Pb : avec un quantum de 100ms, si 10 utilisateur appuient simultan ´ement sur une touche du clavier, les 10 processus
correspondants vont ˆetre r ´eveill ´es successivemnt et consommer leur quantum. Le dernier utilisateur servi devra attendre 1s.
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 51 / 56
Processus Ordonnancement (scheduling)
Ordonnancement par priorit ´e (priority scheduling)
Tout les processus ne sont pas ´egaux : certains doivent ˆetre trait ´es prioritairement
Avec un ordonnancement par priorit ´e, le syst `eme donne toujours la main
`a la t ˆache de plus haute priorit ´e
La priorit ´e peut ˆetre modifi ´ee dynamiquement `a chaque periode de l’ordonnanceur pour ´eviter qu’un seul processus n’occupe tout le temps CPU
Processus Ordonnancement (scheduling)
Ordonnancement garanti (guaranteed scheduling)
Garanti un partage ´equitable du temps CPU entre utilisateur ayant une m ˆeme priorit ´e
Le syst `eme conserve un historique du temps CPU cumul ´e de tous les processus afin de r ´ealiser l’ ´equilibre
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 53 / 56
Processus Ordonnancement (scheduling)
Ordonnancement par lotterie (lottery scheduling)
L’ordonnancement garanti est difficile `a impl ´ementer.
Une des solutions consiste `a tirer au sort quel processus a droit au CPU Plus un processus est prioritaire, plus il dispose de tickets parmis l’ensemble des tickets soumis au tirage al ´eatoire
Processus Ordonnancement (scheduling)
Ordonnancement de processus l ´eger (thread scheduling)
L’ordonnancement des threads n’est possible que pour les threads noyau Il est possible de d ´efinir un politique d’ordonnancement des threads diff ´erente de celle des processus
Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 55 / 56
Processus Ordonnancement (scheduling)
Ordonnancement temps-r ´eel (real-time scheduling)
Doit ˆetre d ´eterministe en temps
Les t ˆaches p ´eriodiques doivent ˆetre r ´eveill ´ees avec une p ´eriodicit ´e parfaite (erreur<100 micro-secondes)
Le temps de r ´eponse aux interruptions doit ˆetre le plus court possible.