520 likes | 733 Views
Informatique de Base Introduction aux Systèmes d'Exploitation. Pierre Manneback Service d ’Informatique Faculté Polytechnique de Mons Pierre.Manneback@fpms.ac.be http://elearning.fpms.ac.be (info). Gestion des Processus. 2.1. Les processus 2.2. L'ordonnancement des processus. Chapitre 2.
E N D
Informatique de BaseIntroduction aux Systèmes d'Exploitation Pierre Manneback Service d ’Informatique Faculté Polytechnique de Mons Pierre.Manneback@fpms.ac.be http://elearning.fpms.ac.be (info) OS 2003-04, FPMs, Ch. 2
Gestion des Processus 2.1. Les processus 2.2. L'ordonnancement des processus Chapitre 2 OS 2003-04, FPMs, Ch. 2
2.1. Les processus • Un processus est un programme en exécution • Un processus est caractérisé par un contexte d ’exécution • segments de texte, données et pile • compteur spécifiant l’instruction suivante à exécuter • registres OS 2003-04, FPMs, Ch. 2
Les segments d'un processus: le texte, les données, la pile . OS 2003-04, FPMs, Ch. 2
Etats d'un processus ordonnanceur . OS 2003-04, FPMs, Ch. 2
L'importance de l'ordonnanceur • Une des bases d'un OS multiprogrammé est • le traitement des interruptions • l'ordonnancement OS 2003-04, FPMs, Ch. 2
Opérations sur les processus • Création de nouveaux processus • Terminaison de processus • Suspension • Interne (wait) • Externe (attente d’une ressource) P1 P4 P2 P5 P7 P3 P6 Arbre de processus OS 2003-04, FPMs, Ch. 2
Création de processus • Un processus (père) peut créer des processus fils • stockage en une structure d'arbre de processus, • chaque processus connaît son père • Partage de ressources (mémoire, fichiers) entre père et fils • total ou partiel • Exécution • soit concurrente • soit le père attend la terminaison du fils OS 2003-04, FPMs, Ch. 2
Création de Processus • Espace d'adressage • soit le fils duplique celui du père • soit le fils charge un nouveau programme • exemples UNIX • l'appel système fork crée un processus fils • l'appel système execve utilisé après fork charge un nouveau programme dans l'espace d'adressage du processus fils OS 2003-04, FPMs, Ch. 2
L’exemple de UNIX Identification des processus xterm inetd syslog tcsh make MonProgramme xmail • Les processus sont gérés de manière hiérarchique (arbre de processus) • Chaque processus a donc un processus père, l’ayant créé. Sauf le processus initial, de numéro (pid) 0, qui est le swap. Init OS 2003-04, FPMs, Ch. 2
Identification des processus • pid : entier positif unique identifiant le processus • ppid : piddu processus père • uid, euid: identifieur de l’utilisateur réel (celui qui a lancé le proc) ou effectif (au moment de l’instruction) • gid, egid :identifieur du groupe de l’utilisateur réel (ou effectif) OS 2003-04, FPMs, Ch. 2
Création de processuspid_t fork(void); • Un processus (père) peut en créer un autre (processus fils) par l ’appel systèmefork(). • L ’appelfork()duplique le contexte du processus père. Il retourne la valeur 0 au fils, et le piddu fils au père. fork() pidfils père 0 fils OS 2003-04, FPMs, Ch. 2
Création de processus Toute création de processus se fera donc en unix par un code du type: #include <unistd.h> … if ( pid_child = fork() ) { /* I am the father*/ …} else { /* I am the child*/ …} OS 2003-04, FPMs, Ch. 2
Création de processus • Le branchement en fonction du retour de fork() permet de donner au fils un code distinct du père. • Seules limitations: • nombre maximal de processus en cours dans le système, ou pour l’utilisateur (code erreur , retour de fork() = -1) • plus assez de mémoire (code erreur, retour de fork() = -1) OS 2003-04, FPMs, Ch. 2
La terminaison de processus • Exécution de la dernière instruction ou appel système exit() . • L'O.S. libère les ressources employées • Le père en attente peut se réactiver • Un parent peut arrêter son exécution (abort()) ou un processus peut "tuer" un autre s'il en a le droit (kill()) • Les processus orphelins (père mort) sont généralement associés au processus racine. OS 2003-04, FPMs, Ch. 2
La terminaison de processus 4 possibilités: • Sortie normale (appel exit() ou fin de code) • Sortie en cas d'erreur (volontaire, appel abort()) • Erreur fatale (involontaire, kill() par l'O.S.) • Processus tué par un autre (involontaire, appel- système kill()) OS 2003-04, FPMs, Ch. 2
Implémentation des processus PCB = Process Control Block Bloc d'informations caractérisant complètement un processus • Etat • Compteur d'instruction • état des registres • paramètres de priorité et d'ordonnancement • paramètres de gestion de la mémoire • informations comptables • informations I/O (fichiers ouverts…) OS 2003-04, FPMs, Ch. 2
Process Control Block (PCB) OS 2003-04, FPMs, Ch. 2
Les PCB permettent d'interrompre et de relancer des processus OS 2003-04, FPMs, Ch. 2
Vision plus détaillée des PCB les PCB sont regroupés dans une table de processus OS 2003-04, FPMs, Ch. 2
2.2. L'ordonnancement des processus • Bursts of CPU usage alternate with periods of I/O wait • (a) a CPU-bound process • (b) an I/O-bound process OS 2003-04, FPMs, Ch. 2
Objectifs de l'ordonnancement . OS 2003-04, FPMs, Ch. 2
Objectifs de l’ordonnancement • Beau problème multicritère! • Il n ’y a pas qu’une politique d’ordonnancement mais des politiques paramétrées • Souvent, on choisit une politique, que l’on adapte (tuning) à la situation concrète nombre et type de processus, priorités, contraintes,... OS 2003-04, FPMs, Ch. 2
Algorithmes d'ordonnancement • Premier arrivé, premier servi (FCFS) • Plus court d'abord (SJF) • Avec priorité • Carrousel (Round Robin) • Avec files multiples OS 2003-04, FPMs, Ch. 2
L’ordonnancement le plus simple First Come First Served t=0 24 30 1 2 3 • Simple • Souvent frustrant (attente pour les jobs courts) Job CPU use 1 24 2 3 3 3 temps d'attente moyen =17 OS 2003-04, FPMs, Ch. 2
First Come First Served t=0 6 30 1 2 3 • Grande variabilité suivant l’ordre d’arrivée Job CPU use 1 3 2 3 3 24 • Temps d'attente moyen=3 • Entraîne un effet de convoi: grand nombre de jobs courts derrière un job long (analogie au camion dépassant sur autoroute) OS 2003-04, FPMs, Ch. 2
Ordonnancement Shortest-Job-First (SJF) • Associe à chaque processus une estimation n+1 de la durée de la prochaine utilisation CPU (CPU burst). • Choisit le processus avec le plus petit n+1 • Difficulté: l'estimation n+1 • SJF est optimal : il donne le temps moyen d'attente minimal pour un ensemble de processus donnés (où l'on connaît les temps successifs d'exécution!) OS 2003-04, FPMs, Ch. 2
SJF non préemptif ou préemptif • 2 schémas possibles • nonpréemptif • préemptif: réquisitionner le CPU si un processus nouveau a une estimation n+1 plus petite que le temps estimé restant du processus en cours. Ce schéma est connu sous le nom deShortest-Remaining-Time-First (SRTF). OS 2003-04, FPMs, Ch. 2
Exemple de SJF non préemptif Process Arrival TimeBurst Time(estimated) P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 temps moyen d'attente = (0 + (12-4-2) + (8-1-4)+ (16-4-5))/4 = 4 P1 P3 P2 P4 0 3 7 8 12 16 OS 2003-04, FPMs, Ch. 2
Exemple de SRTF Process Arrival TimeBurst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 Average waiting time = ((16-7)+ (7-4-2) + (5-4-1) +(11-4-5)/4 = 3 P1 P2 P3 P2 P4 P1 11 16 0 2 4 5 7 OS 2003-04, FPMs, Ch. 2
Estimer la durée du prochain CPU Burst Sur base du passé : estimation du burst précédent + durée réelle burst précédent n+1 = tn + (1 - )n souvent = 0.5 OS 2003-04, FPMs, Ch. 2
SJFExemple de moyenne exponentielle • =0 n+1 = n • Ne tient pas compte de l'historique • =1 n+1 = tn • Tient uniquement compte de la durée du burst précédent. • Par expansion de la formule n+1 = tn+(1 - ) tn-1+ …+(1 - )j t n-j+ … • comme et (1 - ) sont compris entre 0 et 1, chaque terme a moins de poids que son prédécesseur (moyenne pondérée). OS 2003-04, FPMs, Ch. 2
SJFExemple de moyenne exponentielle (2) CPU Burst: 6 4 6 4 13 13 13 Guess: 10 8 6 6 5 9 11 12 n+1 = tn + (1 - )n = 0.5 OS 2003-04, FPMs, Ch. 2
Ordonnancement par priorité • Une priorité (nombre entier positif) est associée à chaque processus • Le CPU est alloué au processus prêt avec la plus haute priorité (FIFO par priorité) (plus petit entier = plus haute priorité), de manière préemptive ou non. • SJF est en fait un ordonnancement par priorité où la priorité est l'estimation du temps CPU du prochain cycle • Problème Famine: un processus avec faible priorité peut attendre très longtemps • Solution Priorité dynamique en fonction du temps d'attente. Au plus on attend, au plus la priorité augmente OS 2003-04, FPMs, Ch. 2
Ordonnancement "Carrousel" Round Robin (RR) • Définition d'une durée maximale d'utilisation continue du CPU par processus (quantum), par ex. 10-100 millisecondes. Quand un processus en exécution atteint son quantum, il est interrompu.Choix FIFO des processus prêts (Carrousel) • Si n processus prêts avec un quantum q, chaque processus utilisera 1/n du CPU au plus un temps q. Aucun processus n'attend donc plus de (n-1)q unités de temps • si q grand => FIFO • si q petit, beaucoup de pertes OS 2003-04, FPMs, Ch. 2
Exemple: RR avec Quantum = 20 P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 ProcessBurst Time P1 53 P2 17 P3 68 P4 24 • Typically, higher average turnaround than SJF, but better response. 0 20 37 57 77 97 117 121 134 154 162 OS 2003-04, FPMs, Ch. 2
RR: problème du choix du quantum OS 2003-04, FPMs, Ch. 2
RR: le temps total moyen d'exécution varie avec le quantum OS 2003-04, FPMs, Ch. 2
RR: le temps total moyen d'exécution varie avec le quantum (2) • q=6 t(P1) =6, t(P2) =9, t(P3) =10, t(P4) =17 => temps moyen = 10.5 • q=5 t(P1) =15, t(P2) =8, t(P3) =9, t(P4) =17 => temps moyen=12.25 • Compromis temps d'attente d'un tour/temps total d'exécution • tenir compte de la durée des changements de contexte • Idéalement, quantum proche des durées de cycle CPU (burst) moyen OS 2003-04, FPMs, Ch. 2
Ordonnancement avec files multiples • Le pool des processus prêts est partitionné en différentes files suivant le type de processus ou ses priorités • Chaque file peut avoir son propre algorithme d'ordonnancement • file de processus utilisateurs interactifs – RR • file de processus système – FCFS • file de processus batch -Par priorité • Un ordonnancement doit être effectué entre les files. OS 2003-04, FPMs, Ch. 2
Ordonnancement avec files multiples (2) • Priorités de files: d'abord les processus systèmes, ensuite les processus interactifs, enfin les batchs. Si priorité fixe, danger de famine. • Réserver des quotas d'utilisation CPU par files: maximum 20% pour la file système, 50% pour l'interactive, 30% pour la batch (éventuellement quota dynamique suivant le moment de la journée). OS 2003-04, FPMs, Ch. 2
Ordonnancement avec files multiples (3) OS 2003-04, FPMs, Ch. 2
Ordonnancement avec files multiples et feedback • Possibilité de transition d'un processus d'une file à une autre en fonction de son temps d'attente • De nombreux paramètres sont à considérer: • nombre de files • ordonnanceur pour chaque file • algorithme de rehaussement de priorité • algorithme d'abaissement de priorité • algorithme de choix de file de départ OS 2003-04, FPMs, Ch. 2
Exemple d'ordonnancement avec files multiples et feedback • 3 files: • Q0 – quantum 8 ms • Q1 – quantum 16 ms • Q2 – FCFS • Ordonnancement • Un processus P entre dans la file Q0. Quand il est élu, il reçoit 8 ms. S'il ne termine pas en 8 ms, il passe à la file Q1 (abaissement de priorité). • Soit la file Q0 devient vide, auquel cas P peut s'exécuter et recevoir un quantum de 16 ms. Après coup, il passe à la file Q2. • Un algorithme de rehaussement de priorité doit être associé. OS 2003-04, FPMs, Ch. 2
Exemple d'ordonnancement avec files multiples et feedback (2) OS 2003-04, FPMs, Ch. 2
Niveaux de priorité définis par le système suivant l’activité mode user mode noyau 0 - while swapping 10 - waiting for file ctrl 20 - waiting on disk i/o 25 - PZERO, baseline 30 - waiting on resources 35 - waiting on locks 40 - waiting for an event 50 - PUSER, base user Ordonnancement Unix OS 2003-04, FPMs, Ch. 2
Mode noyau dépend de l’activité Mode user pusrpri < 128 pnice diminue la priorité pcpu reflète l’utilisation cpu pusrpri = PUSER + pcpu/4 + 2*pnice Ordonnancement Unix OS 2003-04, FPMs, Ch. 2
Ordonnancement linux • 3 types de processus pour l ’ordonnanceur • SCHED_FIFO processus prioritaire non préemptible • SCHED_RR processus prioritaire préemptible • SCHED_OTHER processus classique OS 2003-04, FPMs, Ch. 2
Ordonnancement linux • La file des processus SCHED_FIFO « ready to run » est exécutée prioritairement • Ces processus ne sont interruptibles que si: • un autre processus SCHED_FIFO avec plus haute priorité est prêt • le processus abandonne le processeur (appel sched_yield) ou est en attente d'un événement OS 2003-04, FPMs, Ch. 2
Ordonnancement linux • Les processus SCHED_RR suivent le même schéma, mais ils travaillent avec un quantum de temps pour leur exécution • Il y a possibilité de modifier la politique d’ordonnancement et les paramètres d’ordonnancement associés à un processus par des appels-système OS 2003-04, FPMs, Ch. 2