0% ont trouvé ce document utile (0 vote)
24 vues4 pages

Concepts de Processus et Ordonnancement OS

Le document présente des questions et exercices sur les processus dans un système d'exploitation, y compris des définitions, des états de processus, et des algorithmes d'ordonnancement. Il inclut également des programmes en C illustrant la redirection de la sortie standard et l'utilisation de tubes anonymes. Enfin, il aborde l'ordonnancement basé sur la priorité et les dynamiques de priorité recalculées.

Transféré par

Alaa Belhadj
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues4 pages

Concepts de Processus et Ordonnancement OS

Le document présente des questions et exercices sur les processus dans un système d'exploitation, y compris des définitions, des états de processus, et des algorithmes d'ordonnancement. Il inclut également des programmes en C illustrant la redirection de la sortie standard et l'utilisation de tubes anonymes. Enfin, il aborde l'ordonnancement basé sur la priorité et les dynamiques de priorité recalculées.

Transféré par

Alaa Belhadj
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Correction Examen2

Questions de cours : (3 pts)


1. Qu’est-ce qu’un PCB ? (0.25 pt)
Réponse : Le Process Control Block (PCB) est une structure de données utilisée par
le système d'exploitation pour stocker les informations relatives à un processus (PID,
état, registres, ressources, etc.).
2. Quels sont les différents états d’un processus et leurs transitions ? (0.5 pt)
Réponse :
o Nouveau (New) → Prêt (Ready) : Le processus est créé.
o Prêt (Ready) → Exécution (Running) : L'ordonnanceur sélectionne le
processus.
o Exécution (Running) → Bloqué (Blocked/Waiting) : Le processus attend
une ressource (E/S, mutex, etc.).
o Exécution (Running) → Prêt (Ready) : Le processus est préempté par un
autre processus plus prioritaire.
o Exécution (Running) → Terminé (Terminated) : Le processus se termine et
libère ses ressources.
3. Critères pour juger l’efficacité d’un algorithme d’ordonnancement ? (0.5 pt)
Réponse :
o Temps de réponse (temps écoulé entre la soumission et la première
exécution).
o Temps de retour (temps total depuis la soumission jusqu'à la fin).
o Temps d’attente (temps total passé en file d’attente).
o Débit (Throughput) (nombre de processus terminés par unité de temps).
4. Qu'appelle-t-on un processus qui s'est terminé mais dont le père n'a pas encore
lu son code de retour ? (0.25 pt)
Réponse : Un processus zombie.
5. Que signifie préempter un processus ? (0.5 pt)
Réponse : A. Suspendre son exécution au profit d’un autre processus.
6. Qu’est-ce qu’un processus au sens d’un OS ? (0.5 pt)
Réponse : C. L’instance d’un programme en cours d’exécution.
7. Quel est le rôle d’un ordonnanceur au sein d’un OS ? (0.5 pt)
Réponse : D. Ordonnancer les processus à exécuter selon un ou des critères.

Exercice 1 : (8 pts)
1. Programme en C utilisant dup2 pour rediriger la sortie standard vers un
fichier [Link] (3.5 pts)

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
int file_desc = open("[Link]", O_WRONLY | O_CREAT | O_TRUNC,
0644);
if (file_desc < 0) {
perror("Erreur lors de l'ouverture du fichier");
return 1;
}

dup2(file_desc, STDOUT_FILENO); // Rediriger stdout vers [Link]


close(file_desc); // On peut fermer file_desc après duplication

printf("Ce message sera écrit dans [Link]\n");

return 0;
}

2. Programme avec un tube anonyme et deux écrivains (4.5 pts)

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main() {
int fd[2];
pipe(fd);
pid_t pid1, pid2;

if ((pid1 = fork()) == 0) {
close(fd[0]);
for (int i = 1; i <= 5; i++) write(fd[1], &i, sizeof(int));
close(fd[1]);
return 0;
}

if ((pid2 = fork()) == 0) {
close(fd[0]);
for (int i = 6; i <= 10; i++) write(fd[1], &i, sizeof(int));
close(fd[1]);
return 0;
}

close(fd[1]);
int sum = 0, num;
while (read(fd[0], &num, sizeof(int)) > 0) sum += num;
close(fd[0]);

printf("Somme totale : %d\n", sum);


wait(NULL);
wait(NULL);

return 0;
}

Résultat attendu : Somme totale : 55


Exercice 2 : (4 pts)
1. Résultat d'exécution du Code 1 (2 pts)

int main() {
pid_t pid;
int value = 9;
if (fork() == 0) { // Processus fils
value += 10;
return 0;
} else {
wait(NULL); // Attente de la fin du fils
printf("value = %d\n", value);
}
return 0;
}

Analyse :

o Le processus fils incrémente value mais dans son propre espace mémoire.
o Le père ne voit pas cette modification et affiche value = 9.
Sortie : value = 9

2. Objectif du Code 2 (2 pts)

int main() {
pid_t pid;
int status;
pid = fork();

if (pid == 0) {
printf("Je suis le processus fils (PID: %d)\n", getpid());
execlp("python3", "python3", "[Link]", NULL);
perror("exec");
return 1;
} else {
printf("Je suis le processus parent (PID: %d)\n", getpid());
waitpid(pid, &status, 0);
return 0;
}
}

o Processus fils : Exécute [Link] en remplaçant son image mémoire.


o Processus père : Attend la fin du fils.
o Si exec échoue, le message perror("exec") s'affiche.

Exercice 3 : (5 pts)
1. Ordonnancement basé sur la priorité préemptive (2.5 pts)
Processus Arrivée Temps CPU Priorité
P1 07:00 10 min 2
P2 07:00 15 min 3
P3 07:03 8 min 4
P4 07:10 18 min 5

 Priorité croissante (5 = plus prioritaire).


 P4 interrompt les autres dès son arrivée.

Diagramme de Gantt :

| P1 | P2 | P3 | P4 | P2 | P1 |
0 7 10 18 36 44 52

2. Priorité dynamique recalculée toutes les 5 min (2.5 pts)

 Nouvelle priorité : Dépend du temps d'attente.


 Si égalité, priorité au processus en attente depuis plus longtemps.

Diagramme de Gantt avec recalcul des priorités :

| P1 | P3 | P4 | P2 | P1 |
0 7 15 33 43 52

Vous aimerez peut-être aussi