<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Terminale/Processus et système</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Approfondissement de la gestion des processus par<br/>
un système d'exploitation : notion de processus,<br/>
états, ordonnancement, communication entre<br/>
processus, synchronisation par verrous, risque<br/>
d'interblocage et notion de signal. Composants<br/>
intégrés d'un système sur puce et avantages de<br/>
leur intégration en vitesse et en consommation.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q01 : Notion de processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'est-ce qu'un <strong>processus</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Il faut bien distinguer la notion de<br/>
<strong>programme</strong> (un fichier exécutable<br/>
sur le disque) et celle de <strong>processus</strong><br/>
(une instance dynamique de ce programme<br/>
en cours d'exécution). Sous Linux, les<br/>
commandes ps ou top permettent<br/>
d'observer les processus actifs ; sous<br/>
Windows, on utilise le Gestionnaire des<br/>
tâches.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le fichier exécutable rangé sur le disque, tel qu'il existe avant son lancement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette description correspond plutôt<br/>
à un <strong>programme</strong> au sens du<br/>
fichier exécutable. Un processus<br/>
est, lui, dynamique : il représente<br/>
un programme <strong>en cours d'exécution</strong>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une fonction particulière définie à l'intérieur d'un programme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une fonction n'est qu'un fragment<br/>
de code à l'intérieur d'un<br/>
programme. Un processus est une<br/>
notion bien plus large, qui<br/>
englobe l'intégralité d'un<br/>
programme en exécution.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un programme en cours d'exécution, avec sa mémoire et son contexte propres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est une abstraction centrale du<br/>
système d'exploitation. Un même<br/>
programme lancé deux fois donne<br/>
deux processus indépendants, qui<br/>
disposent chacun de leur propre<br/>
mémoire et de leur propre contexte<br/>
d'exécution.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une zone particulière de la mémoire vive réservée par le noyau</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un processus utilise de la mémoire<br/>
(sa zone de mémoire), mais il<br/>
n'est pas lui-même un type de<br/>
mémoire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q02 : Impression de simultanéité sur un seul cœur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur un ordinateur dont le processeur n'a qu'<strong>un seul cœur</strong>, un élève écoute de la musique tout en tapant un texte : les deux programmes semblent s'exécuter en même temps. Comment est-ce possible ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur un seul cœur, un seul processus est élu à chaque instant. L'ordonnanceur du système d'exploitation fait alterner les processus prêts en leur attribuant tour à tour le processeur pendant de très courtes durées, ce qui donne l'illusion d'une exécution simultanée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La carte son exécute le lecteur de musique à la place du processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la carte son se contente de transformer les données reçues en signal sonore. Le programme de lecture, lui, est bien exécuté par le processeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le cœur exécute les deux programmes exactement au même instant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un cœur n'exécute qu'une instruction à la fois, donc un seul processus à un instant donné. La simultanéité n'est ici qu'apparente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le système fusionne les deux programmes en un seul processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque programme lancé donne son propre processus, avec son propre PID. Le système ne mélange pas deux programmes en un seul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>L'ordonnanceur alterne très rapidement entre les deux processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'ordonnanceur donne le processeur à chaque processus pendant une très courte durée, puis passe à un autre. Ces alternances, des centaines de fois par seconde, sont imperceptibles pour l'utilisateur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q03 : Identifiant de processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que désigne le <strong>PID</strong> d'un processus ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur les systèmes Unix, la commande ps affiche les processus en cours avec leur PID, et la commande kill &lt;PID&gt; demande au système de terminer le processus désigné par ce numéro.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un numéro unique attribué par le système à chaque processus pour l'identifier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le PID, pour <em>Process IDentifier</em>,<br/>
permet d'identifier les processus<br/>
de manière unique. On l'utilise<br/>
par exemple avec la commande<br/>
kill &lt;PID&gt;. Sur les systèmes<br/>
Unix, le numéro 1 est<br/>
traditionnellement attribué au<br/>
processus de démarrage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le descripteur des permissions et des droits d'accès d'un processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les permissions et le PID sont des<br/>
notions distinctes. Le PID<br/>
identifie un processus ; les<br/>
permissions définissent ce que ce<br/>
processus peut faire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un nom de domaine personnel réservé sur Internet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucun rapport avec les domaines<br/>
Internet. Le PID est un numéro<br/>
interne au système d'exploitation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un module interne du noyau spécialement chargé de créer et de gérer les processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette interprétation est<br/>
fantaisiste. Le sigle PID désigne<br/>
simplement un identifiant<br/>
numérique unique attribué par le<br/>
système.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q04 : États d'un processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quels sont les <strong>états principaux</strong> par<br/>
lesquels passe un processus au cours de<br/>
sa vie ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sous Linux, la commande ps -aux<br/>
affiche l'état de chaque processus :<br/>
R pour <em>running</em> (prêt ou en<br/>
exécution), S pour <em>sleeping</em> (bloqué<br/>
en attente d'un événement), D pour<br/>
<em>disk wait</em> (bloqué en attente<br/>
d'entrée-sortie disque).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ouvert, modifié, puis enregistré et fermé par l'utilisateur du logiciel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ce sont les états d'un <strong>fichier</strong><br/>
que l'on édite, pas ceux d'un<br/>
processus géré par l'ordonnanceur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Démarré, en exécution et terminé, sans état d'attente intermédiaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ces états ne suffisent pas à<br/>
décrire le cycle de vie d'un<br/>
processus : il manque l'état<br/>
<strong>bloqué</strong>, où le processus attend<br/>
une ressource ou une entrée-sortie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Prêt, en exécution, bloqué en attente d'une ressource, puis terminé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est le modèle classique en<br/>
système d'exploitation.<br/>
L'ordonnanceur gère les<br/>
transitions entre l'état « prêt »<br/>
et l'état « en exécution ».<br/>
L'état « bloqué » correspond à<br/>
l'attente d'une ressource (un<br/>
fichier, le réseau, un verrou).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Compilé, chargé en mémoire, puis exécuté par le processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ce sont les étapes de fabrication<br/>
et de chargement d'un programme,<br/>
pas les états d'ordonnancement d'un<br/>
processus en cours de vie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q05 : Ordonnanceur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel composant choisit <strong>quel processus</strong><br/>
reçoit le processeur à chaque instant ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Plusieurs stratégies d'ordonnancement<br/>
existent : le tour de rôle, la<br/>
priorité statique ou dynamique, ou<br/>
encore l'ordonnancement fondé sur la<br/>
latence. Pour les systèmes<br/>
d'exploitation à contraintes temps<br/>
réel, il faut des garanties strictes<br/>
sur les délais d'exécution.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>L'ordonnanceur, un composant du noyau du système</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'ordonnanceur décide selon plusieurs critères : la priorité du processus, l'équité entre les processus, le temps d'attente de chacun.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le pilote du processeur, qui dialogue avec le matériel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un pilote est un module qui<br/>
permet au système de communiquer<br/>
avec un périphérique matériel<br/>
(carte réseau, imprimante, etc.).<br/>
Ce n'est pas son rôle de choisir<br/>
quel processus s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'interpréteur de commandes, qui lance les programmes depuis le terminal</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'interpréteur de commandes sert<br/>
à lancer des programmes, mais ce<br/>
n'est pas lui qui décide à quel<br/>
moment chaque processus reçoit le<br/>
processeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'utilisateur, qui fixe l'ordre d'exécution à chaque instant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'utilisateur peut influencer<br/>
indirectement l'ordonnancement<br/>
(en modifiant la priorité d'un<br/>
processus, par exemple), mais il<br/>
ne décide pas à chaque instant<br/>
quel processus reçoit le<br/>
processeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q06 : Processus élus sur un processeur à quatre cœurs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une machine possède un processeur à <strong>quatre cœurs</strong>. Dix processus y sont en cours, et aucun n'est bloqué. Combien de ces processus peuvent, au plus, être dans l'état <strong>élu</strong> au même instant ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un processus élu est un processus qui dispose d'un cœur du processeur. Le nombre de processus élus simultanément est donc limité par le nombre de cœurs ; les autres processus non bloqués sont prêts et attendent que l'ordonnanceur les élise.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 6 est le nombre de processus qui restent en attente lorsque les quatre cœurs sont occupés. Ces processus-là sont prêts, pas élus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul processus élu à la fois, c'est le cas d'un processeur à un seul cœur. Ici chacun des quatre cœurs peut exécuter un processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque cœur exécute un processus à la fois, donc au plus quatre processus sont élus simultanément. Les six autres sont prêts et attendent leur tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour que les dix processus soient élus en même temps, il faudrait dix cœurs. Avec quatre cœurs, l'ordonnanceur fait alterner les dix processus.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q07 : Lancement d'un programme enregistré</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un utilisateur lance un programme enregistré sur le disque de son ordinateur. Que fait alors le système d'exploitation ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un programme est un fichier stocké en mémoire de masse. Pour l'exécuter, le système d'exploitation le charge en mémoire vive et crée un processus, identifié par un PID, qui entre dans l'état prêt en attendant d'être élu par l'ordonnanceur.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il exécute le programme directement sur le disque, sans le copier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le processeur n'exécute pas les instructions depuis le disque, beaucoup trop lent. Le programme est d'abord chargé en mémoire vive.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il transforme le fichier en processus, qui disparaît alors du disque</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le fichier reste intact sur le disque. On peut d'ailleurs lancer le même programme plusieurs fois, ce qui crée plusieurs processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il attend que l'utilisateur attribue un numéro de PID au programme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le PID est attribué automatiquement par le système au moment de la création du processus ; l'utilisateur n'a pas à le choisir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il charge le programme en mémoire vive et crée un processus pour l'exécuter</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le système copie le programme depuis la mémoire de masse vers la mémoire vive, puis crée un processus, doté d'un PID, que l'ordonnanceur pourra élire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q08 : Suivre les processus en direct</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un élève veut surveiller en direct, avec un affichage rafraîchi toutes les quelques secondes, les processus qui consomment le plus de temps processeur sur sa machine Linux. Quelle commande utiliser ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>ps donne une photographie des processus à un instant donné, tandis que top en donne un suivi continu. Sous Windows, le gestionnaire des tâches joue un rôle comparable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>kill</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : kill n'affiche rien, elle demande l'arrêt d'un processus désigné par son PID.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>ls</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ls liste les fichiers d'un répertoire, pas les processus en cours d'exécution.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>top</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : top affiche les processus en cours et met la liste à jour régulièrement, en classant par défaut les processus selon leur consommation de processeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>ps</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ps affiche bien la liste des processus, mais une seule fois, au moment où on la lance. Pour suivre l'évolution, il faudrait la relancer sans cesse.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q09 : Lister les processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande Unix affiche la <strong>liste des processus</strong> en cours d'exécution ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sous Windows, on peut utiliser le<br/>
Gestionnaire des tâches<br/>
(taskmgr.exe) ou la commande<br/>
PowerShell Get-Process. Quel<br/>
que soit le système d'exploitation,<br/>
la liste des processus est<br/>
maintenue par le noyau.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>grep, qui recherche un motif dans un texte</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande grep sert à<br/>
rechercher un motif dans un<br/>
texte, mais pas à lister les<br/>
processus en cours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>ps, ou top pour un suivi en temps réel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>On utilise par exemple ps aux<br/>
ou ps -ef pour obtenir la<br/>
liste complète des processus.<br/>
Pour un suivi interactif et<br/>
dynamique, on emploie plutôt<br/>
top ou htop.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>ls, qui liste le contenu d'un répertoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande ls sert à lister<br/>
le contenu d'un répertoire,<br/>
c'est-à-dire les fichiers, pas<br/>
les processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>cat, qui affiche le contenu d'un fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande cat sert à<br/>
afficher le contenu d'un<br/>
fichier, et n'a aucun rapport<br/>
avec la liste des processus.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q10 : Fin d'une lecture sur disque</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un processus est dans l'état <strong>bloqué</strong> : il attend la fin d'une lecture sur disque. La lecture se termine. Dans quel état passe alors ce processus ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un processus bloqué ne revient jamais directement à l'état élu. La fin de l'attente le fait passer à l'état prêt, et seul l'ordonnanceur peut ensuite le faire passer de prêt à élu.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il passe à l'état prêt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'événement attendu est arrivé, le processus peut de nouveau avancer. Il rejoint les processus prêts et attend que l'ordonnanceur lui attribue le processeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il est terminé et quitte la mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la lecture n'était qu'une étape du travail du processus. Il a encore des instructions à exécuter, par exemple traiter les données lues.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il reste bloqué jusqu'à ce que l'utilisateur le relance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le système sait que l'événement attendu s'est produit et débloque lui-même le processus, sans intervention de l'utilisateur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il passe directement à l'état élu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le processeur est peut-être occupé par un autre processus. C'est l'ordonnanceur qui décidera quand l'élire ; en attendant, il est prêt.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q11 : Le carrefour bloqué</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quatre voitures arrivent en même temps, une par route, à un carrefour sans feux où chacune doit laisser passer la voiture venant de sa droite. Chaque voiture attend donc celle qui est à sa droite, et aucune ne démarre. Quelle situation entre processus ce blocage illustre-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un interblocage apparaît quand des processus détiennent chacun une ressource et attendent celle d'un autre, de sorte que les attentes forment un cycle. Il faut alors une intervention extérieure, comme un agent qui fait passer une voiture, ou le système qui termine un processus.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un ordonnancement à tour de rôle entre quatre processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : dans un ordonnancement à tour de rôle, chaque processus avance à son tour. Ici aucune voiture ne passe jamais, personne n'avance.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un interblocage entre processus qui s'attendent en cycle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque voiture occupe sa place et attend que la suivante libère le passage, et la chaîne des attentes revient à son point de départ. Comme dans un interblocage, aucune ne peut avancer sans intervention extérieure.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un processus bloqué qui attend la fin d'une lecture sur disque</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processus en attente d'une lecture repart seul quand la lecture se termine. Ici les voitures s'attendent les unes les autres, et rien ne viendra les débloquer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un processeur trop lent pour traiter quatre processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processeur lent ralentit les processus mais les fait tous avancer. Le blocage vient ici de l'attente mutuelle, pas d'un manque de puissance.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q12 : Verrou d'exclusion mutuelle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>À quoi sert un <strong>verrou d'exclusion mutuelle</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un verrou protège la cohérence d'une ressource partagée, comme un fichier. Il crée aussi un risque : deux processus qui détiennent chacun un verrou et attendent celui de l'autre se retrouvent en interblocage.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À stocker les données partagées entre plusieurs processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un verrou ne stocke pas de<br/>
données, il contrôle l'accès à<br/>
des données stockées par<br/>
ailleurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À ralentir volontairement le programme pour économiser le processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un verrou peut effectivement<br/>
ralentir le programme, mais ce<br/>
n'est pas son objectif. Son<br/>
rôle premier est de garantir la<br/>
cohérence des données<br/>
partagées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À chiffrer les données partagées pour les protéger d'une lecture extérieure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le chiffrement relève de la sécurisation des communications, pas du partage d'une ressource entre processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À garantir qu'un seul processus à la fois accède à une ressource</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le motif classique est le suivant : on acquiert le verrou, on effectue les opérations sur la ressource, puis on libère le verrou pour que les autres processus puissent y accéder à leur tour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q13 : Interblocage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'appelle-t-on un <strong>interblocage</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une façon simple de prévenir l'interblocage consiste à imposer à tous les processus le même ordre d'acquisition des ressources (toujours A puis B) : l'attente circulaire devient alors impossible.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une situation où plusieurs processus s'attendent mutuellement sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Exemple : le processus P₁ détient la ressource A et attend B, tandis que le processus P₂ détient B et attend A. Aucun des deux ne peut progresser.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un signal d'erreur particulier émis automatiquement par le système</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'interblocage n'émet pas de<br/>
signal particulier. Au<br/>
contraire, il se manifeste par<br/>
un blocage silencieux que le<br/>
programmeur doit détecter<br/>
lui-même.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un arrêt brutal et immédiat de l'ensemble du programme, déclenché par le noyau</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un interblocage n'est pas un<br/>
arrêt brutal : les processus<br/>
impliqués restent actifs, mais<br/>
ils sont bloqués en attente<br/>
mutuelle. Aucun ne s'arrête de<br/>
lui-même.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un gel de l'affichage de l'écran le temps d'un calcul lourd</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le mot peut faire penser à un<br/>
gel de l'affichage, mais le<br/>
sens technique en informatique<br/>
est tout autre. Il s'agit d'un<br/>
blocage logique entre<br/>
processus.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q14 : Attente dans l'ordre d'arrivée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Trois processus deviennent prêts au même instant, dans l'ordre P₁, P₂, P₃. Ils ont besoin respectivement de 6 ms, 3 ms et 1 ms de processeur. L'ordonnanceur les exécute dans leur ordre d'arrivée, chacun jusqu'au bout. Pendant combien de temps P₃ attend-il avant d'être élu ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans l'ordre d'arrivée, un processus attend la somme des durées des processus arrivés avant lui. Un processus court placé derrière des processus longs attend donc longtemps : c'est la faiblesse de cette méthode d'ordonnancement.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tu fais passer P₃ en premier parce qu'il est le plus court. L'ordonnanceur décrit ici suit l'ordre d'arrivée, et P₃ est arrivé en dernier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>9 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : P₁ occupe le processeur de 0 à 6 ms, puis P₂ de 6 à 9 ms. P₃ est élu à 9 ms, après avoir attendu 6 + 3 = 9 ms.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 ms est l'instant où P₃ se termine, pas celui où il commence. Son attente s'arrête dès qu'il est élu, à 9 ms.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1 ms est la durée d'exécution de P₃, pas son attente. Il doit d'abord laisser passer P₁ et P₂.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q15 : Création d'un processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur les systèmes Unix, l'appel système<br/>
fork permet de :</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le motif classique sous Unix est<br/>
l'enchaînement fork puis exec :<br/>
on duplique le processus, puis on<br/>
remplace l'image mémoire de<br/>
l'enfant par un autre programme.<br/>
Le parent peut ensuite continuer<br/>
en parallèle ou attendre la fin<br/>
de l'enfant avec un appel à<br/>
wait.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Créer un nouveau fichier vide sur le disque pour le processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La création d'un fichier<br/>
relève d'autres appels<br/>
système, comme open avec<br/>
l'option de création. L'appel<br/>
fork concerne les processus,<br/>
pas les fichiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Remplacer le programme courant par un nouveau programme à exécuter</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette opération correspond à<br/>
l'appel système exec, qui<br/>
est souvent combiné avec<br/>
fork pour lancer un nouveau<br/>
programme dans un nouveau<br/>
processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Arrêter immédiatement le processus appelant et libérer sa mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La terminaison d'un processus<br/>
se fait avec un appel système<br/>
comme exit, et non avec<br/>
fork.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Dupliquer le processus appelant en un parent et un enfant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Après l'appel à fork, on<br/>
distingue le parent et l'enfant<br/>
par la valeur renvoyée : la<br/>
fonction renvoie 0 dans le<br/>
processus enfant, et le<br/>
numéro de l'enfant dans le<br/>
processus parent. Ce mécanisme<br/>
est fondamental sous Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q16 : Enfants d'un interpréteur de commandes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Voici un extrait de la liste des processus d'une machine, réduit à trois colonnes : le PID, le PPID (PID du processus parent) et la commande exécutée.</p>
<p>`<code>text<br/>
PID PPID CMD<br/>
880 1 login<br/>
912 880 bash<br/>
1043 912 python3 jeu.py<br/>
1051 912 firefox<br/>
1060 1051 firefox-onglet<br/>
</code></p>
<p>Combien de processus de cet extrait ont été créés directement par le processus bash` ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tout processus est créé par un autre processus, son parent, dont le PID figure dans la colonne PPID. En suivant ces numéros, on reconstitue l'arborescence des processus : ici login a créé bash, qui a créé python3 jeu.py et firefox, lequel a créé firefox-onglet.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : deux lignes ont pour PPID 912, le PID de bash : python3 jeu.py et firefox.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : python3 jeu.py a bien pour PPID 912, mais firefox aussi. Il faut relever toutes les lignes dont le PPID vaut 912.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tu comptes toutes les lignes situées sous bash. Or login est le parent de bash, et firefox-onglet est un enfant de firefox.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : firefox-onglet a pour PPID 1051 ; il a été créé par firefox, pas directement par bash.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q18 : Priorité d'un processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi un système d'exploitation<br/>
attribue-t-il des <strong>priorités</strong><br/>
différentes aux processus ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les systèmes d'exploitation à<br/>
contraintes temps réel offrent<br/>
des garanties strictes sur la<br/>
priorité. Les systèmes<br/>
généralistes adoptent une<br/>
politique « au mieux », tout en<br/>
cherchant à maintenir une équité<br/>
globale entre les processus.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Pour respecter l'ordre exact dans lequel les programmes ont été lancés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'ordre de lancement ne<br/>
détermine pas la priorité : un<br/>
processus lancé tardivement peut<br/>
être plus prioritaire qu'un<br/>
autre lancé avant lui.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Pour réserver une quantité de mémoire vive fixe à chaque processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La priorité ne fixe pas la<br/>
mémoire allouée : elle agit sur<br/>
le partage du temps processeur,<br/>
pas sur celui de la mémoire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Pour renforcer la sécurité en isolant les processus les uns des autres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La sécurité est gérée par les<br/>
permissions et les<br/>
mécanismes d'isolation, pas<br/>
par les priorités, qui<br/>
concernent l'allocation du<br/>
temps processeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Pour donner plus de temps processeur aux processus les plus importants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une priorité élevée conduit l'ordonnanceur à choisir ce processus avant les processus moins prioritaires, qui reçoivent donc moins de temps processeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q19 : Lister les processus sous Windows</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment afficher les processus actifs<br/>
sur <strong>Windows</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur tous les systèmes<br/>
d'exploitation modernes, on peut<br/>
observer les processus, mesurer<br/>
leur consommation de ressources<br/>
et les terminer. Les outils<br/>
diffèrent, mais les fonctions<br/>
proposées sont équivalentes.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>En redémarrant complètement Windows pour afficher la liste au prochain démarrage</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Redémarrer le système ne permet<br/>
pas d'observer les processus en<br/>
cours : il faut au contraire un<br/>
outil de supervision sur un<br/>
système en fonctionnement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Avec le Gestionnaire des tâches, ou la commande PowerShell Get-Process</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le Gestionnaire des tâches<br/>
(raccourci Ctrl + Maj + Échap)<br/>
offre une interface graphique<br/>
riche. En ligne de commande,<br/>
on dispose de tasklist<br/>
(commande historique) ou de<br/>
Get-Process dans<br/>
PowerShell.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>C'est impossible : Windows masque ses processus à l'utilisateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Plusieurs outils permettent<br/>
au contraire d'observer les<br/>
processus (Gestionnaire des<br/>
tâches, tasklist,<br/>
Get-Process).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Avec la commande ps, comme sur les systèmes Unix</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande ps est propre<br/>
aux systèmes Unix. Elle n'est<br/>
pas disponible nativement<br/>
sous Windows.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q21 : Instant de fin au tourniquet</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Trois processus sont prêts à l'instant 0, dans l'ordre P₁, P₂, P₃. Ils ont besoin respectivement de 3 ms, 2 ms et 4 ms de processeur. L'ordonnanceur procède à tour de rôle : chaque processus reçoit au plus 2 ms, puis, s'il n'a pas fini, repasse en fin de file. À quel instant P₁ se termine-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour suivre un tourniquet, on écrit la chronologie tranche par tranche : P₁ de 0 à 2, P₂ de 2 à 4, P₃ de 4 à 6, P₁ de 6 à 7, P₃ de 7 à 9. Chaque processus avance un peu à chaque tour, et aucun n'attend la fin complète des autres.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tu laisses P₁ s'exécuter jusqu'au bout. Il est interrompu au bout de 2 ms et doit attendre que P₂ et P₃ aient eu leur tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>7 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : P₁ s'exécute de 0 à 2 ms, P₂ de 2 à 4 ms (il a fini), P₃ de 4 à 6 ms, puis P₁ termine sa dernière milliseconde de 6 à 7 ms.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tu oublies le tour de P₃. Après P₂ (de 2 à 4 ms), c'est P₃ qui reçoit le processeur, de 4 à 6 ms, avant le retour de P₁.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>9 ms</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 ms est l'instant où le dernier processus, P₃, se termine. P₁ a fini avant, à 7 ms.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q25 : Affirmation fausse sur les processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les affirmations suivantes sur les processus, laquelle est <strong>fausse</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'ordonnanceur répartit le processeur entre les processus prêts, mais il ne règle pas les attentes de ressources. Un interblocage exige une intervention : terminer un processus, ou mieux, l'empêcher en imposant un ordre d'acquisition des ressources.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un interblocage se dénoue de lui-même au prochain tour de l'ordonnanceur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est fausse, c'est donc la bonne réponse : les processus en interblocage n'attendent pas le processeur mais des ressources détenues par les autres. L'ordonnanceur ne libère aucune ressource, le blocage persiste sans intervention extérieure.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Lancer deux fois le même programme crée deux processus de PID différents</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est correcte : chaque lancement crée un nouveau processus, et le système attribue à chacun un PID unique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un processus bloqué redevient prêt avant de pouvoir être élu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est correcte : la fin de l'attente fait passer le processus à l'état prêt, et seul l'ordonnanceur peut ensuite l'élire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Sur un processeur à un cœur, un seul processus est élu à chaque instant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est correcte : un cœur exécute un processus à la fois, et l'ordonnanceur fait alterner les processus prêts.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q26 : Appui sur une touche pendant un calcul</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pendant qu'un processus effectue un long calcul, l'utilisateur appuie sur une touche du clavier. Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les périphériques préviennent le système d'exploitation par des interruptions. Le système suspend alors momentanément le processus en cours, traite l'événement (touche appuyée, fin d'une lecture sur disque, paquet reçu), puis rend la main à l'ordonnancement habituel.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le clavier signale une interruption, que le système traite avant de reprendre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le clavier envoie un signal matériel d'interruption. Le système suspend brièvement le processus en cours, traite la frappe, puis l'exécution des processus reprend.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La frappe est ignorée tant que le calcul n'est pas terminé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le système ne laisse pas un calcul rendre la machine sourde au clavier. La frappe est prise en compte presque immédiatement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le calcul est définitivement arrêté pour laisser place à la frappe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le calcul n'est suspendu qu'un bref instant, le temps de traiter la frappe. Il reprend ensuite là où il en était.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le clavier traite lui-même la frappe, sans solliciter le processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le clavier est un périphérique d'entrée, il se contente de signaler la touche appuyée. Le traitement de cette information est confié au système d'exploitation, exécuté par le processeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q27 : Cycle d'attente parmi quatre processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un relevé indique, pour quatre processus, la ressource exclusive que chacun détient et celle qu'il attend :</p>
<p>- P₁ détient R₁ et attend R₂ ;<br/>
- P₂ détient R₂ et attend R₃ ;<br/>
- P₃ détient R₃ et attend R₂ ;<br/>
- P₄ détient R₄ et attend R₁.</p>
<p>Quels processus forment un cycle d'attente ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour repérer un interblocage, on suit les attentes : un processus attend celui qui détient la ressource demandée. Ici P₂ et P₃ forment un cycle, et P₁ puis P₄ restent bloqués derrière eux : tant que le cycle n'est pas brisé, aucun des quatre n'avance.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>P₁, P₂ et P₃</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : P₁ attend bien P₂, mais seul P₄ attend R₁, et aucun processus n'attend P₄ : la chaîne ne revient jamais à P₁, bloqué derrière le cycle sans en faire partie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>P₂ et P₃</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : P₂ attend R₃, détenue par P₃, qui attend R₂, détenue par P₂. La chaîne revient à son point de départ : c'est un cycle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucun, les attentes ne font que se suivre en chaîne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en suivant les attentes à partir de P₂, on passe par P₃ et l'on revient à P₂. Cette chaîne-là se referme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les quatre processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : P₄ attend P₁, qui attend P₂, mais aucun processus n'attend R₄. La chaîne partie de P₄ ne revient jamais à lui.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q22 : Reconnaître un interblocage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Deux processus P₁ et P₂ utilisent deux<br/>
ressources A et B que le système d'exploitation<br/>
n'autorise qu'à un seul processus à la fois (ressources<br/>
non préemptibles). À un instant donné, P₁ détient<br/>
A et attend B, pendant que P₂ détient B et<br/>
attend A. Aucun des deux ne lâchera la ressource<br/>
qu'il détient. Quelle situation s'est produite ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>On sort d'un interblocage en brisant le cycle d'attente, par exemple en imposant à tous les processus le même ordre d'acquisition des ressources, ou en autorisant le système à retirer une ressource à un processus. Les bases de données et les systèmes d'exploitation surveillent ce type de situation.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un simple manque de processeur, réglé au prochain tour de l'ordonnanceur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : P₁ et P₂ n'attendent pas le processeur mais une ressource détenue par l'autre. Leur donner le processeur ne changerait rien, puisque ni A ni B ne sera libérée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un arrêt des deux processus, que le système a terminés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun des deux processus n'est terminé. Ils existent toujours et détiennent chacun leur ressource, mais ils restent figés en attente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un interblocage, car chacun attend la ressource que l'autre détient</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'interblocage (en anglais <em>deadlock</em>) se reconnaît ici à tous ses ingrédients : les ressources sont exclusives, chaque processus en tient une tout en demandant l'autre, le système ne peut pas les retirer de force, et la chaîne d'attente forme un cycle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une file d'attente normale du système, sans problème particulier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : dans une file d'attente normale, les<br/>
processus progressent à tour de rôle. Ici, aucun<br/>
des deux n'avance et aucun n'avancera, c'est tout<br/>
sauf normal.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q23 : Comprendre l'état bloqué</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur un ordinateur en fonctionnement, un processus est<br/>
observé dans l'état « <strong>en attente</strong> » (ou « bloqué »)<br/>
depuis plusieurs secondes. Que peut-on en déduire de<br/>
plus probable ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un processus typique alterne plusieurs fois entre les<br/>
états « prêt », « élu » et « en attente » au cours de<br/>
sa vie. C'est ce qui rend la multiprogrammation<br/>
efficace : pendant qu'un processus attend une lecture<br/>
lente sur disque, l'ordonnanceur donne le processeur à<br/>
un autre qui a du travail à faire. La transition entre<br/>
états est entièrement gérée par le noyau.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il utilise activement le processeur pour effectuer un calcul intensif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processus qui utilise le processeur est<br/>
dans l'état « élu » (ou « en exécution »), pas dans<br/>
l'état « en attente ».</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il a planté et le système d'exploitation s'apprête à le supprimer</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processus planté passe à l'état<br/>
« terminé ». L'état « en attente » est, lui, un<br/>
état tout à fait normal dans le cycle de vie d'un<br/>
processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il attend un événement extérieur ; l'ordonnanceur a donné le processeur à d'autres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'état « en attente » signale que le<br/>
processus ne peut pas progresser parce qu'il attend<br/>
un événement extérieur (saisie clavier, lecture<br/>
disque, réception réseau, libération d'une<br/>
ressource). L'ordonnanceur ne lui alloue pas le<br/>
processeur pendant ce temps : il attribue les<br/>
cycles à des processus qui sont, eux, à l'état<br/>
« prêt ».</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il consomme une grande quantité de mémoire vive sur la machine</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la consommation de mémoire n'a aucun<br/>
rapport avec l'état d'ordonnancement du processus.<br/>
Un processus en attente peut détenir beaucoup ou<br/>
peu de mémoire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q28 : Système sur puce</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'appelle-t-on un <strong>système sur puce</strong> (SoC, pour<br/>
<em>system on a chip</em>) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La miniaturisation des circuits a permis de réunir<br/>
sur une seule puce des fonctions autrefois réparties<br/>
sur une carte entière : cœurs de processeur,<br/>
mémoires locales, interfaces radio et filaires,<br/>
contrôleurs vidéo, gestion d'énergie. C'est<br/>
l'architecture des téléphones et des objets<br/>
connectés.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un processeur qui possède plusieurs cœurs gravés sur le même circuit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un processeur multicœur n'intègre que des unités<br/>
de calcul ; un système sur puce y ajoute mémoire,<br/>
interfaces radio, contrôleurs vidéo et gestion<br/>
d'énergie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un circuit unique qui regroupe processeur, mémoire, interfaces et contrôleurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Toutes ces fonctions, autrefois réparties sur<br/>
plusieurs circuits d'une carte, sont gravées sur<br/>
la même puce.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un programme du système d'exploitation chargé de piloter une puce</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un système sur puce est un composant matériel,<br/>
pas un logiciel ; c'est le système d'exploitation<br/>
qui pilote ses blocs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une carte mère sur laquelle on enfiche séparément processeur et mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est l'organisation classique d'un ordinateur de<br/>
bureau, avec des composants séparés et<br/>
remplaçables : l'inverse de l'intégration sur une<br/>
puce.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q29 : Où trouve-t-on des systèmes sur puce</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans quels appareils rencontre-t-on le plus souvent<br/>
un système sur puce ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un téléphone doit tenir dans la main et fonctionner<br/>
une journée sur batterie : regrouper les fonctions<br/>
sur une seule puce réduit l'encombrement, la<br/>
consommation et le coût d'assemblage. Les<br/>
ordinateurs portables récents adoptent la même<br/>
approche.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Dans aucun appareil grand public, ils restent expérimentaux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les systèmes sur puce équipent depuis des années<br/>
tous les téléphones et nombre d'ordinateurs<br/>
portables récents.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Dans les superordinateurs des centres de calcul uniquement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les superordinateurs assemblent au contraire des<br/>
milliers de processeurs et de cartes séparés ;<br/>
l'intégration sur une puce vise d'abord les<br/>
appareils compacts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Dans les téléphones, tablettes et objets connectés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Compacité et faible consommation sont décisives<br/>
pour un appareil qui fonctionne sur batterie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Dans les ordinateurs de bureau à carte graphique séparée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une carte graphique séparée est justement un<br/>
composant non intégré ; l'ordinateur de bureau<br/>
reste l'exemple type des composants dissociés.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q30 : Pourquoi l'intégration accélère les échanges</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi le regroupement des composants sur une<br/>
seule puce rend-il leurs échanges plus rapides ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur une carte, un signal qui va du processeur à la<br/>
mémoire traverse des pistes de plusieurs centimètres<br/>
et des connecteurs ; sur une puce, les blocs sont<br/>
voisins et reliés par un réseau interne très large.<br/>
Moins de distance, c'est moins de délai et moins<br/>
d'énergie.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les données n'ont plus besoin de passer par la mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les programmes et leurs données résident toujours<br/>
en mémoire ; c'est le chemin entre la mémoire et<br/>
le processeur qui se raccourcit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'une seule puce exécute plusieurs instructions par cycle, ce qu'une carte ne permet pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Exécuter plusieurs instructions par cycle est une<br/>
propriété du processeur, présente aussi sur les<br/>
processeurs de bureau.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que la fréquence d'horloge d'un système sur puce est toujours plus élevée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La fréquence dépend du processeur choisi ;<br/>
beaucoup de systèmes sur puce tournent moins vite<br/>
que les processeurs de bureau et restent<br/>
réactifs grâce aux liaisons courtes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce que les signaux parcourent quelques millimètres au lieu de traverser toute une carte</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Des liaisons courtes et nombreuses, gravées dans<br/>
la puce, transmettent les données avec un délai<br/>
bien plus faible.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q31 : Pourquoi l'intégration économise l'énergie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un téléphone équipé d'un système sur puce consomme<br/>
nettement moins qu'un ordinateur à composants<br/>
séparés de puissance comparable. Quelle explication<br/>
est juste ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La consommation d'un circuit vient surtout des<br/>
déplacements de données et des blocs qui tournent<br/>
pour rien. Intégrer les fonctions sur une puce<br/>
raccourcit les trajets, et un contrôleur de gestion<br/>
d'énergie éteint ou ralentit chaque bloc selon<br/>
l'activité : écran éteint, le processeur baisse sa<br/>
fréquence et la radio ne se réveille que par<br/>
intermittence.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un système sur puce ne contient pas de processeur, le composant le plus gourmand</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Il en contient un, souvent à plusieurs cœurs ;<br/>
c'est l'intégration et la gestion fine de<br/>
l'alimentation qui réduisent la consommation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Les liaisons internes très courtes coûtent peu d'énergie et les blocs inactifs sont mis en veille</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Deux effets s'ajoutent : faire transiter un signal<br/>
sur quelques millimètres coûte peu, et le bloc de<br/>
gestion d'énergie coupe ce qui ne sert pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La mémoire vive y est remplacée par du stockage flash, qui ne consomme rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le téléphone garde une mémoire vive pour exécuter<br/>
les programmes ; le stockage flash consomme lui<br/>
aussi, surtout en écriture.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un système sur puce exécute les programmes plus lentement qu'un ordinateur, donc chauffe et consomme moins</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les systèmes sur puce actuels sont rapides ; leur<br/>
économie vient de la distance parcourue par les<br/>
signaux et de la mise en veille des blocs, pas<br/>
d'une lenteur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q32 : Identifier le bloc chargé des images</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le schéma simplifié du système sur puce d'un<br/>
téléphone montre cinq blocs : cœurs de processeur,<br/>
accélérateur graphique, interface radio, contrôleur<br/>
de gestion d'énergie et mémoire locale. Lequel<br/>
calcule l'affichage d'un jeu en trois dimensions ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un système sur puce réunit des blocs spécialisés :<br/>
les cœurs de processeur exécutent les programmes<br/>
généraux, l'accélérateur graphique calcule les<br/>
images, l'interface radio communique, la gestion<br/>
d'énergie alimente chacun selon ses besoins. Lire<br/>
un schéma, c'est associer chaque bloc à sa<br/>
fonction.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'interface radio, qui reçoit les images du réseau</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Elle assure les liaisons Wi-Fi et mobiles ; les<br/>
images d'un jeu sont calculées sur place, pas<br/>
reçues du réseau.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La mémoire locale, qui contient les images à afficher</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Elle stocke les données ; elle ne calcule rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le contrôleur de gestion d'énergie, qui règle l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Il règle l'alimentation des blocs et la<br/>
luminosité éventuelle ; il ne produit pas<br/>
d'images.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>L'accélérateur graphique, spécialisé dans ce calcul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ce bloc effectue en parallèle les millions<br/>
d'opérations géométriques et de coloriage de<br/>
pixels qu'exige une image en trois dimensions.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q33 : Repérer l'association bloc et rôle fausse</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi ces associations entre un bloc d'un système<br/>
sur puce et son rôle, laquelle est <strong>fausse</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque bloc a une fonction précise : radio pour<br/>
communiquer, réseau sur puce pour relier les blocs,<br/>
contrôleur vidéo pour l'écran, gestion d'énergie<br/>
pour l'alimentation. Les programmes, eux, sont<br/>
chargés en mémoire vive, qu'elle soit sur la puce ou<br/>
dans un circuit voisin.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'interface radio relie l'appareil au Wi-Fi et au réseau mobile</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est bien son rôle : elle contient les<br/>
émetteurs-récepteurs des liaisons sans fil.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le contrôleur vidéo stocke les programmes en cours d'exécution</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le contrôleur vidéo pilote l'écran ; les<br/>
programmes en cours résident en mémoire vive.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le bloc de gestion d'énergie coupe l'alimentation des parties inactives</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Exact : c'est lui qui met en veille les blocs<br/>
inutilisés pour économiser la batterie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le réseau sur puce transporte les données d'un bloc à l'autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Exact : il joue sur la puce le rôle des bus d'une<br/>
carte mère.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q34 : Composants séparés sur un ordinateur évolutif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour un ordinateur de bureau destiné à être amélioré<br/>
au fil des ans, on préfère des composants séparés à<br/>
un système sur puce. Pourquoi ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'intégration a un prix : ce qui est gravé ensemble<br/>
ne se sépare plus. Un système sur puce se change en<br/>
bloc, quand une carte mère accepte une nouvelle<br/>
carte graphique ou une barrette de mémoire<br/>
supplémentaire. On choisit donc selon l'usage :<br/>
compacité et autonomie d'un côté, évolutivité de<br/>
l'autre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'un système sur puce ne peut pas faire tourner un système d'exploitation complet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Téléphones et ordinateurs portables à système sur<br/>
puce exécutent des systèmes d'exploitation<br/>
complets.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que des composants séparés consomment moins que la même fonction intégrée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est l'inverse : l'intégration réduit les<br/>
distances parcourues par les signaux, donc la<br/>
consommation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'un système sur puce ne peut contenir qu'un seul cœur de processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les systèmes sur puce actuels embarquent<br/>
couramment huit cœurs ou plus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce qu'un composant séparé se remplace ou s'ajoute sans toucher au reste</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Changer la carte graphique ou doubler la mémoire<br/>
vive est impossible quand tout est gravé sur la<br/>
même puce.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q35 : Un téléphone en veille</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un téléphone dont l'écran est éteint tient plusieurs<br/>
jours sur sa batterie, alors qu'une heure de jeu la<br/>
vide d'un quart. Comment le système sur puce<br/>
obtient-il cette différence ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le contrôleur de gestion d'énergie est un bloc à<br/>
part entière du système sur puce. Il adapte la<br/>
fréquence et l'alimentation de chaque bloc à<br/>
l'activité : en veille, les cœurs tournent au<br/>
ralenti, l'accélérateur graphique dort, la radio se<br/>
réveille quelques millisecondes à intervalles<br/>
réguliers. En jeu, tout fonctionne à plein régime.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il abaisse la tension fournie par la batterie, ce qui divise d'un coup la consommation de tous les blocs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La tension d'alimentation est maintenue par le<br/>
circuit de gestion d'énergie ; c'est l'activité<br/>
des blocs qui est réduite, pas la batterie qui<br/>
est bridée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La gestion d'énergie ralentit les cœurs, met l'accélérateur graphique en veille et réveille la radio par intermittence</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La consommation suit l'activité réelle de chaque<br/>
bloc, réglée en permanence par ce contrôleur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il arrête complètement tous ses blocs, radio comprise, tant que l'écran reste éteint, puis les relance au réveil</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La radio doit rester à l'écoute des appels et des<br/>
messages, par brèves périodes ; tout couper<br/>
rendrait le téléphone injoignable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il confie ses calculs au réseau mobile, qui les exécute à sa place tant que l'écran reste éteint</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Les calculs restent sur l'appareil ; en veille, il<br/>
n'y en a presque plus à faire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q36 : Un système sur puce conçu sur mesure</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Plusieurs fabricants de téléphones conçoivent leur propre système<br/>
sur puce au lieu d'assembler des composants du commerce. Qu'y<br/>
gagnent-ils ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le système sur puce fige l'architecture au moment de la<br/>
conception. En échange, chaque bloc est taillé pour l'usage prévu,<br/>
ce qui explique l'autonomie et la finesse des appareils mobiles.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Des blocs taillés pour leurs besoins exacts en vitesse et en autonomie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : concevoir la puce permet de choisir le nombre de<br/>
cœurs, la taille de l'accélérateur graphique ou les circuits<br/>
dédiés à la photo, pour le compromis recherché entre vitesse,<br/>
encombrement et autonomie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une conception moins coûteuse qu'un assemblage de composants déjà existants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : concevoir une puce coûte très cher en études et en<br/>
fabrication. Cet investissement ne se justifie que par de très<br/>
grands volumes de production.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un téléphone que le client peut faire évoluer composant par composant, comme un PC</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le contraire. Tout étant gravé sur la même puce,<br/>
rien ne se remplace séparément : la conception sur mesure<br/>
sacrifie l'évolutivité à la compacité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'absence de système d'exploitation, la puce se pilotant seule sans logiciel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un système sur puce exécute un système d'exploitation<br/>
comme tout ordinateur. Ses blocs spécialisés sont justement<br/>
exploités par le système et ses pilotes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q37 : La durée du quantum au tourniquet</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un ordonnanceur au tourniquet donne à chaque processus un quantum<br/>
de temps avant de passer au suivant. Que se passe-t-il si le<br/>
quantum est choisi très court ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le quantum arbitre entre réactivité, qui veut un quantum court, et<br/>
rendement, qui veut un quantum long.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les processus bloqués en entrée-sortie sont réveillés plus tôt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processus bloqué attend la fin de son entrée-sortie,<br/>
pas un quantum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un seul processus monopolise le processeur jusqu'à sa fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est au contraire un quantum infini qui produirait<br/>
cet effet.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les processus se terminent plus vite, étant servis plus souvent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : être servi plus souvent ne donne pas plus de temps de<br/>
calcul au total.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Les commutations se multiplient et leur coût ronge le temps utile</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque changement de processus demande de<br/>
sauvegarder et restaurer un contexte. Avec un quantum minuscule,<br/>
le processeur passe plus de temps à commuter qu'à calculer.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q38 : Le temps d'attente avant le premier service</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un ordonnanceur au tourniquet sert 3 processus prêts, dans<br/>
l'ordre, avec un quantum de 4 ms. Aucun ne se bloque ni ne<br/>
termine pendant le premier tour. Combien de temps le dernier de la<br/>
liste attend-il avant de recevoir le processeur pour la première<br/>
fois ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Au tourniquet, l'attente avant le premier service croît avec le<br/>
nombre de processus prêts et la taille du quantum.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0 ms, tous les processus démarrant ensemble</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul processus occupe le processeur à la fois.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>8 ms, les 2 quanta qui le précèdent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les 2 processus placés avant lui<br/>
consomment chacun un quantum entier, soit<br/>
2 × 4 = 8 ms.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12 ms, un tour complet de tourniquet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : son propre quantum ne fait pas partie de l'attente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 ms, un seul quantum d'attente</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il doit laisser passer tous ceux qui le précèdent, pas<br/>
un seul.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q39 : Un processus qui attend une lecture sur disque</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un processus élu demande une lecture sur le disque, qui prendra<br/>
plusieurs millisecondes. Que fait l'ordonnanceur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'état bloqué existe précisément pour libérer le processeur<br/>
pendant les attentes d'entrée-sortie.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il le remet aussitôt dans la file des processus prêts</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un processus qui attend une entrée-sortie n'est pas<br/>
prêt, il est bloqué.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il le passe à l'état bloqué et élit un autre processus prêt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : attendre le disque en occupant le processeur<br/>
serait du gaspillage ; le processus redeviendra prêt quand la<br/>
lecture sera finie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il le termine, une lecture bloquante étant interdite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : lire sur le disque est une opération ordinaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il le laisse élu, le processeur attendant le disque avec lui</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le processeur serait inutilisé pendant toute<br/>
l'attente.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q40 : Prévenir l'interblocage par l'ordre des verrous</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Plusieurs processus ont besoin des mêmes verrous. Quelle règle,<br/>
imposée à tous, empêche tout interblocage ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un interblocage exige un cycle d'attente ; un ordre global<br/>
d'acquisition rend tout cycle impossible.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Attendre que les processus se débloquent d'eux-mêmes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un interblocage ne se résout jamais seul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Augmenter la priorité des processus déjà bloqués</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la priorité ne libère aucun verrou détenu par un<br/>
autre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Prendre les verrous toujours dans le même ordre, fixé à l'avance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : si tous demandent d'abord A puis B, aucun<br/>
processus ne peut détenir B en attendant A ; le cycle<br/>
d'attente devient impossible.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Donner à chaque processus un verrou supplémentaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : davantage de verrous multiplie les occasions<br/>
d'attente mutuelle.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q41 : Deux processus et deux fichiers</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Les fichiers A et B sont protégés par un verrou chacun. P1<br/>
verrouille A puis demande B ; en même temps, P2 verrouille<br/>
B puis demande A. Un interblocage est-il possible ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'interblocage naît d'un cycle : P1 attend P2 qui attend P1. Sans<br/>
cycle, les attentes finissent par se résoudre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, deux processus ne peuvent jamais partager deux fichiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : partager est possible, tout dépend de l'ordre des<br/>
demandes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Oui, chacun attend le verrou que l'autre détient</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : il y a interblocage seulement si chaque<br/>
processus détient ce que l'autre attend. Dérouler les deux<br/>
demandes dans l'ordre le fait apparaître ou non.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, un verrou se libère de lui-même après un délai</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un verrou reste détenu jusqu'à sa libération<br/>
explicite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, P2 finira par obtenir A quand P1 aura terminé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : reprends les deux demandes dans l'ordre et note qui<br/>
détient quoi au moment de chaque attente.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q42 : Un verrou jamais libéré</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un processus prend un verrou sur une ressource et ne le libère<br/>
jamais. Qu'arrive-t-il aux autres processus qui demandent cette<br/>
ressource ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Libérer un verrou dès que la ressource n'est plus nécessaire est<br/>
la règle de base : un verrou oublié bloque tout le monde.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le système leur retire le verrou du processus fautif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le système ne reprend pas un verrou de lui-même.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils reçoivent une copie de la ressource</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune copie n'est faite, la ressource est unique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Ils restent bloqués en attente du verrou, indéfiniment</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : un verrou interdit l'accès à tout autre<br/>
processus tant qu'il est détenu ; les demandeurs passent à<br/>
l'état bloqué sans issue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ils accèdent à la ressource en lecture seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le verrou d'exclusion mutuelle interdit tout accès.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q43 : La préemption d'un processus</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait un ordonnanceur qui préempte un processus ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La préemption est ce qui permet le partage du processeur : sans<br/>
elle, un processus garderait le processeur jusqu'à ce qu'il le<br/>
rende.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il le termine définitivement pour libérer la mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le processus n'est pas tué, il attend son tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il lui retire le processeur avant la fin de son travail</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le processus passe de l'état élu à l'état prêt,<br/>
son contexte est sauvegardé, et il reprendra plus tard là où il<br/>
en était.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il augmente sa priorité pour qu'il finisse plus vite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la préemption retire le processeur, elle ne favorise<br/>
pas le processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il double la durée de son quantum pour qu'il finisse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est au contraire l'expiration du quantum qui<br/>
déclenche souvent la préemption.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Processus et système — Q44 : Un processus de faible priorité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un ordonnanceur élit toujours le processus prêt de plus haute<br/>
priorité. Que risque un processus de faible priorité si des<br/>
processus prioritaires arrivent sans cesse ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les priorités strictes créent un risque d'attente sans fin ;<br/>
l'équité exige de faire vieillir les demandes en attente.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Obtenir le processeur à chaque tour, comme les autres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le tour de rôle vaut entre processus de même priorité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Être supprimé par l'ordonnanceur faute de place</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ordonnanceur ne supprime pas de processus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Être exécuté dès l'expiration du quantum en cours</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à l'expiration du quantum, c'est encore le plus<br/>
prioritaire qui est élu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Attendre indéfiniment, sans jamais obtenir le processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : tant qu'un processus plus prioritaire est prêt,<br/>
il passe devant. Les systèmes corrigent ce risque en augmentant<br/>
peu à peu la priorité des processus qui attendent.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
