– 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.
– ...