Systèmes d_Exploitation-Cours3.pptx

64
Systèmes d’Exploitation Licence Informatique 2ème Année 2015-2016

Transcript of Systèmes d_Exploitation-Cours3.pptx

Systmes dExploitation

Systmes dExploitationLicence Informatique 2me Anne2015-2016

Gestion des Processus

IntroductionUn processus est un programme en excutionUn processus a besoin de ressources : du temps CPU, de la mmoire, des fichiers, des devices dI/O pour accomplir sa tche

Le systme dexploitation est responsable des activits suivantes en connection avec la gestion des processus :Cration et suppressions de processusSuspension et redmarrage de processusFourniture de mcanismes pour : Synchronisation de processusCommunication entre processusProblme:Comment grer lexcution de plusieurs processus sur une seule UCT

Un processus sera parfois en excution sur lUCT, parfois en attente dune E/S, parfois en attente de lUCTCration et synchronisation de processus

En UNIX, le fork cr un processus identique au pre, except son pid exec peut tre utilis pour excuter un nouveau programmeExemples de processus systme dans UNIXinit est cr au lancement du systmeassure lexistence dun processus pour chaque terminal de commandesil le fait en invoquant la commande gettyprocessus pre de tous les processus shells crs par lutilisateurcron lance des dates spcifies des commandes particulireslpsched assure l'ordonnancement des requtes d'impressionfork() cre un processus fils identique son pre

Exemples de Commandes shellQuelques commandes simples :date ; cal Date; calendrierwho Qui est connect?logname; pwd Qui suis je?; O suis je ?tty nom du terminalpasswd Changer le mot de passe

7Etat dun processusAu fur et mesure de son excution, un processus change dtat :New: le processus est en cours de crationRunning: le processus est en train dtre excut par lUCWaiting: le processus est en train dattendre un vnement (p.ex. la fin dune opration dE/S)Ready: le processus est en attente de passer en running (gestion du scheduler)Terminated: le processus a termin son excutionOrdonnanceur UCTUne UCT dans un ordi est une ressource qui peut tre affecte tantt un processus, tantt un autreQuand une UCT se libre, un programme est invoqu qui dcide quel processus lui sera affectCe programme est parfois appel gestionnaire de tches, task manager, etc.Nous lappellerons ordonnanceur UCT

Diagramme de transition dtats dun processus

Ordonnanceur = angl. schedulertats Nouveau, Termin:NouveauLe SE a cr le processus a construit un identificateur pour le processusa construit les tableaux pour grer le processusmais ne sest pas encore engag excuter le processus (pas encore admis) pas encore allou des ressourcesLa file des nouveaux travaux est souvent appele spoule travaux (job spooler)Termin: Le processus nest plus excutable, mais le SE est encore en train de nettoyer ses donnes

Transitions de processusPrt ExcutionLorsque lordonnanceur UCT choisit un processus pour excutionExcution PrtPremption: Rsultat dune interruption cause par un vnement indpendant du processusIl faut traiter cette interruption, donc le processus excutant perd lUCTLe processus puis temps dUCT (minuterie-temporisation)Un autre processus prt devient urgent et doit tre excut

Ch.413Transitions de processusExcution AttenteLorsquun processus fait un appel de systme (interruption cause par le processus lui-mme)initie une E/S: doit attendre le rsultat a besoin de la rponse dun autre processus

Attente Prtlorsque l'vnement attendu se produit

Commutation de processus et Process Control Block15Sauvegarde dinformations de processusUn processus excute sur lUCT de faon intermittenteChaque fois quun processus reprend lUCT (transition prt excution) il doit la reprendre dans la mme situation o il la laisse (mme contenu de registres UCT, etc.)Donc au moment o un processus sort de ltat excution il est ncessaire de sauvegarder ses informations essentielles, quil faudra rcuprer quand il retourne cet tat

16PCB = Process Control Block: Reprsente la situation actuelle dun processus, pour le reprendre plus tard

