QCM : Architecture des systèmes (11 questions)

Questions et réponses du QCM

1. Sur un serveur monoprocesseur qui doit traiter plusieurs requêtes pendant que des opérations d’entrée-sortie sont en cours, quel intérêt les processus concurrents apportent-ils ?

Ils répartissent nécessairement les sous-calculs entre plusieurs machines.
Ils améliorent l’utilisation de la machine et permettent de chevaucher calcul et entrées-sorties.
Ils servent à traiter les événements externes sans chevaucher calcul et entrées-sorties.
Ils augmentent le nombre de processeurs disponibles pour les calculs simultanés.

Ils améliorent l’utilisation de la machine et permettent de chevaucher calcul et entrées-sorties.

Explication

Les processus concurrents peuvent mieux utiliser une machine monoprocesseur et faire se dérouler en parallèle calcul et entrées-sorties. L’ajout de processeurs et la répartition entre machines relèvent d’autres configurations, tandis que le traitement d’événements externes n’épuise pas leurs usages.

2. Dans une commande shell, quelle différence s’applique entre `rapport ; statistiques` et `rapport | statistiques` ?

Le point-virgule enchaîne les commandes indépendamment, tandis que le tube transmet une sortie à l’entrée suivante.
Le point-virgule transmet chaque sortie à l’entrée suivante, tandis que le tube relie les commandes sans transmission.
Le point-virgule arrête la suite après une erreur, tandis que le tube exécute les commandes indépendamment.
Le point-virgule transmet la sortie à l’entrée suivante, tandis que le tube enchaîne les commandes indépendamment.

Le point-virgule enchaîne les commandes indépendamment, tandis que le tube transmet une sortie à l’entrée suivante.

Explication

Le point-virgule fait exécuter les commandes en chaîne sans qu’une erreur de l’une affecte les suivantes; le tube transmet la sortie d’une commande à l’entrée de la suivante. Confondre ces deux rôles inverse leur fonction, et l’idée d’arrêt après erreur ne correspond pas au point-virgule.

3. Une personne lance `ps` sans option depuis un terminal et veut savoir quels processus cette commande affiche. Quel ensemble doit-elle s’attendre à voir ?

Les processus appartenant à l’utilisateur qui lance la commande.
Les processus appartenant au groupe du terminal qui lance la commande.
Les processus de tous les terminaux présents sur la machine.
Les processus associés au terminal depuis lequel la commande est lancée.

Les processus associés au terminal depuis lequel la commande est lancée.

Explication

Sans option, `ps` affiche les processus associés au terminal depuis lequel il est lancé. L’affichage de tous les terminaux, ou une sélection par utilisateur ou groupe, ne décrit pas cette portée.

4. En examinant la colonne d’état d’une sortie de `ps`, une analyste voit la lettre Z pour un processus. Quel état cette lettre désigne-t-elle ?

Terminé en zombie.
Stoppé.
Endormi.
Actif.

Terminé en zombie.

Explication

Dans la colonne d’état de `ps`, Z indique un processus terminé en zombie. T désigne un processus stoppé, S un processus endormi et R un processus actif.

5. Dans l’image mémoire d’un processus, quelle zone sert à l’allocation dynamique de variables ?

La pile, qui contient notamment les variables locales et les adresses de retour
La zone Data+BSS, qui contient les constantes et les variables initialisées ou non initialisées
Le tas, réservé à l’allocation dynamique de variables
La zone code, qui contient les fonctions en lecture seule

Le tas, réservé à l’allocation dynamique de variables

Explication

Le tas sert à allouer dynamiquement des variables au cours de l’exécution du processus. La pile contient plutôt les variables locales, les paramètres et les adresses de retour des fonctions.

6. Après un appel réussi à `fork()`, quelle valeur de retour reçoit le processus père ?

La valeur 0, comme le processus fils
Le PID du processus père lui-même
La valeur -1, qui signale une duplication réussie
Le PID du processus fils créé

Le PID du processus fils créé

Explication

Le processus père reçoit comme valeur de retour le PID du fils, tandis que le fils reçoit 0. La valeur -1 indique un échec de `fork()`, et non une duplication réussie.

7. Quel est le rôle de `wait()` et de `waitpid()` dans la gestion des processus fils ?

