Vous êtes sur la page 1sur 11

Fonctionnement des systmes dexploitations

1 HISTORIQUE DES SYSTMES DEXPLOITATIONS


1.1 DFINITION
le systme dexploitation est le programme permettant dexploiter le matriel. Il doit fournir un environnement avec facilit demploi, stabilit, efficacit.

1.2 HISTORIQUE
Systme mono-tache Enchanement de mono taches (trains de travaux, cartes perfores) Multiprogrammation Temps partag (terminaux, cran/clavier ; calculatrice) : o Premire gnration (1945 1955) : machines tubes : NASA, US Army o Deuxime gnration (1955 1965) : transistors o Troisime gnration (1965 1975) : circuits intgrs MULTICS (MULTiplexed Information and Computation Services) Wen Thompson : cre son propre UNICS (X) (Uniplexed) avec laide dun autre chercheur : Denis Ritchies qui cre le langage C pour crire se systme.

1.3 QUELQUES DFINITIONS


Matriel : les priphriques sont grs par des pilotes (drivers), programmes effectuant les oprations de base pour un type de matriel donn. Fichiers : rpertoires et sous rpertoires rangs dans un systme de fichier stockes sur des partitions sur disques, disquettes, cd-rom, Processus : programmes qui sexcutent permettant le partage de la mmoire, la rpartitions des temps de fonctionnement (priorit), la gestion de rpartition. Utilisateurs : droits daccs limits.

2 ETUDE PRATIQUE
Dmarrage dun systme sur PC : (dcrire ce qui se passe au dmarrage dun systme UNIX : on utilise des fichiers de la distributions Stockware de Linux pour PC) Avant le dmarrage : lamorage. BIOS (rsidant en mmoire morte) dtermine les priphriques prsents et dclenche lamorage (bootstraping). Il charge en mmoire le premier secteur (secteur damorce : disque, disquette) et lance le petit programme qui y figure. Sur un disque, le premier secteur contient le MBR sur lequel se trouve la table des partitions et un programme, permettant de dterminer la gomtrie du disque (le nombre de cylindres, nombres de ttes, nombres de secteurs) etdobtenir des informations sur les partitions (leur position, leur type (suivant le systme), indicateur signalant des partitions bootables) Le programme charge en mmoire le premier secteur de la premire partition bootable (boot record) et lance le programme qui y est contenu. Ce programme charge le noyau : et excution du noyau en transmettant un certain nombre de paramtres : la partition utiliser comme racine de larborescence, le type de montage de cette partition (lecture seule), le programme lancer comme premier processus (/sbin/init), des paramtres pour se processus (niveau 0 : arrt systme, 1 : mono utilisateur, 2-3-5 : MultiUtilisateur, 4 :Multi-Utilisateur avec Xwindows, 6 : arrt+reboot, S : Generic Start.)

des paramtres pour assurer le bon dmarrage des priphriques (adresses dES, numro dinterruption)

Script de dmarrage (niveau 2) cf feuille


Init excute les actions marques sysinit puis celle du niveau 2, cest dire les lignes si, rc, c1, Les trois premires actions correspondent aux scripts rc.S, rc.k, rc.M Dans le script, rc.modules lance les modules qui sont le plus souvent des pilotes de priphriques. Puis lancement de rc.M.

3 PROCESSUS
3.1 DFINITION
Les processus correspondent lexcution de taches (programmes des utilisateurs, entres, sorties, ) par le systme. Le mot processus dsigne un programme binaire en cours dexcution, cest dire un programme dans un environnement. Un processus peut connatre trois sortes dtats : actif (en cours de traitement), prt (en attente de traitement), bloqu (attend dtre dbloqu par un autre processus par exemple).

3.2 CONTEXTE DUN PROCESSUS


Pour contrler ou lon va excuter le code, on utilise le pointeur de pile et le compteur ordinal.

Pile dexcution

