Академический Документы
Профессиональный Документы
Культура Документы
Formation Continue
Anne 2010
Systmes d'exploitation
Systmes d'exploitation
1 2 3 1
Introduction
Gestion de la mmoire
Systmes d'exploitation
Sommaire
1 Introduction Dnition Historique Types de systmes d'exploitation Architecture matrielle 2 Conception des sytmes d'exploitation 3 Gestion des processus 1 Gestion de la mmoire
Systmes d'exploitation
Cours 1
Sommaire
1
Introduction Dnition Historique Types de systmes d'exploitation Architecture matrielle
2 3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 1
Systmes d'exploitation
Cours 1
Systmes d'exploitation
Cours 1
Systmes d'exploitation
Cours 1
1 Sparer les applications des spcicits du matriel : portabilit 2 Sparer les applications des limitations du matriel : ni
inni
Systmes d'exploitation
Cours 1
1 Sparer les applications des spcicits du matriel : portabilit 2 Sparer les applications des limitations du matriel : ni
inni
Systmes d'exploitation
Cours 1
1 Sparer les applications des spcicits du matriel : portabilit 2 Sparer les applications des limitations du matriel : ni
inni
Systmes d'exploitation
Cours 1
ne pas rinventer la
Systmes d'exploitation
Cours 1
Pourquoi un SE ?
Les ressources matrielles sont complexes dtails techniques embtants
Contrleur de disquettes NEC PD765 Possde 16 commandes, manipules criture de 1 9 octets dans des registres : lecture/criture d'un secteur (13 paramtres cods sur 9 octets) dplacement du bras de lecture initialisation du contrleur et calibration des ttes de lecture Retourne 23 champs d'tat et d'erreurs cods sur 7 octets. Il faut grer soi-mme le dmarrage et la mise en veille du moteur (compromis entre surcot temps et usure). Le programmeur doit-it vraiment grer a ? ! ?
R. Bonidal (FC 2010) Systmes d'exploitation Cours 1 7
Un rle de gestionnaire
exemple : Partage d'imprimante Machine multi-utilisateurs avec service d'impression. Plusieurs programmes dmarrs susceptibles d'imprimer : verrouillage temporaire de l'accs l'imprimante
Systmes d'exploitation
Cours 1
Un rle de gestionnaire
Pour grer l'accs une ressource coteuse. Il faut : connatre l'utilisateur de la ressource grer les accs concurrentiels viter les conits entre les programmes/usagers
Systmes d'exploitation
Cours 1
Fonctionnalits d'un SE
Buts d'un systme d'exploitation : dcharger le programmeur d'une tache norme et fastidieuse
protger le systme et ses usagers de fausses manipulations orir une vue simple/uniforme/cohrente de la machine et des ressources
Systmes d'exploitation
Cours 1
10
Systmes d'exploitation
Cours 1
11
Sommaire
1
Introduction Dnition Historique Types de systmes d'exploitation Architecture matrielle
2 3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 1
12
Premire gnration 19401955 : Relais et tubes vide, programms par tableaux d'interrupteurs Trs lent, cycle mesur en secondes
Systmes d'exploitation
Cours 1
13
Systmes d'exploitation
Cours 1
14
Suivent direntes volutions : Multi-utilisateurs Extension de la multi-programmation vers le temps partag Premier systme temps partag CTSS (MIT) MULTICS (MIT - Bell Labs - General Electric)
R. Bonidal (FC 2010) Systmes d'exploitation Cours 1 15
Systmes d'exploitation
Cours 1
16
Systmes d'exploitation
Cours 1
17
Systmes d'exploitation
Cours 1
18
Sommaire
1
Introduction Dnition Historique Types de systmes d'exploitation Architecture matrielle
2 3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 1
19
Systmes d'exploitation
Cours 1
20
Systmes pour mainframes Grosses machines, beaucoup de ressources Batch, transactionnel ou temps partag
Systmes d'exploitation
Cours 1
21
Systmes temps rel Respect de contraintes temporelles Temps rel dur vs Temps rel mou
Sommaire
1
Introduction Dnition Historique Types de systmes d'exploitation Architecture matrielle
2 3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 1
23
Systmes d'exploitation
Cours 1
24
un peu d'histoire....(encore !)
Architecture de von Neumann Pas de sparation donnes/instructions ! Architecture rvolutionnaire en 45 ...mais un peu dpass !
Systmes d'exploitation
Cours 1
26
Et maintenant ...
Architecture moderne Unit de calcul et de contrle runies BUS pour change de donnes Mmoire non uniforme !
Systmes d'exploitation
Cours 1
27
Un exemple d'instruction
Decode
Execute
Mode noyau : pas de restrictions Mode utilisateur : pas toutes les instructions Le systme d'exploitation s'excute en mode noyau Les programmes s'excutent en mode utilisateur Les services du systme sont accessibles via des appels systmes qui basculent en mode noyau le temps d'excuter le service
Systmes d'exploitation Cours 1 29
La memoire
Temps d'accs 1 ns 2 ns 10 ns 10 ms Registres Caches Mmoire principale Disque Gr par Compilateur Materiel OS OS Capacit < 1 Ko 1 Mo 1 Go 1 To
Une mmoire non uniforme mais hirarchique Des rles dirents Des technologies direntes Des gestions direntes
bus de donnes : circulation donnes et instructions bus d'adressage : adresses (mmoire ou priphrique) bus de contrle : actions demandes (criture ou une lecture, entre/sortie de ou vers un priphrique) + interruptions matrielles (IRQ)
Systmes d'exploitation Cours 1 31
Systmes d'exploitation
Cours 1
32
Communiquer ...
...avec quoi ?
Tout ce qui entre ou sort de l'ordinateur Disque dur, rseau, clavier, souris, ...
...est ce simple ?
Le SE doit grer les ux de donnes entre le CPU et les priphriques. Les priphriques sont lents. Les priphriques peuvent tre asynchrones.
R. Bonidal (FC 2010) Systmes d'exploitation Cours 1 33
Communiquer ...
Systmes d'exploitation
Cours 1
34
Communiquer ...
Systmes d'exploitation
Cours 1
34
Communiquer ...
...en interrompant Le priphrique interrompt le CPU en l'avertissant qu'il y a de nouvelles donnes. MODERNE !
Systmes d'exploitation
Cours 1
34
write
transmet le contrle au
programme d'E/S Le prog d'E/S prpare le priphrique Le CPU doit attendre la n du L'attente peut tre longue (imprimante, graveur, ...) Le prog d'E/S rend la main, on continue
write
Systmes d'exploitation
Cours 1
35
Systmes d'exploitation
Cours 1
36
Le gestionnaire d'interruptions
Procdure d'interuption : Sauvegarde du contexte d'excution du programme en cours. Lire l'emplacement du programme destin grer cet vnement (table d'association prtablie) Excution de la routine Restauration du contexte Reprise du programme
Systmes d'exploitation
Cours 1
37
Exemple d'interruption
Interruptions
Le gestionnaire d'interruptions prpare le prog d'E/S et le lance Il recharge le prog utilisateur qui s'excute en mme temps que les E/S : pas d'attente la n du module d'E/S le gestionnaire d'interruption reprend la main pour examiner son tat Le prog utilisateur reprend son cours (... si tout s'est bien pass)
Systmes d'exploitation
Cours 1
38
Les E/S Retourne l'tat du module d'E/S : normal ou erreur Les exceptions Dbordements, instructions illgales, rfrence hors espace utilisateur Timers Tick horloge Suspend un programme pour eectuer des tches annexes Dfauts matriels
Systmes d'exploitation
Cours 1
39
IRQ 0 : Horloge Systme IRQ 1 : Clavier IRQ 2 : N/A (cascade du second contrleur) IRQ 3 : Port srie (COM2/COM4) IRQ 4 : Port srie (COM1/COM3) IRQ 5 : LPT2 (carte de son) IRQ 6 : Lecteur de disquettes
R. Bonidal (FC 2010)
IRQ 7 : Port parallle (LPT1) IRQ 8 : Horloge temps rel IRQ 9 : N/A (PCI) IRQ 10 : N/A IRQ 11 : N/A (USB) IRQ 12 : N/A (PS/2) IRQ 13 : Coprocesseur math. IRQ 14 : Disque dur primaire IRQ 15 : Disque dur secondaire
Systmes d'exploitation Cours 1 40
Rfrences bibliographiques
La bible (aussi disponible en franais) :
Modern Operating Systems ,
Andrew S. Tanenbaum
Le noyau Linux ,
Multiboot :
http://www.bellamyjc.org/fr/multiboot.html
R. Bonidal (FC 2010) Systmes d'exploitation Cours 1 41
Sommaire
1 Introduction 2 Conception des sytmes d'exploitation Rle d'un SE Structures de SE 3 Gestion des processus 1 Gestion de la mmoire
Systmes d'exploitation
Cours 2
42
Sommaire
1 2
Introduction
3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 2
43
Systmes d'exploitation
Cours 2
44
Le programme eectue des tches processus Les tches sont excutes par le matriel ressources
Systmes d'exploitation
Cours 2
44
Rle du SE
Grer les processus Grer les ressources (pour le compte des processus)
Systmes d'exploitation
Cours 2
45
Protection assiste par le matriel 2 niveaux d'excutions : mode utilisateur mode privilgi (ou superviseur, noyaux, etc ...)
Systmes d'exploitation
Cours 2
46
Exemples de protections
Entres/Sorties
Toutes les instructions E/S sont privilgies Elles passent toutes par le noyau
La mmoire
Certaines rgions ne doivent pas tre vu par les utilisateurs tables d'authentications zones d'auteurs utilisateurs Gestion de la mmoire au niveau matriel
Temps processeur viter les boucles innies R. Bonidal (FC 2010) Systmes d'exploitation
Cours 2
47
Les aspects du SE
2 aspects Passif : orir des services aux applications. Actif : Surveillance et contrle.
Quelques termes : Interface de commande (Texte ou graphique) : application standard Appel systme(System call API) : Fonctions fournies par le SE aux applications Noyau : Systme qui joue le rle actif et qui implante les appels systmes
R. Bonidal (FC 2010) Systmes d'exploitation Cours 2 48
Gestion des E/S Contrler tous les priphriques Unier les interfaces Gestion des chiers Robustesse Scurits
Systmes d'exploitation
Cours 2
49
Processus et CPU
Processus
Un processus = code + donnes CPU : Control Process Unit Unit de Contrle des Traitements Le CPU = ressource qui sert excuter le code des processus
Rle du SE pour les processus
(R)Activer un processus Suspendre un processus Tuer un processus Contler l'excution d'un processus De manire optimale pour le CPU
R. Bonidal (FC 2010) Systmes d'exploitation Cours 2 50
Systmes d'exploitation
Cours 2
51
Processus et mmoire
1 processus mmoire) La mmoire = code + donnes du processus pendant son excution
Rle du SE
Charger un processus en mmoire Librer la mmoire en n d'excution d'un processus Allouer et librer de la mmoire dynamiquement demande par les processus
Systmes d'exploitation
Cours 2
52
Comment organiser les processus en mmoire ? (partitionnement, segmentation, ...) Comment protger les zones mmoires de chaques processus ? Comment s'assurer qu'il y a assez de mmoire pour un processus ?
Systmes d'exploitation
Cours 2
53
Rle du SE
Lecture criture
Systmes d'exploitation
Cours 2
54
Autres composants
Gestion des E/S (clavier, souris, cran, ...) Gestion du rseau
rseau local SE distribu
Gestion des comptes utilisateurs (groupes, ...) Gestion de l'alimentation plus haut niveau ( SE) Terminaux/Interprtes de commandes (shell)
R. Bonidal (FC 2010) Systmes d'exploitation Cours 2 55
Sommaire
1 2
Introduction
3 1
Gestion de la mmoire
Systmes d'exploitation
Cours 2
56
Structure d'un SE
Plusieurs possibilits de conception pour un SE 1 Sans relle structure
Systmes d'exploitation
Cours 2
57
Structure d'un SE
Plusieurs possibilits de conception pour un SE 1 Sans relle structure 2 En couches
Systmes d'exploitation
Cours 2
57
Structure d'un SE
Plusieurs possibilits de conception pour un SE 1 Sans relle structure 2 En couches 3 noyau
Monolithique Microkernel Hybride Exokernel
Systmes d'exploitation
Cours 2
57
Structuration hirarchique mal dnie Une entit peut faire appel aux services de toutes les couches infrieures Restrictions limites, peu de contrles : pas de scurit Exemple : MS-DOS
Systmes d'exploitation
Cours 2
58
couches
Structuration hirarchique bien dnie Une couche ne fait appel qu'au services de la couche directement infrieure Bonne thorie gnrale, extensible Trs peu ecace, trop d'intermdiaires Exemple : (1968)
THE de Djiksrta
Systmes d'exploitation
Cours 2
59
noyau
Structuration 2 niveaux gnralement :
1 2
Les applications en mode utilisateurs peuvent (doivent) demander des services au noyau travers des appels systme Exemple d'un noyau monolithique
Systmes d'exploitation
Cours 2
60
Interface)
Cas particulier d'interruption logicielle Les 3 plus courantes : Win32 API, POSIX API et JAVA API Pourquoi des API ? ...Pour comprendre les rponses des appels systmes !
Systmes d'exploitation
Cours 2
61
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
Exemple de l'appel
Systmes d'exploitation
Cours 2
62
noyau : Monolithique
Un seul programme
The big mess gchis de mmoire (tout est charg) possibilit de modularit (Linux) Exemple : Linux
Systmes d'exploitation
Cours 2
63
noyau : Micronoyau
Noyau rduit au presque minimum (microkernel) Gre principalement l'ordonnancement et les transferts de messages entre les programmes Les drivers et les applications s'excutent en mode utilisateur Systme client-serveur Portable et facilement maintenable Ecacit plutt mauvaise (pas d'optimisation) Exemples : Mach, Minix
R. Bonidal (FC 2010) Systmes d'exploitation Cours 2 64
noyau : Hybride
Compromis entre le kernel monolithique et le micorkernel Les drivers s'excutent en mode noyau Exemple : Windows NT
optimsation
Systmes d'exploitation
Cours 2
65
Windows 2000
noyau : Exonoyau
Exokernel est un petit noyau grant gneralement des machines virtuelles excutes en mode utilisateur Les ressources sont alloues aux machines virtuelles par l'exokernel Un SE de SE en quelque sorte
Systmes d'exploitation
Cours 2
67
Le cas de linux
Approche descriptive Interface d'appels systmes Sous-systmes de gestion des processus :
Systmes d'exploitation
Cours 2
68
Le cas de linux
fournit des services aux processus utilisateurs fournit le traitement des interruptions
Systmes d'exploitation
Cours 2
69
Dirence interruption/exception
Une interruption est provoque par un signal provenant du monde extrieur au processeur, et modiant le comportement de celui-ci. Une exception est un signal provoque par un dysfonctionnement du programme en cours d'excution Chaque interruption ou exception dispose d'un sous-programme (handler) qui prend en charge l'vnement correspondant : table de vecteurs d'interruption ou IDT : Interrupt Descriptor Table dans le langage Linux.
Systmes d'exploitation
Cours 2
70
Sommaire
1 Introduction 2 Conception des sytmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mmoire
R. Bonidal (FC 2010) Systmes d'exploitation Cours 3 71
Sommaire
1 2 3
Introduction
Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus
Gestion de la mmoire
Systmes d'exploitation Cours 3 72
Concepts
Processus et boot
Un premier processus (init) est lanc S'excute (rside) jusqu' l'arrt du systme Les autres processus sont alors crs partir d'init (ou d'un de ses descendants)
Systmes d'exploitation
Cours 3
73
Concepts
Cet espace est a priori virtuel Il contient un ensemble de registres (compteur ordinal, pointeur de pile, ...) ncessaires au bon fonctionnement du processus
Systmes d'exploitation
Cours 3
74
Concepts
Processus et noyau
La smantique des interactions entre le kernel et les processus utilisateurs est dnie travers l'API systme : les appels
systme
Ainsi le kernel eectue les instructions pour le compte du processus Le kernel intervient galement quand un processus eectue une action interdite
division par zro dbordement de pile (stack overow) adressage mmoire incorrect (segmentation fault)
Concepts
L'espace usager (user space) qui contient des infos sur le processus La pile kernel (kernel stack) pour la gestion des fonctions de tous les processus en appel systme
Systmes d'exploitation Cours 3
76
Concepts
En rsum
Systmes d'exploitation
Cours 3
77
Concepts
tats
Systmes d'exploitation
Cours 3
78
Concepts
Alternance de sections actives, durant lesquelles des units de temps CPU (les gicles CPU, CPU burst) sont consommes, et de temps d'attentes d'E/S
Le passage d'un processus l'autre s'eectue par un changement de contexte (context switch) 2 mcanismes de gestion :
L'ordonnancement (scheduling) : choix du processus activer La synchronisation : gestion de l'accs une ressource partage
Systmes d'exploitation Cours 3 79
Sommaire
1 2 3
Introduction
Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus
Gestion de la mmoire
Systmes d'exploitation Cours 3 80
Changement de contexte
Interruption/activation de processus
changement de
contexte pour le systme (pour le CPU) Besoin d'un mcanisme de sauvegarde des donnes vitales du processus
Maintient d'une table (process table) des processus Chaque entre contient une structure, le PCB (Process Control Block), dcrivant le contexte d'un processus (structure task_struct sous Linux) PID, registres, compteur ordinal, tat du processus, temps CPU utilis, UID, GID, umask, rpertoire courant, descripteurs chiers, ...
Systmes d'exploitation Cours 3 81
Changement de contexte
Systmes d'exploitation
Cours 3
82
Sommaire
1 2 3
Introduction
Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus
Gestion de la mmoire
Systmes d'exploitation Cours 3 83
Ordonnancement
Scheduling
L'ordonnanceur (scheduler) choisit les processus qui vont pouvoir accder au CPU Pour la gestion de la mmoire virtuelle (espace d'adressage du processus) et du temps partag (accs CPU),
l'ordonnancement se fait deux niveaux
Une rpartition de haut niveau qui slectionne le prochain processus charger en mmoire (mmoire virtuelle) Une rpartition de bas niveau (dispatcher) qui slectionne, chaque fois que le CPU devient inactif, un processus parmi tous ceux prts
Excutions Trs frquentes Occasionnelles Performances demandes Excellentes Bonnes
Cours 3
Systmes d'exploitation
84
Ordonnancement
Files d'attente
Ide : gestion des accs par le d'attente Une le d'attente pour chaque priphrique (ressource) et par type d'E/S (lecture, criture, ...) Questions :
Ordre d'insertion des processus ? Mode de passage le
CPU ?
Systmes d'exploitation
Cours 3
85
Files d'attentes
Traitement par lots
Batch mode Pas d'ordonnancement de bas niveau Si demande d'E/S le CPU reste inactif durant le traitement
Systmes d'exploitation
Cours 3
86
Files d'attentes
Multiprogrammation
Si demande d'E/S, le CPU est libr pour traiter un autre processus
Systmes d'exploitation
Cours 3
87
Files d'attentes
Temps partag
Quantum de temps : dure de temps maximale alloue chaque processus
Systmes d'exploitation
Cours 3
88
Files d'attentes
Mmoire virtuelle
Systmes d'exploitation
Cours 3
89
Ordonnancement
Les algorithmes
Les critres
minimiser
maximiser
Temps coul entre soumission et n d'excution Temps de gestion (swap, changement de contexte, ...) Temps d'excution des E/S (processus interactifs) Taux d'activit du CPU Nombre de processus traits par unit de temps
Comment quantier ?
Faire des tests Faire des statistiques (moyenne, variance, mdiane, extremums, ...)
Systmes d'exploitation Cours 3 90
Ordonnancement
Les algorithmes
2 classes d'ordonnanceurs
1 2
Non premptifs : un processus ne relche le CPU que quand il a ni ou quand il passe en E/S Premptif : l'utilisation du CPU est sujette un quantum de temps Premptifs
Exemples
Non premptifs
Les algorithmes
Systmes d'exploitation
Cours 3
92
Les algorithmes
Shortest Job First (SJF) Plus Court d'Abord (PCA) Les processus ayant un minimum d'units CPU consommer sont mis en tte de liste En cas d'galit utiliser FCFS Problme
Comment connatre le temps CPU des processus ?
Systmes d'exploitation
Cours 3
93
Les algorithmes
Solutions
- tn est le temps du ne passage dans le CPU - pn est la prdiction faite au ne passage dans le CPU - a est un coecient de pondration (indice de conance)
Problme
Famine (starvation) des processus gourmands en CPU Vieillissement automatique des processus
Systmes d'exploitation Cours 3 94
Solution
Les algorithmes
Premptif : RR
Round Robin (RR) Algorithme du tourniquet FCFS premptif quantum de temps Un processus libre le CPU si :
Demande d'E/S Terminaison Fin du quantum de temps allou
Systmes d'exploitation
Cours 3
95
Les algorithmes
Premptif : RR
Problme
Choix du quantum
Si quantum long processus courts pnaliss Si quantum FCFS Si quantum trop court meilleure interactivit, mais trop de changement de PCB
Sous Unix Dpend de l'utilisation (serveur, ordinateur de bureau, ...) Gnralement 100ms
Systmes d'exploitation
Cours 3
96
Les algorithmes
Listes multiples
Systmes d'exploitation
Cours 3
97
Les algorithmes
Listes multiples
Les processus de niveau 2 ne seront activs que lorsque ceux de niveau 1 seront termins (eux-mmes activs quand la liste de niveau 0 sera vide)
Systmes d'exploitation
Cours 3
98
Les algorithmes
TAM = TAM =
0+(16)+(16+2)+(16+2+8) 4 0+(2)+(2+8)+(2+8+12) 4
= 15
= 8, 5
Large pnalit dans un systme non premptible mieux vaut passer du temps partag
Systmes d'exploitation Cours 3 99
Sommaire
1 2 3
Introduction
Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus
Gestion de la mmoire
Systmes d'exploitation Cours 3 100
Systmes d'exploitation
Cours 3
101
PID (Process IDentier) PPID (Parent Process IDentier) structure arborescente des processus UID (User IDentier) et GID (Group IDentier)
UID, GID rels : ceux de l'utilisateur du processus UID, GID eectifs : ceux du propritaire du processus
Systmes d'exploitation
Cours 3
102
Elle duplique l'espace d'adressage du processus original (code, donnes, variables, registres, descripteurs de chiers, ...) Le processus appelant la fonction fork() est le processus pre (parent process) Le processus cr est le processus ls (child process)
Systmes d'exploitation
Cours 3
103
fork()
de la librairie C
S'il en trouve une, il copie toute l'info du pre dans le bloc de contrle du ls Remarque
La seule dirence entre les 2 PCB sont les champs PID et PPID du processus et de son pre Souvent l'appel fork() est immdiatement suivi d'un appel la fonction exec() pour remplacer le code du pre
Systmes d'exploitation Cours 3 104
Sommaire
1 2 3
Introduction
Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus
Gestion de la mmoire
Systmes d'exploitation Cours 5 105
Systmes d'exploitation
Cours 5
106
Producteurs/Consommateurs
Lorsque des processus lgers souhaitent communiquer entre eux, ils peuvent le faire par l'intermdiaire d'une le. Il faut dnir le comportement avoir lorsqu'un thread souhaite lire depuis la le lorsque celle-ci est vide et lorsqu'un thread souhaite crire dans la le mais que celle-ci est pleine. Peut tre rsolu l'aide des smaphores.
Systmes d'exploitation
Cours 5
107
Lecteurs/Rdacteurs
Ce problme traite de l'accs concurrent en lecture et en criture une ressource. Plusieurs processus lgers (thread) peuvent lire en mme temps la ressource, mais il ne peut y avoir qu'un et un seul thread en criture. Peut tre rsolu l'aide des smaphores.
Systmes d'exploitation
Cours 5
108
cinq philosophes (initialement mais il peut y en avoir beaucoup plus) se trouvent autour d'une table ; chacun des philosophes a devant lui un plat de spaghetti ; gauche de chaque assiette se trouve une fourchette.
Systmes d'exploitation
Cours 5
109
Un philosophe n'a que trois tats possibles : penser pendant un temps indtermin ; tre aam (pendant un temps dtermin et ni sinon il y a famine) ; manger pendant un temps dtermin et ni.
Systmes d'exploitation
Cours 5
110
Systmes d'exploitation
Cours 5
111
Race condition
Situation de comptition (Race condition)
Situation o plusieurs processus accdent la mme ressource, de manire concurrente (au mme moment , souvent la mmoire) Faille qui fait que le rsultat va dpendre de l'ordre d'accs la ressource par les dirents processus
Systmes d'exploitation
Cours 5
112
Race condition
Situation de comptition (Race condition)
Situation o plusieurs processus accdent la mme ressource, de manire concurrente (au mme moment , souvent la mmoire) Faille qui fait que le rsultat va dpendre de l'ordre d'accs la ressource par les dirents processus Que se passe-t-il si un processus est interrompu lors de son accs la ressource, laissant la main un autre processus qui utilse la mme ressource ?
Question
Systmes d'exploitation
Cours 5
112
Race condition
Situation de comptition (Race condition)
Situation o plusieurs processus accdent la mme ressource, de manire concurrente (au mme moment , souvent la mmoire) Faille qui fait que le rsultat va dpendre de l'ordre d'accs la ressource par les dirents processus Que se passe-t-il si un processus est interrompu lors de son accs la ressource, laissant la main un autre processus qui utilse la mme ressource ? Il faut un mcanisme d'exclusion mutuelle pour controler l'accs la ressource
Systmes d'exploitation Cours 5 112
Question
Solution
Systmes d'exploitation
Cours 5
113
Section critique
Une suite d'instructions d'un programme accdant une ressource partage est appele une section critique (SC)
1 2 3 4
tout moment, au plus un processus en SC Aucune hypothse sur la vitesse et le nombre de CPU Aucun processus s'excutant en dehors d'un SC ne doit bloquer les autres Aucun processus ne doit attendre indniment avant de pouvoir entrer dans une SC (viter les deadlock et la famine)
Systmes d'exploitation
Cours 5
114
Si erreur, l'ordinateur peut rester bloquer On repasse en monoprogrammation, on n'optimise pas l'usage du CPU Privilge trop imoprtant pour un processus utilisateur Que faire quand on a plusieurs CPU ?
Systmes d'exploitation
Cours 5
115
Verrous
Lock variables Le principe
Associer chaque ressource partage une variable verrou prenant la valeur LIBRE ou OCCUPE Ce verrou est consult et modi par chaque processus pour pouvoir accder la ressource
Exemple
Verrous
Problmes
1 2
On dplace le problme sur le verrou : le verrou devient la ressource partage Si l'ordonnanceur est premptif le processus peut tre interrompu entre le test du verrou et l'accs la ressource
Systmes d'exploitation
Cours 5
117
L'alternance stricte
L'alternance
Processus 0
Processus 1
Rpter { Tantque
;
(a_qui_le_tour != 0)
Rpter { Tantque
;
(a_qui_le_tour != 1)
Verrouillage avec attente active (spin lock) Viole la condition 3 de bonne gestion des race conditions Si un processus est trs long il peut bloquer un autre processus pendant un certain temps
Systmes d'exploitation Cours 5 118
Solution de Peterson
Combinaison d'alternance strict et de verrouillage
Solution de Peterson
int tour ; int interesse[2] ; void entrer_SC(int proc) { int autre = 1 - proc ; interesse[proc] = TRUE ; tour = proc ; while (tour == proc && intresse[autre] == TRUE) ; } void quitter_SC(int proc) { interesse[proc] = FALSE ; }
Cours 5 119
interesse[1] = TRUE tour = 1 Attente sur le while que processus 0 appelle quitter_SC()
Processus 0 et 1 appellent
entrer_SC()
interesse[0]=interesse[1] = TRUE tour = 0 puis tour = 1 Donc processus 0 en SC et processus 1 bloque sur le while
R. Bonidal (FC 2010)
Systmes d'exploitation
Solution matrielle
TSL : Test and Set Lock Certains processeurs disposent d'une instruction permettant d'eectuer de manire indivisible (atomique) le test de la valeur d'un registre et de lui assigner une nouvelle valeur Instruction TSL
Systmes d'exploitation
Cours 5
120
Inconvnients
Les processus doivent jouer le jeu et cooprer pour que les techniques fonctionnent Attente active
Conditions 3 et 4 de gestion des race conditions pas tjrs vries Inversion des priorits
Deux procesus H (haute priorit) et B (basse priorit) On active toujours le processus de plus haute priorit
Systmes d'exploitation
Cours 5
121
Les smaphores
Problme des Producteurs / Consommateurs Ressource partage
Un buer (mmoire tampon) de taille BUFFER_SIZE Un ou plusieurs producteurs produisent des objets Chaque producteur qui vient de produire un objet l'ajoute au buer S'il est plein, le producteur s'endort en attendant une place libre Un ou plusieurs consommateurs viennent retirer les objets Si le buer est vide, le consommateur s'endort Rgler les race conditions sur l'accs au buer
Systmes d'exploitation Cours 5 122
Objectifs
Problme
Les smaphores
Comment viter l'attente active ? 2 fonctions
sleep() wakeup()
Ide
Quand un processus appelle processus endormi Si un autre processus appelle
le
Systmes d'exploitation
Cours 5
123
Les smaphores
Problme des Producteurs / Consommateurs
#define BUFFER_SIZE 100 int buffer[BUFFER_SIZE] ; int cpt = 0 ; /* nbr d'objets dans le buffer */ void producteur() { int item ; while(TRUE) { item = produire_objet() ; if (cpt == BUFFER_SIZE) sleep() ; deposer_objet(item, buffer) ; ++cpt ; if (cpt == 1) wakeup(consommateur) ; } }
R. Bonidal (FC 2010)
void consommateur() { int item ; while(TRUE) { if (cpt == 0) sleep() ; item = retirer_objet(buffer) ; --cpt ; if (cpt == BUFFER_SIZE - 1) wakeup(producteur) ; consommer_objet(item) ; } }
Systmes d'exploitation Cours 5 124
Les smaphores
Problme
Conit sur la variable Illustration
cpt
Solution
Un consommateur teste cpt et trouve 0 L'ordonnanceur bascule sur un producteur Le producteur incrmente cpt et constate que le buer tait vide Le producteur lance un wakeup() perdu car le consommateur n'tait pas encore endormi !
wakeup()
les smaphores
Mmoriser le
Systmes d'exploitation
Cours 5
125
Les smaphores
Dnition Une smaphore est une variable qui Contrle l'accs une ressource partage Indique le nombre d'lments de la ressource qui sont disponibles Maintient une liste des processus bloqus en attente de cette ressource (s'il y en a)
Quand une smaphore ne peut pas prendre de valeur plus grande que 1, on parlera de smaphore binaire, ou de mutex (exclusion mutuelle)
Systmes d'exploitation
Cours 5
126
Les smaphores
Implantation possible d'une smaphore
les processus bloqus en attente de la ressource partage (qui ont cherch y accder alors qu'elle n'tait pas/plus disponible) Quand la smaphore est Quand elle est
<0
Les smaphores
2 oprations atomiques permettent de modier l'tat d'une smaphore
down(S) up(S)
Puis vrie si elle est toujours 0 Si c'est n'est pas le cas, sleep() est dclenche
(ou V) incrmente
(ou P) dcrmente
Exemple d'implantation
full
Initialise 0 avec une liste vide Contrle le nombre d'objet rangs dans le buer La liste contient les processus consommateurs bloqus empty Initialise BUFFER_SIZE avec une liste vide Contrle le nombre de places vides dans le buer La liste contient les processus producteurs bloqus mutex Une smaphore binaire initialise 1 Contrle l'entre et la sortie en SC
Systmes d'exploitation Cours 5 129
#define BUFFER_SIZE 100 int buffer[BUFFER_SIZE] ; /* Les smaphores doivent tre initialises avant usage */ sema_t mutex, full, empty ; sema_init(&mutex, 1) ; sema_init(&full, 0) ; sema_init(&empty, BUFFER_SIZE) ; void producteur() { int item ; while(TRUE) { item = produire_objet() ; down(&empty) ; down(&mutex) ; deposer_objet(item, buffer) ; up(&mutex) ; up(&full) ; } } void consommateur() { int item ; while(TRUE) { down(&full) ; down(&mutex) ; item = retirer_objet(buffer) ; up(&mutex) ; up(&empty) ; consommer_objet(item) ; } }
Cours 5
Systmes d'exploitation
130
Sommaire
1 Introduction 2 Conception des sytmes d'exploitation 3 Gestion des processus 1 Gestion de la mmoire Gestion des allocations mmoires Mmoire virtuelle
Systmes d'exploitation
Cours 6
131
Sommaire
1 2 3 1
Introduction
Systmes d'exploitation
Cours 6
132
Gestion de la mmoire
Objectifs
Ressource critique du systme grer : Connatre les zones libres de la mmoire physique Allouer de la mmoire au processus (viter le gaspillage) Rcuprer la mmoire la terminaison d'un processus Orir aux processus des services de mmoire virtuelle, de taille suprieure la mmoire physique technique de va-et-vient (swapping) et de pagination
Systmes d'exploitation
Cours 6
133
Gestion de la mmoire
Diversit de congurations
En fonction du type de systme :
Monoprogrammtion Multiprogrammtion
Systmes d'exploitation
Cours 6
134
Monoprogrammation
Gestion de la mmoire
Plutt basique car 1 seul processus en mmoire
Systmes d'exploitation
Cours 6
135
Multiprogrammation
Modlisation et valuation
Objectif de la multiprogrammation : optimiser l'utilisation CPU Point de vue naf
Si un processus calcule en moyenne pendant 20% de son temps 5 processus en mmoire pour une utilisation CPU optimale Vision optimiste car on suppose aucun temps d'attente en E/S Modlisation probabiliste de l'usage du CPU p : probabilit pour un processus d'tre en attente en E/S n : nombre de processus Taux d'utilisation du CPU : 1 pn
Systmes d'exploitation Cours 6 136
Multiprogrammation
Modlisation
Pourcentage d'utilisation du CPU 100 % 90 % 80 % 70 % 60 % 50 % 40 % 30 % 20 % 10 % 0% 0 1 2 3 4 5 20% d'attente en E/S 50% d'attente en E/S 80% d'attente en E/S 6 7 8 9 10
Multiprogrammation
Gestion de la mmoire
Partitions xes : division de l'espace mmoire en n partitions de tailles xes (initialisation du SE)
Une le de priorit par partition Fragmentation externe : un processus attend alors que des partitions sont libres
Systmes d'exploitation
Cours 6
138
Multiprogrammation
Gestion de la mmoire
Partitions xes : division de l'espace mmoire en n partitions de tailles xes (initialisation du SE)
Une le de priorit globale Fragmentation interne : grande partition pour un petit processus (mauvaise estimation)
Systmes d'exploitation
Cours 6
139
Multiprogrammation
Contrle de la mmoire
Comme plusieurs processus sont en mmoire simultanment, la multiprogrammation introduit deux problmes essentiels rsoudre :
1 2
Systmes d'exploitation
Cours 6
140
Un programme crit dans un langage autre que le langage machine fait appel des noms pour accder aux donnes et fonctions qu'il manipule Le programme en langage machine, lui, n'utilise pas ces noms, mais des adresses par lesquelles il accde ces donnes quel moment et comment se fait ce passage des adresses symboliques aux adresses systme ?
Systmes d'exploitation
Cours 6
141
Code absolu : adresses dtermines une fois pour toute lors de la compilation ou de l'assemblage
Pratique en monoprogrammation car 1 seul processus la fois est en mmoire Pas de protection, si ce n'est avec le SE (trs facile alors) Utilis dans certains systmes embarqus par exemple
Systmes d'exploitation
Cours 6
142
Systmes d'exploitation
Cours 6
143
Les adresses mises par le CPU l'excution sont donc des adresses physiques Grer par une entit spcique : la MMU (Memory Managment Unit) Fait l'aide de 2 registres :
Le registre de base : adresse du dbut de la partition Le registre limite : correspond la taille de la partition, permet de vrier si l'accs est autoris (protection mmoire)
Systmes d'exploitation Cours 6 144
Systmes d'exploitation
Cours 6
145
Multiprogrammation
code relogeable
Systmes d'exploitation
Cours 6
146
Multiprogrammation
Partitions variables
Systmes d'exploitation
Cours 6
147
Multiprogrammation
Allocation d'espace libre
Plusieurs stratgies possibles Le premier trou disponible (First Fit) Le plus petit trou disponible (Best Fit) Parcourir la liste des trous Le plus grand trou disponible (Worst Fit) Sauf si l'on rencontre un trou de taille adquate Le trou restant sera encore grand et donc utilisable Dans tous les cas il faut une bonne reprsentation
R. Bonidal (FC 2010) Systmes d'exploitation Cours 6 148
Multiprogrammation
Reprsentation de l'espace
Par bitmap : dcoupage en blocs d'allocation (gnralement de taille 2 )
Choix de n dlicat
Systmes d'exploitation
Cours 6
149
Multiprogrammation
Reprsentation de l'espace
Listes chanes : construire et maintenir une liste de blocs de mmoire libres et occups
Multiprogrammation
Reprsentation de l'espace
Listes chanes : optimisation Utiliser des listes doublement chanes Maintenir deux listes
Une pour les blocs occups Une pour les blocs libres
Ordonner chaque liste suivant la taille des blocs La liste des bloc libres se simule avec... les blocs libres
Pour chaque zone libre, le 1er octet est la taille de la zone, le 2e est l'adresse du prcdent bloc libre et le 3e est l'adresse du bloc libre suivant
Systmes d'exploitation Cours 6 151
Multiprogrammation
Reprsentation de l'espace
Listes chanes
Le gestionnaire de mmoire ne manipule que des blocs de taille une puissance de 2 Chan par vecteur de listes : une liste d'indice k contient les blocs de taille 2k Ou reprsentation par arbre binaire Fragmentation interne forte Fragmentation externe persistante Mais gestion des blocs trs ecace
Systmes d'exploitation Cours 6 152
Multiprogrammation
Buddy System
Systmes d'exploitation
Cours 6
153
Multiprogrammation
Buddy System
Systmes d'exploitation
Cours 6
154
Sommaire
1 2 3 1
Introduction
Systmes d'exploitation
Cours 6
155
Mmoire virtuelle
Problmes : Monoprogrammation
Programmes trop volumineux pour tenir entirement en mmoire Beaucoup de processus en cours d'excution en mme temps Impossibilit de tout faire tenir en mmoire
Multiprogrammation + interactivit
Solution : la mmoire virtuelle (virtual memory) Ne mettre en mmoire que les parties rellement utilises des processus Charger et dcharger les direntes parties suivant les besoins des processus
R. Bonidal (FC 2010) Systmes d'exploitation Cours 6 156
Mmoire virtuelle
Pagination
Mmoire physique trop petite pour contenir en mme temps et entirement TOUS les processus prts
Les tranches sont de la mme taille (xe, 2 ), on les appelle des pages Elles sont places (mapped) en mmoire physique dans des cadres de page (frames) de mme taille
Systmes d'exploitation
Cours 6
157
Mmoire virtuelle
Pagination
Problme : pas assez de cadres libres pour toutes les pages Que faire si accs une page non mappe en mmoire (52K-56K par exemple) ?
Mmoire virtuelle
Pagination
On utilise une table des pages Une par processus (puisque chacun a son propre espace d'adressage) Problmes :
La table des pages peut tre trs grande (adressage 32 bits, page de 4 Ko 1000000 de pages) Temps d'accs dgrads si trop d'indirections
Cours 6 159
Systmes d'exploitation
Mmoire virtuelle
Pagination
Solution / Optimisation pour la gestion des tables de pages :
Plusieurs niveaux d'indirection Systme de cache : utilisation de registres spcialiss, le TLB (Translation Lookaside Buer)
Systmes d'exploitation
Cours 6
160
Mmoire virtuelle
Swap in / swap out
Quand un dfaut de page (page fault ) survient... que fait-on ?
1 2 3 4
La MMU lve une exception : interruption processeur, kernel trap Le processus est endormi Le pager est activ et charge, s'il n'y a pas d'erreur, la page requise dans un cadre de page Quand la page est charge le processus est rveill
Systmes d'exploitation
Cours 6
161
Mmoire virtuelle
Demande de page
Algorithme optimal : chaque fois qu'une page est accde, elle est tiquete avec un label donnant le nombre d'instructions excuter avant le prochain accs cette page Lors d'une demande de remplacement de page, la page avec le label le plus lev est choisie pour tre dcharge de la mmoire principale
Systmes d'exploitation
Cours 6
162
Mmoire virtuelle
Demande de page
Algorithme optimal : chaque fois qu'une page est accde, elle est tiquete avec un label donnant le nombre d'instructions excuter avant le prochain accs cette page Lors d'une demande de remplacement de page, la page avec le label le plus lev est choisie pour tre dcharge de la mmoire principale
Systmes d'exploitation
Cours 6
162
Mmoire virtuelle
Demande de page
Algorithme NRU (Not Recently Used) : 2 bits : R, page refrence, et M, page modie Rgulirement (timer qui gnre une interruption) le bit R est remis zro 4 cas possibles :
1 2 3 4
Non accde, non modie (R ,M ) Non accde, modie (R ,M ) Accde, non modie (R ,M ) Accde, modie (R ,M )
On enlve en priorit suivant l'ordre croissant des cas Facile implanter et assez ecace
R. Bonidal (FC 2010) Systmes d'exploitation Cours 6 163
Mmoire virtuelle
Demande de page
Algorithme FIFO (First In, First Out) : Liste des pages en mmoire principale suivant leur ordre d'arrive Trs basique et peut remplacer des pages importantes juste parce qu'elles sont vieilles Algorithme de la seconde chance (amlioration FIFO) Tenir compte du bit R Si bit R 1 (accs rcent), le bit R est remis zro et la page est rinsre en n de la liste des pages Si tous les bits R sont 1
dgnre en FIFO
Trs nette amlioration par rapport FIFO Algorithme de l'horloge = seconde chance avec liste circulaire
R. Bonidal (FC 2010) Systmes d'exploitation Cours 6 164
Mmoire virtuelle
Demande de page
Algorithme LRU (Least Recently Used) : Enlever la page utilise le moins rcemment Un peu plus coteux, mais excellente approximation de l'optimal Liste chane des pages, mettre jour chaque accs une page Ou bien compteur incrmenter chaque accs (matriel) Approximation par NFU (Not Frequently Used) : Mcanisme de vieillissement chaque interruption (timer) un compteur associ la page est dcal droite (division par 2) et bit R recopi dans le bit de poids le plus fort
R. Bonidal (FC 2010)