Registres UCT17Process Control Block (PCB)pointeur: les PCBs sont rangs dans des listes enchanes ( voir)tat de processus: prt, exec, attentecompteur programme: le processus doit reprendre linstruction suivanteautres registres UCTAccumulateur etc.bornes de mmoirefichiers quil a ouvertetc., v. manuel

O se trouve le BCPPuisque le BCP contient des informations critiques pour le processus, il est plac dans une rgion de la mmoire centrale interdite daccs par les utilisateurs. Dans certains SE le BCP est plac au dbut de la pile noyau du processus puisque cest une zone protge. Lexistence dun processus est forcment manifeste par la cration dun BCPUn changement de contexte sopre lorsquun nouveau processus reprend lexcution

Table des processusPour mettre en uvre le modle des processus, le SE gre une table des processus dont chaque entre correspond un processus. PCB1PCB2PCB3.P1P2P3...Pointeur vers code...Compteur ordinal..Table des processus rsidente en mmoirePCB2Pointeur vers codeTable des codes chargs en mmoirePCB1Ch.420Commutation de processeur Aussi appl commutation de contexte ou context switchingQuand lUCT passe de lexcution dun processus P0 lexcution d`un proc P1, il faut mettre jour et sauvegarder le PCB de P0reprendre le PCB de P1, qui avait t sauvegard avantremettre les registres dUCT tels que le compteur dinstructions etc. dans la mme situation qui est dcrite dans le PCB de P1

21Commutation de processeur (context switching)

Nous faisons lhypothse que seulement 2 procs soient actifsinactif?22Rle du matriel et du logiciel dans le traitement dinterruptionsMATRIELLOGICIELSignal dinterruption gnrUCT termine linstruction couranteet dtecte interruptionRegistres dUCT sont sauvegards dans la pile des interr.UCT saute ladresse trouve dans le vecteur dinterruptionInfossauvegardes dans PCBLe code de traitement de linterruption est excutLordonnanceur choisit unprocessus qui est prtLes registres dUCT sont rechargsavec ces infos

Les infos relatives ce processus sont rtablies partir de son PCB dispatcherLUCT reprend lexec de ce procCh.423Le PCB nest pas la seule information sauvegarderIl faut aussi sauvegarder ltat des donnes du programmeCeci se fait normalement en gardant limage du programme en mmoire primaire ou secondaire (RAM ou disque)Le PCB pointera cette image 24La pile dun processusQuand un processus fait appel une procdure, une mthode, etc., il est ncessaire de mettre dans une pile ladresse laquelle le processus doit retourner aprs avoir termin cette procdure, mthode, etc.

Aussi on met dans cette pile les variables locales de la procdure quon quitte, les paramtres, etc., pour les retrouver au retourLa pile dun processusChaque lment de cette pile est appel stack frame ou cadre de pileDonc il y a normalement une pile dadresses de retour aprs interruption et une pile dadresses de retour aprs appel de procdureCes deux piles fonctionnent de faon semblable, mais sont indpendantesLes informations relatives ces piles (base, pointeur) doivent aussi tre sauvegardes au moment de la commutation de contexte

26La Pile dun processusABAppel AAppel BPILEDonnes PDonnes BDonnes AP27Pointeurs de pile processus sauvegarder: base et bornecadre 1cadre 2cadre 3cadre 4pointeur de basepointeur de borneLes pointeurs sont souvent des registres dUCT donc il sont sauvegards dans le PCBFiles dattentes de processus2829 Files dattenteLes ressources dordi sont souvent limites par rapport aux processus qui en demandentChaque ressource a sa propre file de processus en attenteQuand il y a interruption sur une ressource (pex fin dE/S) les files permettent aussi de dterminer quel processus doit tre notifiFiles dattenteEn changeant dtat, les processus se dplacent dune file l`autreFile prt: les processus en tat prt=readyFiles associs chaque unit E/Setc.

31Ce sont les PCBs qui sont dans les files dattente (dont le besoin dun pointeur dans le PCB) file prtNous ferons lhypothse que le premier processus dans une file est celui qui utilise la ressource: ici, proc7 excute, proc3 utilise disque 0, etc.

32Une faon plus synthtique de dcrire la mme situationprt 7 2 bandmag0 bandmag1 disq0 3 14 6term0 5

33readydisk unit 0. . .PCB4

. . .

PCB2PCB3PCB5PCB6PCB7PCB14term. unit 0

Les PCBs ne sont pas dplacs en mmoire pour tre mis dans les diffrentes files: ce sont les pointeurs qui changent.

Trois structures de donnes essentielles pour la gestion des processusLes structures de donnes suivantes sont relies mais distinctes dans leur utilisation et contenuPile propre chaque processus pour grer les appels-retours aux procdures, mthodes, fonctions etc.Pile du SE pour grer les interruptions et retours des interruptionsListe des PCBs actifs dans le systme un moment donn, est partitionne en plusieurs listes dattente, une pour chaque ressource qui peut tre affecte un proc

34Trois structures de donnes essentielles pour la gestion des processusChacune de ces piles ou listes doit sauvegarder des informations pour pouvoir retourner la bonne place du bon processus avec le bonnes donnesaprs avoir fait dautres traitements

Ces listes sont diffrentes!Pile propre chaque processus pour grer les appels-retours aux procdures, mthodes, fonctions etc.Cette pile doit exister dans tout systme qui admet ces appels, mme si le systme nadmet ni les interruptions, ni la multiprogrammationElle est gre par le systme dexcution du programme compil

36Ces listes sont diffrentes!Pile du SE pour grer les interruptions et retours des interruptionsCette pile doit exister dans tout systme qui admet des interruptions, mme sil nadmet pas de multiprogrammationElle est gre directement par le matriel

Ces listes sont diffrentes!Liste des PCBs actifs dans le systme Ncessaire pour la multiprogrammationElle est gre par le SE

Ordonnanceurs (schedulers)3940Ordonnanceurs (schedulers)Programmes qui grent lutilisation de ressources de lordinateurTrois types dordonnanceurs : court terme = ordonnanceur processus: slectionne quel processus doit excuter la transition prtexcution

long terme = ordonnanceur travaux: slectionne quels processus peuvent excuter la transition nouveau prt (vnement admitted) (de spoule travaux file prt)

moyen terme: nous verronsDispatcheurProgramme qui, faisant suite la dcision de lordonnanceur, effectue la commutation de contexteSouvent considr partie de lordonnanceurCh.44142Ordonnanceur travaux = long termeet ordonnanceur processus = court terme

Ordonnanceur travauxOrdonnanceur processus43OrdonnanceursL`ordonnanceur court terme est excut trs souvent (millisecondes)doit tre trs efficaceL`ordonnanceur long terme doit tre excut beaucoup plus rarement: il contrle le niveau de multiprogrammationUn des ses critres pourrait tre la bonne utilisation des ressources de lordinateur P.ex. tablir une balance entre travaux lis lUCT et ceux lis lE/S

Ch.444Ordonnanceur moyen termeLe manque de ressources peut parfois forcer le SE suspendre des processusils seront plus en concurrence avec les autres pour des ressourcesils seront repris plus tard quand les ressources deviendront disponiblesCes processus sont enlevs de mmoire centrale et mis en mmoire secondaire, pour tre repris plus tard`swap out`, `swap in`, va-et-vien

45Ordonnanceurs long, court et moyen terme

courtmoyenlong

