Gestion des processus et des ressources par un système d’exploitation
Numérique et sciences informatiques
Toute machine est dotée d’un système d’exploitation qui a pour fonction de charger les programmes depuis la mémoire de masse et de lancer leur exécution en leur créant des processus, de gérer l’ensemble des ressources, de traiter les interruptions ainsi que les entrées-sorties et enfin d’assurer la sécurité globale du système.
Les systèmes d'exploitation récents permettent d'exécuter plusieurs plusieurs programmes simultanément : on les nomme processus. Une des tâches du système d'exploitation est d'allouer à chacun des processus les ressources dont il a besoin en termes de mémoire, entrées-sorties ou temps processeur, et de s'assurer que les processus ne se gênent pas les uns les autres.
Un processus
Un processus est un programme en cours d'exécution sur un ordinateur. Il est caractérisé par
- un ensemble d'instructions à exécuter - souvent stockées dans un fichier sur lequel on clique pour lancer un programme (par exemple firefox.exe)
- un espace mémoire dédié à ce processus pour lui permettre de travailler sur des données qui lui sont propres : si vous lancez deux instances de firefox, chacune travaillera indépendamment de l'autre avec ses propres données.
- des ressources matérielles : processeur, entrées-sorties (accès à internet en utilisant la connexion Wifi).
différence entre programme et processus
Un programme est statique : c'est un fichier contenant une suite d'instructions qui lorsqu'elles sont exécutées modifient l'état du processeur et de la mémoire afin de réaliser une tâche donnée. Il porte souvent l'extension .exe sous windows.
Un même programme peut-être exécuté plusieurs fois sur une même machine (plusieurs documents texte par exemple), il faut alors allouer à chacune de ces exécution des ressources de mémoire et de processeur distinctes qui peuvent varier au cours de ces exécutions.
Un processus est dynamique : c'est une instance d'exécution d'un programme sur une machine ainsi que les ressources nécessaires à leur exécution de son lancement jusqu'à sa fin.
Opérations sur les processus
- création et destruction de processus
- suspension et reprise
- duplication (fork)
- modification de la priorité
- modification des permissions
États d'un processus
Un processus n'a pas seulement besoin d'accéder au processeur, mais il a souvent besoin d'accéder à des ressources autres comme :
- La mémoire vive : RAM,
- La mémoire de masse: disques durs, clés USB, mémoire flash...
- La lecture ou l'écriture d'un fichier...
- Les périphériques d'entrée et de sortie : clavier, souris, écran, imprimante...
Ces ressources externes étant beaucoup moins rapides que le processeur, elles bloquent les processus lors de leur exécution.
Un processus change donc d'état au cours de son exécution :
- Nouveau : le processus est en cours de création
- Exécution : le processus s'exécute ; il est élu
- En attente : le processus attend un évènement particulier (saisie au clavier,écriture sur le disque, …) : il est bloqué
- Prêt : le processus est prêt à reprendre son exécution et attend que l'OS lui rende la main
- terminé : le processus a fini son exécution normale
L'OS détermine et modifie l'état d'un processus :
- En fonction d'évènements internes au processus :
- lecture d'un fichier (si le contenu n'est pas disponible, le processus passe de « prêt » à « en attente »)
- le processus attends volontairement pendant x secondes
- En fonction d'évènements externes au processus :
- un fichier devient disponible
- un timer arrive à 0
- le matériel déclenche une interruption
Visualisation des processus sous Windows
Sous Windows, le gestionnaire des tâches affiche de nombreuses informations. On peut l'ouvrir rapidement en appuyant simultanément sur les touches Ctrl+Shift+Esc. Lorsque la fenêtre est ouverte pour la 1ère fois, elle ne présente que les applications en cours d'exécution sur le bureau. Tout en bas à gauche, on clique sur « plus de détails ».
Un menu en haut propose : Fichier Options Affichage En dessous, plusieurs onglets nous proposent : Processus Performance etc
Dans le menu déroulant Fichier, 2 possibilités : exécuter une nouvelle tâche ou quitter.
Un clic sur Exécuter une nouvelle tâche ouvre une boîte de dialogue dans laquelle il est demandé de renseigner par exemple le nom d'un programme. Après un clic sur le bouton OK, le programme s'exécute. On peut se servir du bouton Parcourir.
Il est possible d'arrêter un programme en cours d'exécution dans l'onglet Processus, en faisant un clic droit sur le nom du processus et en sélectionnant Fin de tâche.
Descripteur de processus
Un processus est connu du système par une structure de données appelée Descripteur de Processus(DdP) ou Process Control Bloc (PCB). Véritable carte d’identité du processus, cette structure mémorise notamment :
- Le numéro du processus (PID)
- Sa priorité
- Son état
- Son contexte (copie des registres du processeur...)
- Des pointeurs sur diverses tables (pagination mémoire par ex.)
- Des pointeurs sur le code et les données du processus concerné
Le rôle d’un descripteur de processus est de permettre la manipulation simultanée de plusieurs processus par le système. Ce descripteur est plus ou moins riche suivant les systèmes d’exploitations.
Sous Windows, le gestionnaire des tâches permet de connaître le PID et l'état des processus. Il suffit de choisir l'onglet Détails.
Ordonnancement
Chaque processus possède en mémoire les instructions à exécuter et ses données. Le système d'exploitation doit pouvoir donner l'impression que tous les processus s'exécutent en même temps. C'est le noyau du système d'exploitation qui est en charge de cela et plus particulièrement l'ordonnanceur (scheduler).
Comme, il y a souvent davantage de processus à exécuter que de processeurs , le rôle de l'ordonnanceur, est de permettre à tous ces processus de s'exécuter à un moment ou un autre et d'utiliser au mieux le processeur. L'ordonnanceur se charge donc d'allouer du temps processeur aux différents processus, suivant une certaine logique.
Plusieurs algorithmes d'ordonnancement sont possibles. Parmi les plus répandus, on trouve :
- Ordonnancement Premier Arrivé Premier Servi (FIFO)
Quand un processus est prêt à s’exécuter, il est mis en queue de la file d’attente des processus prêts - Ordonnancement circulaire : tourniquet (round robin)
l'ordonnanceur traite la file d'attente comme une file circulaire et alloue successivement un temps processeur à chacun des processus de la file. - Ordonnancement avec priorité
Quand un processus est admis par le système il est insérer dans la file d’attente des processus prêts à sa position appropries (selon la valeur de priorité) - Ordonnancement du plus court d’abord (SJF(Shortest Job first) ou SRTF (Shortest Remaining Time first)
Ordonnanceur choisit de façon prioritaire les processus ayant le plus court temps d’exécution sans réellement tenir compte de leur date d’arrivée.
Entraînement 1 : Gestion des processus et ordonnancement
Nous considérons 5 processus (A, B, C, D, E) avec des temps d'exécution, des temps d'arrivée et des priorités donnés dans le tableau suivant :
Processus | Temps d'exécution | Temps d'arrivée | Priorité 1 > 2 > 3 > 4 > 5 |
---|---|---|---|
A | 3 | 0 | 5 |
B | 6 | 1 | 4 |
C | 4 | 4 | 3 |
D | 1 | 6 | 2 |
E | 2 | 7 | 1 |
- Compléter le tableau suivant en déterminant le temps de présence (t_p) et le temps d'attente (t_a) de chaque processus pour différents algorithmes d'ordonnancement :
- Calculer le temps moyen de présence des processus.
- Calculer le temps moyen d’attente de chaque processus
Temps de présence (t_p) : Le temps total pendant lequel un processus est en cours d'exécution ou en attente dans le système, depuis son arrivée jusqu'à sa fin.
Temps d'attente (t_a) : Le temps total pendant lequel un processus attend pour être exécuté, c'est-à-dire la différence entre le temps de présence et le temps d'exécution (t_a = t_p - t_ex).
Ordonnancement | t_p A | t_p B | t_p C | t_p D | t_p E | t_a A | t_a B | t_a C | t_a D | t_a E |
---|---|---|---|---|---|---|---|---|---|---|
Fifo | ||||||||||
SJF | ||||||||||
Priorité |
Interblocage
Un interblocage (ou étreinte fatale, deadlock en anglais) est un phénomène qui peut se produire lorsque des processus s'attendent mutuellement. Les processus bloqués dans cet état le sont définitivement. Ce scénario catastrophe peut se produire dans un environnement où des ressources sont partagées entre plusieurs processus et l'un d'entre eux détient indéfiniment une ressource nécessaire pour l'autre.
Cette situation d'interblocage a été théorisée par l’informaticien Edward Coffman (1934-) qui a énoncé quatre conditions (appelées conditions de coffman) menant à l'interblocage :
- Exclusion mutuelle : au moins une des ressources du système doit être en accès exclusif.
- Rétention des ressources : un processus détient au moins une ressource et requiert une autre ressource détenue par un autre processus
- Non préemption : Seul le détenteur d'une ressource peut la libérer.
- Attente circulaire : Chaque processus attend une ressource détenue par un autre processus. P_1 attend une ressource détenue par P_2 qui à son tour attend une ressource détenue par P_3 etc... qui attend une ressource détenue par P_1 ce qui clos la boucle.
Exemple :
Deux processus en concurrence pour deux ressources dans un ordre opposé.
- A Un seul processus se déroule.
- B Le processus ultérieur doit attendre.
- C Un blocage se produit lorsque le premier processus verrouille la première ressource en même temps que le second processus verrouille la seconde ressource.
- D Le blocage peut être résolu en annulant et en redémarrant le premier processus.
Il existe plusieurs façons de gérer les interblocages:
- les ignorer ce qui était fait initialement par UNIX qui supposait que la fréquence des interblocages était faible et que la perte de données encourue à chaque fois est tolérable.
- les détecter: Un algorithme est utilisé pour suivre l'allocation des ressources et les états des processus, il annule et redémarre un ou plusieurs processus afin de supprimer le blocage détecté
- les éviter: des algorithmes sont utilisés pour supprimer une des quatre conditions nécessaires à la possibilité de l'interblocage(Conditions de Coffman)
Entraînement 2 :
Expliquer la situation d'interblocage suivante avec les conditions de Coffman :
Savoir faire
- Décrire la création d’un processus,
- Décrire l’ordonnancement de plusieurs processus par le système.
- Mettre en évidence le risque de l’interblocage (deadlock).
Fiche de cours