Vous êtes sur la page 1sur 63

Plan du Cours

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 Systme dexploitation


Cest quoi un systme dexploitation (OS)? Quelles sont les Classes et Types dun OS ? Quelles sont les fonctionnalits dun OS? Comment les OS sont structurs? (structuration des OS)

Rappel - OS

Qu'est-ce qu'un systme d'exploitation ?

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.

Rappel : Classes des OS


Mono-tche (DOS): A tout instant, un seul programme est excut; un autre programme ne dmarrera, sauf conditions exceptionnelles, que lorsque le premier sera termin. Multi-tches (Windows, Unix, Linux, VMS):plusieurs processus (i. e. un programme en cours dexcution) peuvent sexcuter simultanment (systmes multi-processeurs) ou en quasiparalllisme (systmes temps partag) Mono-session (Windows 98,2000): au plus un utilisateur la fois sur une machine. Les systmes rseaux permettent de diffrencier plusieurs utilisateurs, mais chacun deux utilise de manire exclusive la machine (multi- utilisateurs, monosession) Multi-sessions (Windows XP, Unix, Linux, VMS): Plusieurs utilisateurs peuvent travailler simultanment sur la mme machine.

Rappel : Type des OS


Systmes pour mainframes Systmes pour serveurs Systmes multiprocesseurs Systmes personnels Systmes temps rel Systmes embarqus

Rappel : Types des OS

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

OS = interface entre Programme et Matriel.

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.

Plusieurs possibilits de conception pour un SE : Sans relle structure En couches noyau


o Monolithique o Microkernel

o Hybride
o Exokernel

Structuration des OS

Sans relle structure

Structuration des OS

En couches

Structuration des OS

noyau

Structuration des OS

noyau : Monolithique

Structuration des OS

noyau : Micronoyau

1.Mcanismes de base des Systmes dExploitation


Diffrence interruption/exception Une interruption est provoque par un signal provenant du monde extrieur au processeur, et modifiant 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.

1.Mcanismes de base des Systmes dExploitation


Concepts Le kernel est charg partir du disque lors du dmarrage du systme Bootstrapping = initialisation du systme et dfinition de l'environnement pour excuter des processus 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)

1.Mcanismes de base des Systmes dExploitation

Concepts : Processus et espace d'adressage


Plusieurs processus partagent le CPU, la mmoire, les priphriques Si systme temps partag l'excution des processus est virtuellement concurrente Chaque processus a son espace d'adressage contenant
Ses instructions (code) Ses donnes

Cet espace est a priori virtuel Il contient un ensemble de registres (compteur ordinal, pointeur de pile, ...) ncessaires au bon fonctionnement du processus

1.Mcanismes de base des Systmes dExploitation


Concepts

: 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

1.Mcanismes de base des Systmes dExploitation

Concepts : Espace d'adressage des processus et noyau


Une partie de l'espace d'adressage de chaque processus correspond du code et des objets du kernel : c'est la partie espace systme. Il n'existe qu'une seule instance du kernel dans le systme Tous les processus pointent sur ce mme espace kernel L'accs l'espace systme se fait en mode systme travers les appels systme Le kernel gre les processus via 2 objets spcifiques chaque processus :
L'espace usager (user space) qui contient des infos sur le processus Liste des fichiers ouverts Valeurs des registres, ...

La pile kernel (kernel stack) pour la gestion des fonctions de tous les processus en appel systme

1.Mcanismes de base des Systmes dExploitation


Concepts

: Cycle de vie dun processus

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

Cration dun Processus: Suite :


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

Cration dun Processus: Appels systmes int fork ();


Cre une copie identique du processus Le parent reoit comme rsultat le PID du descendant

Le descendant reoit 0 comme rsultat

int waitpid (int pid, int *status, int option);


pid numro attendre (-1 n'importe quel descendant) status valeur de sortie ou signal

option en gnral 0 (voir man)


Fournit le PID du processus qui a chang, -1 en cas

d'erreur

2. Processus et Threads

Destruction dun processus:


Arrt volontaire Erreur Erreur fatale Arrt par un autre processus Fonction bibliothque void exit(int status);
Destruction du processus actuel status est plac dans la valeur de waitpid Convention: 0 en cas de succs, autre valeur en cas

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

intercept pour "nettoyage" SIGKILL Tue le processus coup sur.

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

tat dun processus:

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

Algorithme avec / sans premption


Transition interrompu du cycle de vie autorise si premption (temps partag) et interdite sinon (multiprogrammation seule)

Choix du quantum Gestion de priorits


Processus systmes Processus utilisateurs interactifs Processus utilisateurs peu interactif

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

Algorithmes dordonnancement 1/2

En multiprogrammation seule
FIFO / FCFS (First In First out / First Come First Served)
Efficace (utilisation maximale de lUC) et quitable

En multiprogrammation + temps partag


PCTE / SJF (Plus court temps dexcution / Shortest Job First)
Priorit aux tches courtes Impose de connatre le temps dexcution (estim en fonction

des excutions antrieures) Non quitable mais optimal / temps de rponse


Tourniquet (Round Robin) avec quantum fixe
Chaque processus dispose d'un quantum de temps CPU (10-100

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)

Algorithmes dordonnancement 2/2

Tourniquet avec priorits statiques


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

priorits dynamiques Tourniquet avec priorits dynamiques


Un paramtre supplmentaire (une dure et un nombre dinterruptions,

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 :

Non premptif une fois que le CPU est allou

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))

SJF est optimal par rapport au temps de rponse moyen

2. Processus et Threads
Des processus lgers ? ( les Threads ) Les processus induisent une certaine lourdeur:

Changement de contexte

Pas (peu) de partage de mmoire


Dpendant de l'ordonnanceur Un processus pourrait tirer parti d'une

architecture multiprocesseurs/multi coeur

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

Les Sections Critiques:

LExclusion Mutuelle avec Attente Active (busy waiting)

Dsactivation des interruptions


Aprs son entre dans une SC, un processus dsactive les

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

Variables de verrou (lock)


Avant dentrer en SC, tester la valeur de verrou, si verrou = 0,

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

LExclusion Mutuelle avec Attente Active (busy waiting)

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

Sommeil & Activation


Ne consomme pas de la CPU comme lattente active Primitives de communication: sleep: appel systme qui provoque le blocage de lappelant wake up: appel systme qui rveille un processus. Problme du producteur-consommateur #define N 100 int count = 0;

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); } }

Sommeil & Activation

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

Solution: ajouter un bit dattente dveil.


Quand un wakeup est envoy un processus le bit est 1; le consommateur teste le bit, sil est 1, il le remet 0 et reste en

veil Cette solution est + difficile gnraliser en cas de + sieurs processus.

Smaphore

Smaphore: # de wakeup enregistrs 2 oprations:


down: si la valeur de la variable smaphore est > 0, la dcrmenter; si la valeur est nulle: sleep up: incrmenter la valeur de la smaphore et rveiller au hasard un processus dormant down et up sont implmentes en tant que appels systme, le SE dsactive les interruptions, et cest ainsi que les oprations de vrification, de mj et de sommeil sexcutent de manire atomique

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:

TSL REGISTER, MUTEX | copie mutex dans le registre et la dfinit 1

CMP REGISTER, #0 | tester si mutex est gale 0


JSE ok | si elle est diffrente de 0 retour CALL thread_yield | relcher la CPU ok: RET | retour lappelant

mutex_unlock:

MOVE MUTEX, #0

| stocke un 0 dans mutex

RET | retour lappelant

! Comparer au code denter_region slide 17

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

Convient aux systmes distribus 2 primitives appels systmes: send et receive


send (destination, &message) receive (source, &message)

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); }

Problme, si le producer travaille + vite que le consumer


le producer envoie tous les messages pleins et reste bloqu en attente dun message vide.

Les Barrires

Mcanisme de synchronisation destin aux groupes de processus.

Cas dapplications dcomposes en phases, o aucun processus ne


peut entrer dans la phase suivante tant que tous les processus ne sont pas prts y entrer.

Solution: placer une barrire, et quand un processus atteint la barrire


il est bloqu jusqu ce que tous les processus atteignent la barrire.