Adloun

NSI (terminale) · Chapitre 13 · Exercice d'entraînement

Le graphe d'attente

Systèmes d'exploitation et processus · Concurrence et interblocage · niveau 3 (difficile)

Énoncé

Le graphe d'attente. Un système possède quatre ressources , , , , chacune en un seul exemplaire. À un instant donné :

  • détient et demande ;
  • détient et demande ;
  • détient et demande ;
  • détient et demande .
  • Construire le graphe d'attente : un sommet par processus, et un arc lorsque attend une ressource détenue par .
  • Y a-t-il interblocage ? Quels processus sont bloqués pour toujours ? fait-il partie du cycle ?
  • Le système décide d'arrêter , ce qui libère . Montrer que tous les autres processus peuvent alors se terminer.
  • On représente la situation en Python par deux dictionnaires :

detient = {"R1": "P1", "R2": "P2", "R3": "P3", "R4": "P4"}
demande = {"P1": "R2", "P2": "R3", "P3": "R1", "P4": "R2"}

Écrire une fonction graphe_attente(detient, demande) qui renvoie le dictionnaire des arcs (chaque processus en attente est associé au processus qu'il attend), puis une fonction bloque_pour_toujours(attente, p) qui renvoie True si, en suivant les attentes depuis p, on retombe sur un processus déjà rencontré.

Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre