Correction detaillee - TD n°1 : Processus
1. Interruptions et multiprogrammation
Les interruptions permettent au systeme d'exploitation de recuperer le controle du processeur,
meme lorsqu'un processus est en cours d'execution. Cela est fondamental pour la
multiprogrammation, car le systeme
peut ainsi suspendre temporairement un processus (par exemple lors d'une E/S) et en executer un
autre.
Elles facilitent l'alternance entre plusieurs processus et assurent une meilleure utilisation du
processeur.
2. Execution sur differents processeurs
Oui, un processus peut alterner entre differents processeurs sur un systeme multiprocesseur.
Cette capacite repose sur le mecanisme de commutation de contexte, qui sauvegarde/restaure l'etat
d'un processus.
Toutefois, cela peut engendrer des frais en performance (notamment a cause du cache).
3. Ordonnancement Round-Robin
Processus : P1(0,4), P2(1,2), P3(3,4), P4(5,2), Quantum = 2.
Le Round-Robin distribue equitablement le temps entre processus.
Chronogramme :
02: P1 | 24: P2 | 45: P1 | 57: P3 | 78: P1 | 89: P4 | 910: P1 | 1011: P3 | 1112: P4 | 1213: P3
TR (temps de reponse) = fin - arrivee :
P1: 10, P2: 3, P3: 10, P4: 7 -> Moyenne: 7.5
Commentaire : Ce mode est juste mais penalise les longs processus en termes de reponse.
4. Ordonnancement par priorites avec preemption
Priorites (plus petit = plus prioritaire) : P1:4, P2:1, P3:3, P4:2
Chronogramme : 01: P1 | 13: P2 | 35: P4 | 59: P3 | 912: P1
TR : P1:12, P2:2, P3:6, P4:0 -> Moyenne: 5
Commentaire : Favorise les courts processus prioritaires. P1 est fortement retarde.
5. Acces a une ressource partagee
Un processus en attente d'une ressource partagee est bloque (etat de 'wait'). Lorsqu'il recoit la
ressource (via signal du semaphore), il reprend son execution.
Cela garantit l'exclusion mutuelle et evite les conflits d'acces concurrent.
6. Ordonnancement avec exclusion mutuelle
P3 et P4 entrent en section critique apres 1 unite de temps. Le systeme gere leur acces via
semaphores.
Chronogramme : 01: P2 | 12: P4 | 24: P4 | 45: P3 | 58: P3 | 812: P1
TR : P1:12, P2:1, P3:5, P4:3 -> Moyenne: 5.25
Commentaire : Les sections critiques peuvent retarder d'autres processus, mais l'acces est controle.
7. Execution de fork()
Code : 3 appels a fork. Cela produit 8 processus au total.
Nombre de messages affiches : fork 1 -> 4 fois ; fork 2 -> 6 fois.
L'ordre depend de la planification du systeme.
Commentaire : L'appel fork() duplique le processus courant. Chaque fork() double le nombre de
processus actifs.
8. Exercice wait()
Le pere cree un fils, puis attend sa fin via wait(). Le fils dort 4s puis termine avec exit(2).
Si le fils termine avant que le pere appelle wait(), il devient un processus zombie (en memoire)
jusqu'a ce que le pere le recupere.
Commentaire : L'usage de wait() evite les zombies. Toujours synchroniser les processus crees.