Programmation en C sous UNIX46Manipulation de processus.Les commandes fork(),wait().Communication inter-processus.Les signauxLes processusCration dun processus.Lorsquon entre une commande, le shell lance un processus pour lexcuter.Le shell attend la fin du processus, puis attend la commande suivante.Arborescence de processus.Chaque processus a un pre, celui qui la lanc.Le numro du processus du pre est le PPID.Un processus pre peut avoir plusieurs processus filsSous UNIX, un premier processus init est crer avec un PID de 1. Anctres de tous les processus.Cration de processusDuplication dun processus.Seule faon de crer un processus bas niveau.Appel systme fork()Cre une copie complte du processus, fils de ce processus.Le fils change de programme en appelant exec().La fonction exec() remplace le code et ses donnes par celui dune nouvelle commande.Excution dune commandeExcution dune commande:Le shell se duplique avec fork(). On a alors deux processus shell identiques.Le shell pre attend la n du processus ls avec wait().Le shell ls remplace son excutable par celui de la commande tar avec exec()La commande tar sexcute. Lorsquelle se termine, le processus fils disparait.Le shell pre est ractiv et attend la commande suivante.La primitive int fork()Lappel a fork() duplique le processus.Lexcution continue dans les deux processus.Valeur retourne par fork():Dans le processus pre, retourne le PID du fils.Dans le processus fils, retourne 0.Si le fork choue, renvoie -1.getpid() et getppid()getpid() retourne le PID du processus.getppid() retourne le PID du pre du processus.Exemple avec fork()#include #include int main() { int pidfils=fork(); if(pidfils!=0) { printf("Je suis le pre."); printf("PID de mon fils:%d\n",pidfils); } else { printf("Je suis le fils."); printf("Mon pid est:%d\n",getpid()); }}Exemple avec fork()Rsultat: forksimpleJe suis le pre. PID de mon fils:2864Je suis le fils. Mon PID est:2864Peut aussi apparatre dans lordre inverse.waitLa primitive wait( &Etat ) permet un processus dattendre la fin dun de ses fils.

Si pas de fils ou erreur, retourne -1.

Sinon, retourne le PID du fils qui sest termin.waitQuand un processus se termine, le signal SIGCHILD est envoy son pre. La rception de ce signal fait passer le processus pre de l'tat bloqu l'tat prt. Le processus pre sort donc de la fonction wait.

Chaque fois qu'un fils se termine le processus pre sort de wait, et il peut consulter Etat pour obtenir des informations sur le fils qui vient de se terminer.

exitLa primitive exit permet de terminer le processus qui lappelle.void exit(int status)status : permet dindiquer au processus pre quune erreur sest produite.status=0 si pas derreur.

La primitive sleepSimilaire la commande shell sleepint sleep(int seconds)Le processus qui appelle sleep est bloqu pendant le nombre de secondes spci.Dirence avec wait()wait() bloque jusqu la n du ls, alors que sleep() bloque un temps spci.Exempleint pidfils=fork();

if(pidfils!=0) { printf("Je suis le pre.\n"); if (wait(&status)>0) printf("mon fils a termin.\n"); } else { printf("je suis le fils.\n"); sleep(2); printf("arrt du fils.\n"); exit(0); }RsultatRsultat $ forkJe suis le preje suis le filsarrt du filsmon fils a termin$Les signaux asynchronesLes signaux permettent dindiquer un processus quun certain vnement sest produit.Il existe 32 types de signaux prdfinis.Un signal peut-tre envoy par un processus ou par le systme (lorsquune erreur se produit).Les signaux asynchronesTraitement des signaux.Les signaux reus peuvent tre traits par le processus: une fonction traitante peut tre automatiquement appele ds rception dun signal.Sauf pour le signal numro 9 qui entraine toujours la fin du processus.Envoyer des signauxLa fonction kill : int kill ( int pid, int signum)kill() peut tre utilis pour envoyer n'importe quel signal n'importe quel processus ou groupe de processus. Si pid est positif, le signal sig est envoy au processus pid. Si pid vaut zro, alors le signal sig est envoy tous les processus appartenant au mme groupe que le processus appelant. Si pid vaut -1, alors le signal sig est envoy tous les processus sauf le premier (init) dans Envoyer des signauxListe des signaux:9: SIGKILL, fin du processus.10: SIGUSR1, dfinissable par lutilisateur.18: SIGCONT, reprise dun processus stopp.19: SIGSTOP, stopper un processus.Envoyer des signauxDepuis le clavier:Ctrl-C.Envoie un signal SIGINT au processus qui sexcute.Cela entraine par dfaut la fin du processus.Ctrl-Z:Envoie un signal SIGTSTP au processus qui sexcute.Par dfaut, lexcution du processus est suspendu.