Envoyer un signal au fils afin de provoquer sa terminaison immédiate
Créer un nouveau processus fils en dupliquant le processus appelant
Remplacer l’image mémoire du fils par un programme chargé depuis un fichier binaire
Suspendre le processus appelant jusqu’à la terminaison d’un fils et récupérer les informations sur celle-ci

Suspendre le processus appelant jusqu’à la terminaison d’un fils et récupérer les informations sur celle-ci

Explication

Ces fonctions attendent la terminaison d’un processus fils et permettent au père d’en récupérer les informations. Contrairement à l’idée de remplacer son image mémoire, cette opération relève des primitives `exec`.

8. En quoi les paramètres `argc` et `envp` diffèrent-ils dans la fonction `main` ?

`argc` désigne le nom de l’exécutable, tandis que `envp` contient les paramètres de la ligne de commande sous forme de chaînes.
`argc` fournit les variables d’environnement sous forme de chaînes, tandis que `envp` compte les paramètres de la ligne de commande.
`argc` contient les paramètres sous forme de chaînes, tandis que `envp` indique le nombre de paramètres de la ligne de commande.
`argc` compte les paramètres de la ligne de commande, tandis que `envp` fournit les variables d’environnement sous forme de chaînes variable=valeur.

`argc` compte les paramètres de la ligne de commande, tandis que `envp` fournit les variables d’environnement sous forme de chaînes variable=valeur.

Explication

`argc` indique le nombre de paramètres de la ligne de commande, nom de l’exécutable compris, alors que `envp` contient les variables d’environnement sous la forme variable=valeur. À la différence de `argc`, `envp` ne sert donc pas à compter les paramètres de la ligne de commande.

9. Quelle différence distingue les primitives `execv` et `execl` dans la transmission des paramètres au nouveau programme ?

`execv` reçoit les paramètres sous forme de liste terminée par NULL, tandis que `execl` les reçoit dans un tableau.
`execv` transmet l’environnement dans un tableau, tandis que `execl` transmet le chemin du fichier binaire.
`execv` crée un nouveau processus pour transmettre les paramètres, tandis que `execl` remplace le processus appelant.
`execv` reçoit les paramètres dans un tableau, tandis que `execl` les reçoit sous forme de liste terminée par NULL.

`execv` reçoit les paramètres dans un tableau, tandis que `execl` les reçoit sous forme de liste terminée par NULL.

Explication

`execv` utilise un tableau de paramètres, alors que `execl` reçoit les arguments successivement jusqu’à la valeur NULL. La distinction ne porte pas sur la création d’un nouveau processus : les primitives `exec` chargent un autre programme à la place du processus existant.

10. Quel effet a un code de retour différent de 0 à la fin d’un processus ?

Il montre que le processus a été interrompu par un signal du shell.
Il indique que le processus a transmis sa sortie à une autre commande.
Il confirme que le processus s’est terminé normalement après ses tâches.
Il signale un comportement anormal pendant l’exécution ou à la terminaison.

Il signale un comportement anormal pendant l’exécution ou à la terminaison.

Explication

Un code de retour différent de 0 signale un comportement anormal en cours d’exécution ou à la terminaison. À l’inverse, le code 0 indique une fin normale, et ne renseigne pas sur une transmission par tube.

11. Dans une sortie de `ps`, une administratrice veut identifier l’identifiant du processus père d’un processus donné. Quelle colonne doit-elle consulter ?

PID, qui indique l’identifiant propre du processus
SID, qui indique l’identifiant de la session du processus
PPID, qui indique l’identifiant du processus père
PGID, qui indique l’identifiant du groupe du processus

PPID, qui indique l’identifiant du processus père

Explication

La colonne PPID contient l’identifiant du processus père, ce qui permet de retrouver sa filiation. PGID concerne le groupe de processus, tandis que PID identifie le processus lui-même.

Révisez avec les flashcards

Mémorisez les réponses avec 10 flashcards sur Architecture des systèmes.

À quoi servent les processus concurrents sur une machine monoprocesseur ?

À améliorer l’utilisation de la machine.

Qu’est-ce qu’un processus ?

Une instance d’un programme en exécution, associée à des données et à un BCP.

Qu’affiche la commande ps sans option ?

Les processus associés au terminal depuis lequel elle est lancée.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Architecture des systèmes.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM