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.