Processus et interblocages

Comprendre la création des processus, leurs états, l’ordonnancement et les situations d’attente menant à un interblocage.

Environ 40 minutes

  • Distinguer programme et processus
  • Simuler un ordonnancement simple
  • Identifier et expliquer un interblocage
Sommaire
  1. 1. Du programme au processus
  2. 2. Prêt, élu, bloqué
  3. 3. Partager le temps du processeur
  4. 4. Des ressources qui empêchent de progresser
  5. 5. Au bac : faire une trace et conclure

Deux applications attendent chacune une ressource conservée par l’autre. Le processeur plus rapide peut-il résoudre cette attente ?

Le système d’exploitation organise l’exécution des programmes et l’accès aux ressources de la machine. Un processus associe un programme en cours d’exécution à un contexte, des données et des ressources. Comprendre ses états permet de distinguer une application qui calcule, une application prête et une application bloquée. Nous utiliserons des chronologies et un modèle de ressources exclusives. Les scénarios précisent leurs hypothèses ; ils ne décrivent pas l’ordonnanceur exact de tous les ordinateurs.

1. Du programme au processus

Un programme est une description d’instructions enregistrées dans un fichier ou conservées sous une autre forme. Un processus est une instance de son exécution. Lancer deux fois le même programme peut créer deux processus distincts, avec des données de travail différentes. Le texte du programme ne décrit donc pas à lui seul l’état complet de chaque exécution. Une application complexe peut également employer plusieurs processus coopérant entre eux.

Lors de la création d’un processus, le système prépare un contexte d’exécution : zones de mémoire, registres, position dans le programme et ressources associées. Il lui attribue un identifiant de processus, appelé PID. Cet identifiant distingue les processus présents ; il peut être réutilisé après la fin d’un ancien processus. Dans les systèmes de type Unix, une relation parent-enfant aide à suivre leur création. Les détails des mécanismes de lancement dépendent du système.

Le système d’exploitation gère le chargement, les entrées-sorties et le partage des ressources. Il évite qu’un programme s’attribue librement tout le matériel. Les protections de mémoire organisent notamment l’isolation entre processus, tandis que des mécanismes contrôlés autorisent des communications. Il ne faut donc pas interpréter isolé comme incapable d’échanger, ni programme en mémoire comme processus actuellement exécuté sur un cœur.

Exemple résolu

Deux exécutions du même lecteur audio sont lancées, chacune ouvrant un fichier différent. Le fichier du programme est unique. Combien de processus peut-on avoir et quelles données les distinguent ?

  1. Étape 1 : Le nombre de fichiers contenant les instructions n’est pas le nombre d’exécutions.
  2. Étape 2 : Le scénario indique deux instances de lecture indépendantes : on peut modéliser deux processus.
  3. Étape 3 : Chaque instance possède son contexte, notamment le fichier lu et sa position de lecture, ainsi qu’un identifiant propre.

Résultat : Le modèle comporte deux processus pour un même programme. Leur contexte et leurs données courantes permettent de distinguer les deux exécutions.

Piège à éviter : Compter seulement les fichiers exécutables confond un programme avec chacune de ses instances.

À toi d'essayer

Un processus possède encore son PID et ses données, mais attend une lecture sur disque. A-t-il cessé d’exister parce qu’il ne calcule pas actuellement ?

Voir la réponse

Non. Il existe toujours, mais son état est bloqué dans le modèle étudié. Il attend l’événement permettant de poursuivre.

2. Prêt, élu, bloqué

Un processus prêt dispose des conditions nécessaires pour être exécuté mais attend un accès au processeur. Un processus élu est actuellement exécuté sur un cœur. Un processus bloqué attend un événement ou une ressource, par exemple la fin d’une entrée-sortie. Lorsqu’une opération attendue se termine, il peut redevenir prêt. Il ne devient pas nécessairement immédiatement élu : d’autres processus peuvent aussi attendre le processeur.

Un processus élu peut être interrompu par le système, qui sauvegarde son contexte et en sélectionne un autre. Le premier redevient prêt s’il peut continuer. S’il demande une ressource indisponible, il devient bloqué. S’il termine son travail, il sort de l’exécution active ; le système récupère ses ressources selon ses règles. Le vocabulaire des outils réels peut détailler davantage ces états, notamment sous Unix.

Sur un seul cœur, plusieurs processus peuvent progresser pendant la même période grâce à l’alternance. Cela constitue une exécution concurrente. Un parallélisme matériel permet des exécutions réellement simultanées sur plusieurs unités de calcul. La concurrence existe aussi sur une machine multicœur : certains processus restent en attente et plusieurs exécutions partagent des ressources. La présence de plusieurs cœurs n’élimine donc pas les problèmes de coordination.

Pour observer un processus sur un système de type Unix, la commande ps peut afficher un instantané. Avec son identifiant numérique, ps -p PID -o pid,ppid,stat,comm demande le PID, l’identifiant du parent, un code d’état et le nom du programme. PID doit être remplacé par un identifiant réellement observé. Cette commande ne demande pas d’arrêter le programme. Les codes exacts sont décrits par la documentation de la version utilisée ; un instantané n’atteste pas l’activité de toute la journée.

3. Partager le temps du processeur

L’ordonnanceur choisit parmi les processus prêts celui qui utilisera le processeur. Il applique une politique pouvant prendre en compte des priorités, le temps déjà utilisé et les attentes. Dans un modèle de tourniquet, chaque processus prêt reçoit au maximum une tranche de temps appelée quantum, puis retourne en fin de file s’il n’a pas terminé et reste prêt. Un processus bloqué ne doit pas consommer son tour comme s’il pouvait calculer.

A demande 3 unités, B 2 et C 1. Tous sont prêts à la date 0, dans l’ordre A, B, C ; le tourniquet utilise un quantum de 2 unités.

Exemple résolu

A, B et C sont prêts à la date 0, dans cet ordre. Leurs besoins de calcul sont 3, 2 et 1 unités. Un seul cœur applique un tourniquet de quantum 2, sans coût de changement de contexte ni entrée-sortie. Retrouve les dates de fin.

  1. Étape 1 : A exécute deux unités entre 0 et 2 ; il lui reste une unité, et il retourne après B et C.
  2. Étape 2 : B utilise ses deux unités de 2 à 4, puis termine. C utilise une unité de 4 à 5, puis termine.
  3. Étape 3 : A reprend de 5 à 6 et termine. Les besoins cumulés valent bien 3 + 2 + 1 = 6 unités.

Résultat : B termine à 4, C à 5 et A à 6. A n’est pas terminé après sa première tranche.

Piège à éviter : Faire terminer A à la date 3 applique un autre ordonnancement et ne respecte pas le quantum annoncé.

Un quantum très court multiplie les changements de contexte ; un quantum long peut augmenter l’attente avant la prochaine reprise. Un tourniquet simple favorise le partage, mais ne garantit pas à lui seul toutes les propriétés de temps de réponse d’un système réel. Pour une simulation, la règle d’arrivée dans la file, les durées et les éventuels événements simultanés doivent être connus. Sinon plusieurs chronologies peuvent correspondre à des hypothèses différentes.

À toi d'essayer

Dans un système à un cœur, A est bloqué en attendant le réseau et B est prêt. Faut-il attendre la fin de l’opération réseau avant de faire travailler B ? Justifie.

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

4. Des ressources qui empêchent de progresser

Une ressource exclusive ne peut être attribuée qu’à un utilisateur à la fois dans notre modèle : un verrou ou un équipement indivisible en sont des exemples. Attendre une telle ressource est normal lorsque son détenteur peut finir puis la libérer. Un interblocage, ou deadlock, apparaît lorsque des processus restent enfermés dans une attente dont aucun des participants ne peut sortir selon les règles prévues. Ce n’est pas seulement une tâche lente.

Chaque ressource a un seul exemplaire. P1 conserve R1 et P2 conserve R2 ; chacun attend la ressource de l’autre.

Le scénario de la figure suffit à expliquer le blocage : P1 ne libérera R1 qu’après avoir obtenu R2, et P2 ne libérera R2 qu’après avoir obtenu R1. Chaque ressource est unique et personne ne peut la retirer de force à son détenteur dans ce modèle. Chacun attend donc une action que l’autre ne pourra pas effectuer. Accorder davantage de temps processeur ne rend aucune ressource disponible.

Pour raisonner, dessine des flèches de demande des processus vers les ressources attendues et des flèches d’attribution des ressources vers leurs détenteurs. Un cycle met en évidence la dépendance circulaire. La conclusion dépend toutefois des hypothèses : avec plusieurs exemplaires d’une ressource ou la possibilité d’une libération indépendante, un dessin cyclique ne suffit pas toujours à prouver un interblocage. On explicite ici un exemplaire et une attente conservant les ressources déjà détenues.

Exemple résolu

Deux processus utilisent une imprimante I et un scanner S exclusifs. P1 conserve I en attendant S ; P2 conserve S en attendant I. Propose une règle de prévention.

  1. Étape 1 : Les demandes croisées forment un cycle : P1 attend une ressource de P2 et réciproquement.
  2. Étape 2 : On peut imposer à tous les processus un ordre commun d’acquisition, par exemple I avant S.
  3. Étape 3 : P2 ne peut alors plus conserver S tout en demandant I : il doit obtenir I avant de prendre S. Le scénario circulaire décrit est empêché.

Résultat : Un ordre global identique d’acquisition prévient ce cycle si tous les participants le respectent. D’autres stratégies existent, mais leur efficacité dépend de leurs conditions.

Piège à éviter : Ajouter un second cœur ne change ni le détenteur de I ni celui de S, donc ne résout pas la dépendance.

À toi d'essayer

P1 attend une imprimante détenue par P2. P2 n’attend aucune ressource, poursuit un calcul fini puis libère l’imprimante. Un camarade annonce un interblocage parce qu’un processus attend. Contredis-le précisément.

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

5. Au bac : faire une trace et conclure

Au bac : décrire un état ou une attente

  1. Distingue le programme, ses instances et les ressources. Donne un état à chaque processus selon ce qu’il peut réellement faire.
  2. Pour une chronologie, note la file des prêts, le quantum et le travail restant après chaque tranche. Respecte les hypothèses de départ.
  3. Pour un blocage, indique qui détient chaque ressource, qui la demande et ce qui doit se produire avant sa libération.
  4. Conclus seulement après avoir vérifié les possibilités de progression. Une prévention doit casser la dépendance ou empêcher sa formation.
Attention :

Erreurs fréquentes : confondre prêt et bloqué ; croire qu’un PID prouve une utilisation actuelle du processeur ; considérer toute attente comme un interblocage ; invoquer un second cœur pour résoudre un cycle de ressources exclusives.

Vocabulaire

Contexte :
Informations nécessaires pour poursuivre une exécution au bon endroit.
Quantum :
Durée maximale d’une tranche de processeur dans le modèle de tourniquet.
Ordonnancement :
Choix et organisation des processus exécutés.
Interblocage :
Attente durable de participants dont les dépendances empêchent la progression.

Relier les besoins aux mécanismes

BesoinRéponse
Peut calculer mais attend le cœurPrêt
Exécute des instructions sur le cœurÉlu
Attend un événement ou une ressourceBloqué
Dépendances circulaires sans issue dans le modèleInterblocage

S’entraîner : consulte la rubrique Exercices du site. La prochaine leçon aborde un autre partage de ressources : le chemin des paquets entre les routeurs.

À retenir

  • Un programme peut avoir plusieurs processus associés.
  • Prêt signifie en attente du processeur ; bloqué signifie en attente d’un événement ou d’une ressource.
  • L’ordonnanceur sélectionne des processus prêts.
  • Un interblocage ne se résout pas par la seule accélération du processeur.

Fiche de révision

Une trace d’exécution conserve trois informations : temps courant, file des prêts et travail restant.

Un diagnostic d’interblocage reconstruit les détenteurs et les demandes avant de chercher un cycle.

Une attente isolée peut se terminer normalement ; rechercher ce que le détenteur peut encore faire.

Règle repère

un ordre commun d’acquisition peut empêcher certaines attentes circulaires.

Questions fréquentes

Un processus bloqué est-il un programme terminé ?

Non. Il conserve un contexte permettant une reprise lorsque l’événement attendu se produit.

Les processus avancent-ils toujours en même temps ?

Sur un seul cœur ils peuvent alterner ; plusieurs cœurs permettent du parallélisme, sans supprimer toutes les attentes.

Et maintenant ?

Tu as lu le cours. L’étape suivante tient en une action.

Relis le coursReprends l’essentiel avant de passer à la suite.

Prolonge l’expérience !

Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !

Ici, tu débloques aussi 2 corrections détaillées.

Parent ? Suivez les progrès de votre enfant.

Tous les cours de NSI