Projet DVD-MIAGE 2010 – Test n°2
Processus, signaux, ordonnancement, mémoire, disques
Exercice 1 – Processus
Voici un programme en C :
int main () {int i, x, f;x = 1;for (i = 0; i < 3; i++) {f = fork ();if (f == 0) {x = x * 2;printf ("pid %d : %d\n", getpid(), x);}}return 0;}Combien de lignes seront imprimées lors de l’exécution de ce programme ? Indiquez une des suites possibles. Par exemple : pid 500 : 2.
Exercice 2 – Signaux
Voici un programme en C :
int main (void) {if (fork())wait (NULL);printf ("[%d] fini\n", getpid());return 0;}1) Explication du fonctionnement du programme
Ce programme utilise la fonction fork() pour créer un processus fils. Le processus père attend la fin du fils avec wait(NULL) avant d’afficher son message. Le fils, quant à lui, affiche son message immédiatement après son exécution.
2) Réécriture du programme sans wait()
Voici une solution alternative utilisant pause() et un gestionnaire de signaux :
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <signal.h>void gestionnaire (int sig) {if (sig == SIGCHLD)printf ("[%d] fini\n", getpid());elseexit(1);}int main (void) {signal(SIGCHLD, gestionnaire);if (fork())pause();elseprintf ("[%d] fini\n", getpid());return 0;}Exercice 3 – Ordonnancement
Soit trois processus avec les données suivantes :
| Processus | Durée de traitement | Échéance |
|---|---|---|
| P1 | 4 | 5 |
| P2 | 5 | 12 |
| P3 | 2 | 7 |
1) Politique Round-Robin avec un quantum de 1 unité de temps
Les échéances ne sont pas respectées.
2) Politique SJF non préemptif
Les échéances ne sont pas respectées.
3) Ordonnancement à priorités fixes
Pour respecter les échéances, attribuez les priorités suivantes : P3 (priorité 1), P1 (priorité 2), P2 (priorité 3). Le nouvel ordonnancement est : P3, P1, P2.
Exercice 4 – Mémoire
Un processus accède aux pages suivantes sur un système avec 3 cadres (0 à 2) et 8 pages (0 à 7) :
2, 1, 0, 7, 1, 6, 1, 5, 7, 6, 2, 6, 7, 0, 7, 1, 0, 2, 1, 7.
1) Algorithme OPT (algorithme de Belady)
À compléter avec un schéma des défauts de page et des pages victimes.
2) Algorithme FIFO
À compléter avec un schéma des défauts de page et des pages victimes.
3) Algorithme LRU
À compléter avec un schéma des défauts de page et des pages victimes.
Exercice 5 – Disques
Un disque dur possède 128 pistes (0 à 127). La tête de lecture/écriture se trouve sur la piste 15, après être venue de la piste 29. Les requêtes d’accès sont : 100, 30, 27, 55, 16, 122, 44, 63, 56.
1) Algorithme FIFO
Déplacement total de la tête : À calculer.
2) Algorithme SSTF
Déplacement total de la tête : À calculer.
FAQ
1. Que signifie "défaut de page" dans le contexte de la mémoire virtuelle ?
Un défaut de page survient lorsqu’un processus tente d’accéder à une page qui n’est pas présente dans la mémoire physique (cadres) et doit être chargée depuis le disque dur.
2. Comment fonctionne l’algorithme SJF non préemptif ?
SJF (Shortest Job First) non préemptif exécute le processus ayant la durée de traitement la plus courte disponible dans la file d’attente, sans interrompre son exécution.
3. Pourquoi l’ordonnancement à priorités peut-il ne pas respecter les échéances ?
Si les priorités ne sont pas attribuées de manière optimale (par exemple, un processus à faible priorité mais long à exécuter), certaines échéances peuvent être dépassées.