• Aucun résultat trouvé

Architectures de syst`emes d’exploitation

– Gestion des gestionnaires de p´eriph´erique (ioctl) – ...

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)

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

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 (Com-puter Processing Unit ou CPU), gestion de la m´emoire, communication homme-processus, gestion des entr´ees-sorties (Inputs/Outputs ou IOs), programmes util-isateurs

– 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

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’exploita-tion 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.

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’of-frir aux syst`emes d’exploitation hˆotes une interface avec le mat´eriel qui est nor-malis´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.

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 (micro-kernel)

– 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 in-terdite 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)

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

– Exemples : VXWorks (micro-noyau temps-r´eel), QNX (micro-noyau temps-r´eel UNIX-like), Xenomai (monolithique modifi´e avec micro-noyau sous-jacent tour-nant sur une machine virtuelle nano-noyau adeos)

2 Processus

2.1 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 principale-ment) 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.

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’ap-pellent 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, ...

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 instruc-tion sp´ecifique du processus (exitsous UNIX) avec un code de sortie qui cor-respond 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 in-fraction soit parce qu’un autre utilisateur ayant des droits plus ´elev´es a envoy´e un appel syst`eme de type kill.

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 pro-cessus enfant s’arrˆete, le parent en est inform´e.

– Exemple : commandepstreesous UNIX.

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

proces-sus

– Bloqu´e (blocked) : le processus est en attente d’un ´ev´enement externe

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.

– ...

Documents relatifs