Exercice 3 · Bac Numérique et Sciences Informatiques Polynésie 2023 (jour 2)

Thème : Architectures matérielles et systèmes d'exploitation · Tiré du sujet Jour 2 (2023)

Énoncé

EXERCICE 3 (4 points)

Cet exercice traite du thème architecture matérielle, et plus particulièrement des processus et leur ordonnancement.

1.

Avec la commande ps -aef on obtient l'affichage suivant:

On rappelle que:

PID = Identifiant d'un processus ( Process Identification)

PPID = Identifiant du processus parent d'un processus ( Parent Process Identification)

a.

Donner sous forme d'un arbre de PID la hiérarchie des processus liés à firefox.

b.

Indiquer la commande qui a lancé le premier processus de firefox.

c.

La commande kill permet de supprimer un processus à l'aide de son PID (par exemple kill 8600). Indiquer la commande qui permettra de supprimer tous les processus liés à firefox et uniquement cela.

2.

a.

Recopier et compléter le schéma ci-dessous avec les termes suivants concernant l'ordonnancement des processus: Élu, En attente, Prêt, Blocage, Déblocage, Mise en exécution.

On donne dans le tableau ci-dessous quatre processus qui doivent être exécutés par un processeur. Chaque processus a un instant d'arrivée et une durée, donnés en nombre de cycles du processeur.

Processus

P1

P2

P3

P4

Instant d'arrivée

0

2

3

7

Durée

8

6

2

2

Les processus sont placés dans une file d'attente en fonction de leur instant d'arrivée.

On se propose d'ordonnancer ces quatre processus avec la méthode suivante:

Parmi les processus présents en liste d'attente, l'ordonnanceur choisit celui dont la durée restante est la plus courte;

Le processeur exécute un cycle de ce processus puis l'ordonnanceur désigne de nouveau le processus dont la durée restante est la plus courte;

En cas d'égalité de temps restant entre plusieurs processus, celui choisi sera celui dont l'instant d'arrivée est le plus ancien;

Tout ceci jusqu'à épuisement des processus en liste d'attente.

On donne en exemple ci-dessous, l'ordonnancement des quatre processus de l'exemple précédent suivant l'algorithme ci-dessus.

On définit le temps d'exécution d'un processus comme la différence entre son instant de terminaison et son instant d'arrivée.

b.

Calculer la moyenne des temps d'exécution des quatre processus.

On se propose de modifier l'ordonnancement des processus. L'algorithme reste identique à celui présenté précédemment mais au lieu d'exécuter un seul cycle, le processeur exécutera à chaque fois deux cycles du processus choisi. En cas d'égalité de temps restant, l'ordonnanceur départagera toujours en fonction de l'instant d'arrivée.

c.

Recopier et compléter le schéma ci-dessous donnant le nouvel ordonnancement des quatre processus.

-

d.

Calculer la nouvelle moyenne des temps d'exécution des quatre processus et indiquer si cet ordonnancement est plus performant que le précédent.

3.

On se propose de programmer l'algorithme du premier ordonnanceur. Chaque processus sera représenté par une liste comportant autant d'éléments que de durées (en nombre de cycles). Pour simuler la date de création de chaque processus, on ajoutera en fin de liste de chaque processus autant de chaînes de caractères vides que la valeur de leur date de création.

p1 = ['1.8', '1.7', '1.6', '1.5', '1.4', '1.3', '1.2', '1.1']

p2 = ['2.6', '2.5', '2.4', '2.3', '2.2', '2.1', '', '']

p3 = ['3.2', '3.1', '', '', '']

p4 = ['4.2', '4.1', '', '', '', '', '', '', '']

liste_proc = [p1, p2, p3, p4]

La fonction choix_processus est chargée de sélectionner le processus dont le temps restant d'exécution est le plus court parmi les processus en liste d'attente.

a.

Recopier sans les commentaires et compléter la fonction choix_processus ci-dessous. Le code peut contenir plusieurs lignes.

def choix_processus(liste_attente):

if liste_attente != []:

mini = len(liste_attente[0])

indice = 0

return indice

b.

Une fonction scrutation (non étudiée) est chargée de parcourir la liste liste_proc de tous les processus et de renvoyer la liste d'attente des processus en fonction de leur arrivée. À chaque exécution de scrutation, les processus présents (sans chaînes de caractères vides en fin de liste) sont ajoutés à la liste d'attente. La fonction supprime pour les autres un élément de chaîne de caractères vides.

Recopier et compléter les différentes instructions de la fonction ordonnancement pour réaliser le fonctionnement désiré.

def ordonnancement(liste_proc):

execution = []

attente = scrutation(liste_proc, [])

while attente != []:

indice = choix_processus(attente)

attente = scrutation(liste_proc, attente)

return execution

Énoncé: Exercice 3 · Bac Numérique et Sciences Informatiques Polynésie 2023 (jour 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1.a. Donner sous forme d'un arbre de PID la hiérarchie des processus liés à firefox.

Réponse : 8887 (bash) -> 9617 (firefox) -> {9657, 9697, 9750, 9794 -> 9795}

1.b. Indiquer la commande qui a lancé le premier processus de firefox.

Réponse : bash / /usr/lib/firefox/firefox

1.c. Indiquer la commande qui permettra de supprimer tous les processus liés à firefox et uniquement cela.

Réponse : kill 9617

2.a. État 1 (ovale en haut à gauche)

Réponse : Prêt

2.a. Transition 1 (flèche vers la droite)

Réponse : Mise en exécution

2.a. État 2 (ovale en haut à droite)

Réponse : Élu

2.a. Transition 2 (flèche vers le bas)

Réponse : Blocage

2.a. État 3 (ovale en bas)

Réponse : En attente

2.a. Transition 3 (flèche vers la gauche)

Réponse : Déblocage

2.b. Calculer la moyenne des temps d'exécution des quatre processus.

Réponse : 8

2.c. Cycle 0-1

Réponse : P1

2.c. Cycle 1-2

Réponse : P1

2.c. Cycle 2-3

Réponse : P1

2.c. Cycle 3-4

Réponse : P1

2.c. Cycle 4-5

Réponse : P3

2.c. Cycle 5-6

Réponse : P3

2.c. Cycle 6-7

Réponse : P1

Les réponses des 16 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

‹ Exercice 2 - Question 1 · Polynésie 2023 (jour 1) · Exercice 2 · Polynésie 2022 (jour 1) ›

Plus d’exercices d’Architectures matérielles et systèmes d'exploitation