Donnes Code
Code : instruction, en langage dassemblage du programme excuter. Donnes : Contient les variables globales ou statiques, ainsi que les allocations dynamiques de mmoires. Pile dexcution : Contient les appels de fonction avec leur paramtres et leurs variables locales (sempilent dans la pile dexcution. La commutation des taches : Cest le passage dune tache une autre ralise par un Ordonnanceur (scheduler) au niveau le plus bas du systme. LOrdonnanceur est activ par des interruptions dhorloge, de disques et de terminaux.

3.3 ENVIRONNEMENT DUN PROCESSUS (CONTEXTE)


Un numro didentification unique (PID) Un numro didentification de lutilisateur qui a lanc le processus (UID) Le numro du groupe auquel appartient cet utilisateur (GID) Le rpertoire courant Les fichiers ouverts par ce processus Un masque de cration de fichiers appel umask La taille maximale des fichiers que ce processus peut crer Le terminal de contrle (dou a t lanc le processus) Le temps dexcution La priorit

3.4 INTERRUPTIONS ET ENTRES SORTIES


3.4.1 Prsentation de la machine utilise
Nous utilisons ici une machine mots de 16 bits. Un bus permet la circulation de linformation entre le processeur et la mmoire. Le processeur de cette machine a deux registres qui sont : Le compteur ordinal (PC : Program Compter) qui contient chaque instant ladresse de a prochaine instruction excuter. Le registre dtat (PSW : Processus Statue World) qui contient le niveau de priorit du processeur) Le niveau est cod sur 3 bits : 5, 6, 7 (priorit de 0 7).

3.4.2 Interface machine/terminal


Linterface de la machine utilise contient 4 registres (de 16 bits chacun) qui sont utiliss pour grer les E/S. Ces registres sont accessibles comme sil sagissait demplacements en mmoire : Registre dtat du clavier, Registre de donnes de clavier, Registre dtat de lcran, Registre de donnes de lcran, Tous ces registres ont une adresse dentre/sortie prdfinie.

3.4.3 Entres/sorties en boucle dattente


3.4.3.1 Ecriture sur lcran
Le bit 7 du registre dtat de lcran indique que si linterface est prte recevoir un caractre. Avant dcrire un caractre sur lcran, on attend que ce bit soit 1. Il suffit alors de placer le caractre dans le registre de donnes. Notations : ETAT_ECRAN, DONNEES_ECRAN : adresses des registres, Mmoire[ADR] : mot dadresse ADR, Mmoire[ADR].bit[i] : ime bit de ce mot PRET=7. On peut donc exprimer lcriture dun caractre sur lcran par lalgorithme suivant : Void crire (char c) { While (mmoire[ETAT_ECRAN].bit[PRET]==0) {/*attente*/} mmoire[DONNEES_ECRAN]=c ; }

3.4.3.2

lecture du clavier

3.4.3.2.1 lecture standard le bit 7 du registre du clavier indique si un caractre est disponible. Char lire(){ Char c ; While(mmoire[ETAT_CLAVIER].bit[PRET]==0) {/*attente*/} c=mmoire[DONNEES_CLAVIER] ; return c ; } 3.4.3.2.2 lecture avec cho sur lcran char lire_avec_echo(){ char c ; c=lire() ; crire(c) ; return c ;

3.4.4 Entres/sorties en mode dinterruption


Lutilisation des interruptions dispense le processeur du test du bit PRET.

3.4.4.1

Ecriture sur lcran

On enclenche le bit 6 du registre dtat. Dans ce mode, le passage du bit PRET de ltat 0 ltat 1 provoque une interruption. Une interruption est une sorte dappel de procdure dclenche par un vnement extrieur. Chaque source dinterruption possde un vecteur dinterruption situ en mmoire, une adresse fixe. Ce vecteur contient deux mots : Ladresse de la procdure appeler en cas dinterruption (nouvelle valeur du PC), La valeur du registre dtat (PSW) pour le traitement de linterruption (dtermine la priorit du processeur pour la dure dinterruption). Lorsquune interruption se produit, le processus sauvegarde PC et PSW sur une pile et modifie les registres avec le contenu du vecteur dinterruption. A la fin de la procdure dinterruption, une instruction spciale RET.INT rtablit les valeurs prcdentes de PC et PSW. /*variables globales*/ char* tableau /*chane crire*/ int prochain /*indice du prochain caractre envoyer*/ void crire_ligne(char chane[]){ tableau=chane ; prochain=0 ; /*mise en place du vecteur dinterruption*/ mmoire[VECTEUR_ECRAN].adresse dinterruption_cran mmoire[VECTEUR_ECRAN+2]=priorit 4 ; /*mode interruption*/ Mmoire[ETAT_ECRAN].bit[MODE.INT]=1 ; Attendre ; } void interruption_cran(){ if (tableau[prochain] !=\0){ mmoire[DONNEES_ECRAN]=tableau[prochain] ; prochain++ ; } else{ mmoire[ETAT_ECRAN].bit[MODE_INT]=0 ; rveiller(ECRAN) } RET_INT ; }

3.4.4.2

lecture avec cho

Exercice : crire un programme qui fait la lecture dun caractre avec interruption. Amliorez ce programme pour faire la lecture avec interruption et cho lcran. Ecrire un programme qui permet la saisie dune ligne avec cho. /*variables globales*/ char c char lire(){ mmoire[VECTEUR_CLAVIER]=adresse dinterruption ; mmoire[VECTEUR_CLAVIER+2]=priorit 4 ; /*passage en mode dinterruption*/ mmoire[ETAT_CLAVIER].bit[MODE_INT]=1 ; attendre CLAVIER ; return c ; }

char lire_avec_echo(){ char c ; c=lire() //on utilise la fonction crite ci-dessus crire() //voir la fonction de lcran avec le mode dinterruption return c ; } //fonction de lecture dun ligne : /*variables globales*/ char* tableau ; char ligne(char* tab) { /*mise en place du vecteur dinterruption*/ mmoire[VECTEUR_CLAVIER].adresse=adresse dinterruption ; mmoire[VECTEUR_CLAVIER+2]=priorit 4 ; /*mode dinterruption*/ mmoire[ETAT_CLAVIER].bit[MODE_INT]=1 ; tab=tableau attendre CLAVIER } interruption lire(){ c=mmoire[DONNEES_CLAVIER] ; if (c != \n) tableau[prochain++]=c; else tableau[prochain++]=\0 ; /*mode dinterruption 0*/ rveiller CLAVIER RET_INT ; }

remarque importante :
Si lon supprime attendre et rveiller , on obtient une criture asynchrone (le processus demandeur peut devenir actif alors que lcriture nest pas termine). Le rsultat est donc : Un mlange des deux chanes Arrt de laffichage ds quune des deux chanes a termin (car un seul processus dinterruption pour les deux). Une solution est possible : utiliser un tampon pour stocker les chanes (ce tampon est dailleurs une file).

3.5 POINT DE VUE DU PROGRAMMEUR


Ci-dessous quelques fonctions utiles aux programmeurs :

3.5.1 Lancement de processus


Int_fork() : cre un nouveau processus fils qui est une copie exacte du processus appelant pre. La diffrence est la valeur de retour : 0 pour le fils, PID du fils pour le pre, -1 en cas derreur. Exec ; permet le lancement par le processus appelant dun nouveau programme. Int execl (char* ref ; char* arg0 ; ; char* argN) : lance lexcution du programme arg0 se trouvant dans le fichier ref avec les arguments arg1,argN..

3.5.2 Destruction
Exit : un processus se termine lorsquil na plus dinstruction ou lorsquil excute la fonction void exit(int statue). Kill : permet denvoyer un signal un autre processus (pid) : int kill(int PID ; int sigINT)

3.5.3 Attente
Void wait : le processus attend la terminaison de lun de ses fils. Void waitPID : le processus attend la terminaison du fils PID. Void pause() : attente dun signal appelant jusqu un signal de retour. Void sleep(n) : attente pour n secondes (secondes par dfauts.)

3.5.4 Identification des signaux


SIGINT : 2 SIGKILL : 9 (pour la destruction) SIGSEGV : 11 (violation de la mmoire) Un processus peut modifier son comportement aux signaux reus par lappel de la fonction void(*signal(int sigint, void(*fonction)(int))), ou sigint= n du signal et fonction est le nom de la fonction qui sera excute.

3.6 STRATGIE DORDONNANCEMENT DES PROCESSUS


Les stratgies dordonnancements des processus consistent dcider quel processus PRET ou ACTIF doit accder au processeur un moment donn (dans le but dessayer dutiliser le plus souvent possible 100% de la capacit du processeur). Pour cela, il sagit de minimiser le temps de rponse et damliorer le taux temps dexcution/rendement.

3.6.1 Rquisition
3.6.1.1 3.6.1.2 Ordonnancement sans rquisition Ordonnancement avec rquisition
On laisse sexcuter le processus jusqu ce quil sarrte, ou effectue une requte dentre/sortie. (ou premplire scheduling). Une horloge interrompt le processus actif au bout dun quantum de temps.

3.6.2 Autres ordonnancements


3.6.2.1 Ordonnancement circulaire
Cest le principe de lalgorithme tourniquet (round rabin). Les processus sont grs en liste circulaire. Quand un processus puise son quantum de temps, il est plac en fin de liste.

3.6.2.2

Ordonnancement avec priorit

Ide : chaque processus, une priorit. On active le processus PRET dont la priorit est la plus forte. A priorits gales, les processus sont grs en round rabin.

4 MMOIRES
4.1 ALLOCATION, DS ALLOCATION
Lorsquun programme est lanc, le systme : Recherche le fichier contenant lexcutable du programme Dtermine la taille ncessaire au chargement du programme, Alloue la place mmoire ncessaire et suffisante pour lexcution complte du programme Copie les instructions de lexcutable dans cet espace Ajoute ce nouveau processus (PRET) dans la table des processus A la fin de lexcution : Suppression de la table des processus Restitution de la mmoire alloue.

4.2 RAPPELS HISTORIQUES


4.2.1 Allocation simple contigu
(que lon trouve sur les vieux systmes de monoprogrammation) Le systme dexploitation se trouve au dbut de la mmoire. Le reste de la mmoire disponible est rserv aux applications. Le MS-DOS fonctionne ainsi (avec une diffrence cependant : la fin de lespace mmoire constitue de mmoire morte contenait une partie du systme BIOS de 640ko)

4.2.2 Allocation partitionne


4.2.2.1 partition
Un programme utilise un espace mmoire contigu quon appelle partition. Exemple : Soit un espace de 64ko, sur lequel sont intgrs 4 processus en cours dexcutions : P1 (30ko), P2 (10ko), P3 (15ko), P4 (15ko). Si P4 ne peut pas tre sur cet espace mmoire car lespace mmoire utilis par P1, P2, P3 est de 55ko. Donc, manque de place. Si P2 se libre, P4 ne peut tout de mme pas rentrer sur cet espace mmoire car la place entre P1 et P3 est de 10ko. Il faut donc un BLOC mmoire de taille suffisante. Si le bloc est trop grand, il est coup en deux et le reste est remis dans la liste des zones libres.

4.2.2.2

Libration de la mmoire

Le bloc allou est remis dans la liste des blocs libres (si il jouxtait un autre bloc libre, ces deux blocs sont fusionns).

4.2.2.3

Diffrentes mthodes dallocations


First FIT : on alloue le premier bloc trouv de taille suffisante Best FIT : on alloue le plus petit bloc de taille suffisante (do, utilisation dun algorithme de tri des blocs -> ordonnancement de la liste des blocs selon leurs tailles).

4.2.3 Allocation partitionne translatable


Le principe est trs simple : quand il y a trop de trous, on tasse . Le tassement seffectue laide dun dcalage par recopie vers le bas de la mmoire. Problme : le(s) programme(s) peuvent contenir des adresses qui, par le dplacement, doivent tre modifies.

4.2.3.1

Adresses relatives

On peut remdier cela en utilisant des adresses relatives (pour une ligne de code programme donn, on parle de la ligne suivante en +1, de trois lignes aprs en +3,), mais ces adresses ne fonctionnent pas pour les donnes (comme dans le cas des pointeurs, on ne sait plus ou il faut pointer).

4.2.3.2

Adresses de partitions

Autre mthode : on exprime les adresses par rapport la position du dbut de partition. Lorsquil sexcute, le programme voit alors un espace mmoire virtuel qui commence ladresse virtuelle 0 de la partition (gre par la registre de translation). Ce mode dadressage ouvre de nouvelles perspectives : Permet de dplacer une partition sur le disque (SWAPPING) Utilisation dun mode privilgi (rserv au systme) afin dinterdire la manipulation de ce registre aux utilisateurs. On peut considrer lespace virtuel comme plusieurs segments : segment de code, de donnes, de piles. 4.2.3.2.1 Exemple sur 8086 4 registres de segments : CS : Code segment, DS : Date segment, SS : Segment de pile, ES : Segment de donnes secondaires.

4.2.3.2.2 Fonctionnement Ladresse physique sobtient partir de ladresse logique et du registre de segment dcal de 4 bits.

4.2.4 Allocation pagine


Distinction entre adressage virtuel et lespace dadressage rel (position dans la mmoire physique). Lespace virtuel est dcoup en pages dont la taille est une puissance de 2. Ladresse logique correspond : Un numro de page Une position (dplacement dans la page) Supposons que nous ayons des adresses logiques sur 24 bits avec des pages de 4ko. ladresse en hexadcimal, par exemple, 0x 12A3C4 correspond la position 0X 3C4 de la page 12A. Ladressage rel est galement compos de pages (cadres de pages) ayant une mme taille. Le lien se fait par une table de pages associant page logique et cadre de pages. Cette technique rsout la fragmentation : les pages libres nont plus besoins dtre contigus en mmoire pour tre assembles en un espace libre assez grand. Mais on perd, en moyenne, une demi page par processus.

4.3 GNRATION DES ADRESSES


4.3.1 Adressage de base
Le plus simple, pour comprendre le fonctionnement de ladressage physique partir dune adresse logique est de comprendre son principe sur un exemple. Soit 0x12A3C4 une adresse logique (voir allocation pagine 4.2.4). La MMU (Memory Management Unit) regarde la table des pages du processus et dtermine que la page logique 0x12A est situe dans le cadre de page 0x1306B (par exemple). Il suffit de les mettre bit bit pour obtenir ladresse physique (relle) 0x 1306B3C4 (sur 32 bits).

4.3.2 Adressage pour les mmoires segmentes


Sur un 8086, adresse logique sur 16 bits. Le registre de segment CS indique par exemple 0x34E8. Soit ladresse logique 0xA735. Pour obtenir ladresse physique, sur 24 bits, on dcale de 4 bits le CS : 0x34E80 puis on y additionne ladresse logique 0x A735. On obtient alors ladresse physique 0X 3F6B5.

4.3.3 Algorithmes de gestion de mmoire pagine la demande


Ide : principe de localit. (utilise probablement seulement 10% de pages pendant 90% du temps) On va essayer de ne conserver en mmoire que les pages utiles (working set) des processus. On ajoute quelques informations dans la table des pages du processus : Un indicateur boolen indiquant si la page est prsente en mmoire, Un champ donnant sa position sur le disque. Un problme apparat alors : ou charger une page non prsente en mmoire ? Il faut vacuer une page prsente en mmoire pour librer de la place. Si cette page a t modifie, il faut la recopier sur le disque avant de lcraser. Il existe pour cela diffrentes solutions que nous allons voir maintenant.

4.3.3.1

Algorithme idal

Son nom lindique, mais rappelons le tout de mme, lalgorithme idal prsente la manire excellente de rsoudre la solution dun tel problme. Hlas, un tel algorithme est inconcevable. Son principe est cependant trs simple : choisir la page qui sera rfrence le plus tard possible. Cela est irralisable en pratique dans la mesure ou lon ne peut pas savoir quels seront les rfrences de pages utilises.

4.3.3.2

Algorithme FIFO

Utiliser le principe de la file qui est que le premier entr est le premier sorti . Cet algorithme naf nest jamais utilis car les rsultats sont trs mauvais. En effet, il ragit lanomalie de Belady : quelque soit le nombre de pages utilises, pour une suite de page suffisante, on obtient toujours un nombre de dfauts de pages similaire.

4.3.3.3

Algorithme LRU (Less Recently Used)

On charge la nouvelle page sur la place mmoire contenant la page la moins rcemment utilise. Cette ide est thoriquement bonne, mais on ne lutilise pas car elle est trs lourde en terme dimplmentation. En effet, il faut alors : Lister les pages dans lordre de leur dernire rfrence, Utiliser un tampon pour chaque page.

4.3.3.4

Algorithme NRU

Lalgorithme NRU est lapproximation de lalgorithme LRU. Le NRU est lalgorithme utilis. Il charge une page sur une page non rcemment utilise. Pour cela, on associe deux bits chaque page : Bit R : indique que la page a t rfrence, Bit M : indique que la page a t modifie. Ces deux bits sont mis jour chaque accs mmoire. Le fonctionnement est trs simple. De manire priodique, le systme remet les bits R zro. Si le bit R dune page est 1, cest donc quil a t trs rcemment rfrenc. De cette manire, il existe alors 4 types de page qui agissent selon lordre dcroissant suivant : R=0, M=0 R=0, M=1 R=1, M=0 R=1, M=1 La NRU choisit une page non vide au hasard de la premire catgorie (R=0, M=0). Sil ny a aucune page dans cette catgorie, alors elle cherche une page non vide dans la deuxime catgorie (R=0, M=1) et ainsi de suite. A la premire page trouve, elle charge la nouvelle page (aprs avoir sauvegarde lancienne si des modifications ont eu lieu).

4.3.3.5

Algorithme de la seconde change

Cet algorithme est une variante de lalgorithme FIFO qui utilise en plus un bit de rfrence R. Lors dun dfaut de page, lalgorithme teste le bit R de la page la plus ancienne. Si il est 1 on remet la page en fin de file avec son bit de rfrence 0 puis on regarde la page suivante jusqu trouver une page avec R=0.

4.3.3.6

Algorithme de vieillissement

Cet algorithme utilise le principe du bit R et du registre dcalage sur la droite de n bits. A intervalle rguliers, le bit R est transfr dans le registre dcalage puis est mis 0. cela permet davoir un historique dutilisation de la page : un grand nombre dans le registre indique que la page a t rcemment accde.

5 GESTION DES FICHIERS ET DES RPERTOIRES


5.1 IMPLMENTATION DES FICHIERS
5.1.1 Allocation contigu
Les blocs dun mme fichier sont allous conscutivement. Ce mode dallocation a lavantage dtre simple et performant. Cependant, la taille rserve doit tre connue et il faut alors faire face un problme de fragmentation. Ce nest donc pas un bon algorithme.

5.1.2 Liste de blocs chans


On utilise le principe du pointeur sur le bloc suivant. Cela rsout alors le problme de fragmentation dallocation contigu et, de plus, il suffit de connatre le numro du premier bloc pour avoir accs tous les autres. Cependant, laccs alatoire et le parcours de la liste des blocs font que cet algorithme est, lui aussi, peu performant.

10

5.1.3 Une bonne solution


Une bonne solution consiste utiliser le principe de la liste chanes avec une table dindex. Le chanage des blocs seffectue alors dans la table dindex associe. Cela vite les accs disque inutiles. Cependant, la taille utilise pour la table dindex est assez importante. Par exemple, sur un disque dur de 1go, avec des blocs de 1ko, il faut 106 cases dans la table, c'est--dire une table de 4mo. Cet algorithme est utilis par MS-DOS.

5.1.4 I-nodes
A chaque fichier est associe une petite table contenant les attributs du fichier et les adresses des premiers blocs. Pour les fichiers plus important, on utilise des blocs dindirections qui peuvent tre : Simples : contenant alors les adresses de zones, Doubles, contenant des adresses de blocs simples, Triples : contenant des adresses de blocs doubles. Le type I-node est celui utilis par les systmes UNIX. Sur UNIX, chaque table dindirection contient 10 adresses de blocs. Les 10 premiers blocs sont accessibles partir de lI-node, les 10 suivants sont accessibles partir du bloc dindirection simple, les 100 suivants partir du bloc dindirection double et les 1000 suivants partir du bloc dindirection triple. Autre caractristique importante de lI-node : il contient un compteur de rfrence qui compte le nombre de rfrences faites sur lui-mme.

5.2 IMPLMENTATION DES RPERTOIRES


5.2.1 Les rpertoires UNIX
Les rpertoires UNIX sont grs par une table dont chaque lment contient deux champs : Le nom de lobjet, Le numro de lI-node. Les informations concernant un fichier sont stockes dans son I-node. Il est alors possible davoir plusieurs rfrences sur un mme fichier (ce qui nest pas possible sur MS-DOS). A noter deux rfrences particulires : . . qui donne lI-node du pre, . qui donne lI-node du rpertoire lui-mme.

11

Vous aimerez peut-être aussi