Professional Documents
Culture Documents
Rappel Mcanismes de base des Systmes dExploitation Processus et Threads Ressources physiques et logiques Gestion des processus Gestion des ressources (Processeur, Mmoire centrale, Disque) Mmoire virtuelle
Objectif du Module
Introduire les mcanismes de base utiliss par les systmes pour grer les processus et les ressources. Introduire les notions de Processus, Threads et Ressources. Prsenter les techniques de gestion des processus. Prsenter les techniques de gestion des ressources dun ordinateur. Apprendre les techniques de scurisation des systmes et les techniques de protection des donnes.
Rappel - OS
L'interface entre le logiciel et le physique. Sparer les applications des spcificits du matriel : portabilit Sparer les applications des limitations du matriel : Fini Infini Protger le matriel des applications. Ce n'est pas facile ! !
Rappel - OS
Buts d'un systme d'exploitation : dcharger le programmeur d'une tache norme et fastidieuse concentration sur le dveloppement de son application. protger le systme et ses usagers de fausses manipulations. offrir une vue simple/uniforme/cohrente de la machine et des ressources.
Systmes pour mainframes Grosses machines, beaucoup de ressources Systmes pour serveurs Beaucoup d'utilisateurs Beaucoup de rseau Systmes multiprocesseurs Plusieurs processeurs Gestion concurrente des ressources Systmes personnels Interface conviviale Utilisation basique Systmes temps rel Respect de contraintes temporelles Systmes embarqus Interface conviviale Contraintes matrielles Systmes pour smart-cards
Fonctionnalits dun OS
Fonctionnalits dun OS
Interface plusieurs niveaux d'abstraction entre : Le programme effectue des tches processus Les tches sont excutes par le matriel ressources
Rle dun OS
Grer les processus Grer les ressources (pour le compte des processus) *CPU *Mmoire *Fichiers *. Protger les processus et les ressources Dcomposition d'un SE en sous-systme gestion de la mmoire principale et des mmoires secondaires, excution des E/S (priphriques) faible dbit ou haut dbit multiprogrammation, temps partag, paralllisme interruption, ordonnancement, rpartition en mmoire, partage des donnes, lancement des outils du systme (compilateurs, environnement utilisateur,...) lancement des outils pour l'administrateur du systme protection, scurit ; rseaux
Structuration des OS
1. 2. 3.
o Hybride
o Exokernel
Structuration des OS
Structuration des OS
En couches
Structuration des OS
noyau
Structuration des OS
noyau : Monolithique
Structuration des OS
noyau : Micronoyau
Cet espace est a priori virtuel Il contient un ensemble de registres (compteur ordinal, pointeur de pile, ...) ncessaires au bon fonctionnement du processus
: Processus et noyau
La smantique des interactions entre le kernel et les processus utilisateurs est dfinie travers l'API systme : les appels systme Ainsi le kernel effectue les instructions pour le compte du processus Le kernel intervient galement quand un processus effectue une action interdite
division par zro dbordement de pile (stack overflow) adressage mmoire incorrect (segmentation fault)
cause une exception matriel (hardware exception) que le kernel traite pour le compte du processus
La pile kernel (kernel stack) pour la gestion des fonctions de tous les processus en appel systme
2. Processus et Threads
Df : Un processus est un programme qui s'excute. Les OS modernes permettent l'excution en parallle de plusieurs processus.
2. Processus et Threads
Initialisation du systme Appel systme de cration par un processus Demande d'un utilisateur Lancement d'un travail de traitement par lot (mainframes) Sous UNIX un seul appel systme pour crer de nouveau processus. Au dmarrage un seul processus est cre: init ce dernier a pour descendant tous les processus qui s'excuteront sur le systme. Plus gnralement il se cre une hirarchie entre les processus avec des connexion entre chaque processus et ses descendants.
2. Processus et Threads
d'erreur
2. Processus et Threads
dchec.
2. Processus et Threads
Appel systme int kill(pid_t pid, int sig);
Adresse le signal sig au processus pid SIGTERM Tue le processus. Mais peut tre
2. Processus et Threads
Oprations de base sur les PS: Cration /Destruction Suspension / Activation Abandon momentan Attente de la terminaison dun fils Commutation (opration de bas niveau)
2. Processus et Threads
2. Processus et Threads
Implmentation:
2. Processus et Threads
Traitement dune Interruption: Ex : Le processus 3 est en cours d'excution Un interruption disque survient (Matriel) Le mot dtat, ainsi que ltat des registres est place sur la pile active par le disque (Matriel) Le processeur passe alors a l'adresse speciae par le vecteur d'interruption (Matriel) Traitement logiciel Sauvegarde des donnes processus dans la table des processus La pile active est vide Utilisation d'une pile temporaire "gestion de processus" Excution du service d'interruption en C L'ordonnanceur dtermine le nouveau processus a excuter Dmarrage du nouveau processus
2. Processus et Threads
Ordonnancement : Comment choisir le processus a excuter? Il y a des tas de faon de choisir le processus suivant excuter Il y a des contraintes:
ne pas donner la main un processus bloqu assurer la ractivit du systme limiter le cot du changement de contexte
(cache)
Critres dordonnancement
Critres / Algorithme dordonnancement quitable (pas de famine) Efficace Minimisant les temps d'attente / de rponse des processus Maximisant le rendement (nombre de travaux par unit de temps
Critres dordonnancement
non-premptif: slectionne un processus, puis le laisse sexcuter jusqu ce quil se bloque (E/S, wait) ou se termine.
premptif: slectionne un processus et le laisse sexcuter pendant un quantum, premption par linterruption horloge
En multiprogrammation seule
FIFO / FCFS (First In First out / First Come First Served)
Efficace (utilisation maximale de lUC) et quitable
millisecondes), aprs lequel il est prempt Efficace (sauf si quantum trop petit), quitable et bon / temps de rponse et rendement (sauf si quantum trop grand)
Une priorit est associe un nombre de quantum (1, 2, 4, etc) Plus la priorit est forte, plus le quantum est petit Le processus le plus prioritaire est lu Bon compromis efficacit / rendement Temps de rponse bons (travaux interactifs prioritaires) Famine possible
Problme les processus de faible priorit peuvent ne jamais s'excuter Solution "Aging" augmenter la priorit d'un processus avec son ge
ou l'ge) permet de faire passer les processus de priorit P la priorit P+1 ou inversement Ou bien la priorit P est fonction de la fraction de quantum (f) utilise (p = 1/f) Equitable
Shortest-Job-First (SJR)
Associe chaque processus la dure de son excution Deux possibilits :
un processus, il ne peut tre prempt. Premptif si un nouveau processus arrive avec un temps d'excution plus court que celui du processus courant, ce dernier est prempt (algorithme Shortest-Remaining-TimeFirst(SRTF))
2. Processus et Threads
Des processus lgers ? ( les Threads ) Les processus induisent une certaine lourdeur:
Changement de contexte
2. Processus et Threads
Les threads: La programmation par thread permet d'intgrer dans la programmation des applications les bnfices de la programmation parallle. Tout en conservant une partie de la lgret de la programmation classique (en particulier vis--vis de la mmoire).
2. Processus et Threads
Les threads: Un thread est un contexte d'excution ordonnable ,comprend un compteur ordinal, des registres et une pile Un thread est une unit dexcution rattache un processus, charge dexcuter une partie du processus Les programmes simples comportent un seul thread pas de surcot Les programmes plus complexes peuvent tirer parti des threads. Chaque thread a :
un identificateur unique une pile d' excution des registres (un compteur ordinal) un tat
Communication interprocessus
1. Conditions de Concurrence 2. Sections Critiques 3. Exclusion Mutuelle 4. Sommeil & Activation 5. Smaphores 6. Mutex 7. Moniteurs 8. Echange de Messages 9. Barrires
Communication interprocessus
Conditions de Concurrence
Conditions de concurrence (race conditions): situation o 2 processus ou plus effectuent des lectures et des critures conflictuelles. Exemple du Spouleur dimpression
Un processus qui veut imprimer un fichier, entre son nom dans un
rpertoire de spoule Le processus dmon dimpression regarde priodiquement sil y a des fichiers imprimer. Il a 2 variables: in: pointe vers la prochaine entre libre. out: pointe vers le prochain fichier imprimer in = 7, out = 4 A et B deux processus qui veulent imprimer un fichier A >> lire in, next_free_slot = 7 Interruption: la CPU bascule vers le processus B B >> lire in, next_free_slot = 7, entre7 = fichierB, in = 8 A >> entre7 = fichierA, in = 8 Problme: le fichierB ne sera pas imprim
Communication interprocessus
Comment viter les conditions de concurrence? Solution:Interdire que plusieurs processus lisent et crivent des donnes partages simultanment. Exclusion Mutuelle: permet dassurer que si un processus utilise une variable ou fichier partags, les autres processus seront exclus de la mme activit.
Exclusion Mutuelle
interruptions, puis les ractive Il empche ainsi lhorloge denvoyer des interruptions et le processeur de basculer Il est imprudent de permettre des processus user de dsactiver les interruptions
verrou 1, entrer en SC Dfaillance: 2 processus peuvent entrer simultanment dans leurs sections critiques comme le spouler dimpression
Alternance Stricte
la variable turn porte le numro du processus dont cest le tour
dentrer en SC. Chaque processus inspecte la valeur de la variable, avant dentrer en SC. Inconvnient: consomme bcp de temps CPU
Alternance Stricte
while (TRUE) { while (TRUE) { while (turn != 0); while (turn != 1); critical_region(); critical_region(); turn = 1; turn = 0; non_critical_region(); non_critical_region(); } } Les attentes actives sont performantes dans le cas o elles sont brves. En effet, il y a risque dattente P0 quitte la CS, turn = 1 P1 termine sa CS, turn = 0 Les 2 processus sont en section non critique P0 excute sa boucle, quitte la SC et turn = 1 Les 2 processus sont en section non critique P0 quoiquil a termin, il ne peut pas entrer en SC, il est bloqu
Problme du consommateurproducteur
Connu aussi sous le nom de tampon dlimit (bounded buffer). 2 processus partagent un tampon commun de taille fixe N. Le producteur place des jetons dans le tampon. Le consommateur rcupre un jeton Problme 1: le producteur souhaite placer un nouveau jeton alors que le tampon est plein. Problme 2: le consommateur souhaite rcuprer un jeton alors que le tampon est vide Count dnote le nombre de jetons dans le tampon
void producer (void) { int item; while (TRUE) { item = produce_item(); if (count == N) sleep(); insert_item(item); count++; if (count == 1) wakeup(consumer); } } void consumer (void) { int item; while (TRUE) { if (count == 0) sleep(); item = remove_item(); count--; if (count == N-1) wakeup(producer); consume_item(item); } }
Problme de blocage:
Le consommateur note que le tampon est vide Interruption: arrt du consommateur sans quil parte en sommeil Le producteur insre un jeton, incrmente le dcompte, appelle
wakeup pour rveiller le consommateur Le signal wakeup est perdu, car le consommateur nest pas en sommeil Le consommateur reprend, pour lui le tampon est vide, il dort Le producteur remplit le tampon et dort
Smaphore
Problme du producteur-consommateur
3 smaphores: full, empty et mutex full: # demplacemens occups dans le tampon empty: # demplacements vides dans le tampon mutex: pour sassurer que le consommateur et le producteur naccdent pas simultanment au tampon
Smaphore
#define N 100 Typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer (void) { int item; message m; while (TRUE) { item = produce_item(); down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full); } } void consumer (void) { int item; while (TRUE) { down(&full); down(&mutex); item = remove_item(&m); up(&mutex); up(&empty); consume_item(item); } }
mutex
Smaphore dexclusion mutuelle, o la fonction dcompte nest pas ncessaire. Une mutex a 2 tats: dverrouill: valeur 0 ou verrouill Si +sieurs threads sont bloqus sur une mutex, lun dentre eux est choisi au hasard pour prendre possession du verrou. mutex_lock et mutex_unlock
mutex_lock:
mutex_unlock:
MOVE MUTEX, #0
Moniteurs
Collection de procdures, de variables, de structures de donnes regroupes dans un module. Un processus ne peut appeler que les procdures du moniteur. Les moniteurs sont des constructions de langage, et cest au compilateur dimplanter lexclusion mutuelle sur les entres du moniteur. Problme du producteur-consommateur
2 variables conditionnelles (vc): full et empty Quand une procdure du moniteur dcouvre quelle ne peut plus
poursuivre, elle effectue un wait sur une vc Si un signal est adress une vc attendue, un processus est ractiv.
Moniteurs
monitor ProducteurConsommateur condition full, empty; integer count; procedure insert (item: integer) begin if count = N then wait(full) insert_item(item); count++; if (count = 1) then signal(empty); end; function remove: integer begin if count = 0 then wait(empty); remove = remove_item; count--; if (count = N 1) then signal(full); end; count = 0; end monitor; procedure producteur begin while true do { item = produce_item; ProducteurConsommateur.insert(item); } end; procedure consommateur begin while true do { item = ProducteurConsommateur.remove; consume_item(item); } end;
Echange de Messages
Problmes
Perte de messages dans le rseau, + de fiabilit par les ACKs, la retransmission de messages et
la dtection de doublons
Problme du producteur-consommateur
Les messages mis et non encore reus sont mis en
mmoire par le SE Le consommateur envoie N messages vides au producteur Le producteur remplit chaque message vide reu
Echange de Messages
#define N 100 void producer (void) { int item; message m; while (TRUE) { item = produce_item(); receive(consumer, &m); build_message(&m, item); send(consumer, &m); } } void consumer (void) { int item, i; for(i=0; i<N;i++) send(producer, &m); while (TRUE) { receive(producer,&m); item = extract_item(&m); send(producer, &m); consume_item(item); }
Les Barrires