{
  "chapter": {
    "id": "architectures-materielles",
    "level": "premiere",
    "theme": "Architectures matérielles, systèmes d'exploitation et réseaux",
    "title": "Architectures matérielles",
    "description": "Modèle de von Neumann, composants d'un ordinateur\n(processeur, mémoire, périphériques d'entrée/sortie),\nfonctionnement du processeur (cycle de von Neumann), notions\nd'assembleur et de langage machine, hiérarchie mémoire.",
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "von-neumann"
      ],
      "title": "Modèle de von Neumann",
      "statement": "Quels sont les composants principaux d'un ordinateur selon\nle **modèle de von Neumann** ?",
      "options": [
        {
          "text": "L'écran, le clavier, la souris et les haut-parleurs",
          "correct": false,
          "feedback": "Erreur : ce sont des **périphériques** spécifiques.\nLe modèle de von Neumann est plus général et\nstructurel.\n"
        },
        {
          "text": "Un processeur, une mémoire et des entrées/sorties",
          "correct": true,
          "feedback": "Bonne réponse : le modèle de von Neumann ($1945$)\nest l'architecture de référence des ordinateurs\nactuels. Sa particularité : la mémoire stocke à la\nfois les **données** et les **instructions** (du\nprogramme).\n"
        },
        {
          "text": "Internet, l'écran et le clavier de l'ordinateur",
          "correct": false,
          "feedback": "Erreur : Internet n'est pas un composant interne de\nl'ordinateur.\n"
        },
        {
          "text": "Le système d'exploitation et les applications",
          "correct": false,
          "feedback": "Erreur : ce sont des composants **logiciels**, pas\nle modèle d'architecture matérielle.\n"
        }
      ],
      "explanation": "Une architecture alternative, dite de Harvard, sépare la\nmémoire des programmes de celle des données ; elle reste\nutilisée dans certains microcontrôleurs. Le génie de von\nNeumann : permettre au programme d'être traité comme une\ndonnée (mémoire unique), ce qui ouvre la voie aux\ncompilateurs, systèmes d'exploitation, etc."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "processeur",
        "definition"
      ],
      "title": "Rôle du processeur",
      "statement": "Quel est le rôle principal du **processeur** (CPU) ?",
      "options": [
        {
          "text": "Exécuter les instructions d'un programme",
          "correct": true,
          "feedback": "Bonne réponse : le processeur lit les instructions\nen mémoire et les exécute une par une (cycle de\nvon Neumann). Il contient une **unité arithmétique et logique** (UAL) et une **unité de contrôle**.\n"
        },
        {
          "text": "Stocker durablement les données à long terme",
          "correct": false,
          "feedback": "Erreur : c'est le rôle des disques durs ou SSD. Le\nprocesseur exécute les calculs.\n"
        },
        {
          "text": "Afficher les images et les vidéos à l'écran",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de la carte graphique (GPU)\nplus que du CPU principal.\n"
        },
        {
          "text": "Stocker les fichiers en mémoire vive",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de la RAM (mémoire vive),\npas du processeur.\n"
        }
      ],
      "explanation": "Un processeur moderne contient des milliards de\ntransistors. Il opère à plusieurs gigahertz (milliards\nd'instructions par seconde) avec plusieurs cœurs en\nparallèle."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "memoire-ram"
      ],
      "title": "Mémoire vive (RAM)",
      "statement": "Quelle est la caractéristique principale de la **mémoire vive** (RAM) ?",
      "options": [
        {
          "text": "Elle est plus lente que le disque dur",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. La RAM est typiquement\n$1000$ fois plus rapide qu'un disque dur, et $100$\nfois plus rapide qu'un SSD.\n"
        },
        {
          "text": "Elle stocke les programmes du système d'exploitation à long terme",
          "correct": false,
          "feedback": "Erreur : c'est le disque dur qui stocke à long\nterme. La RAM contient temporairement les\nprogrammes en cours d'exécution.\n"
        },
        {
          "text": "Elle conserve les données même après extinction de l'ordinateur",
          "correct": false,
          "feedback": "Erreur : la RAM est **volatile**, elle perd ses\ndonnées quand l'ordinateur s'éteint. C'est ce qui\nla distingue du disque dur ou SSD.\n"
        },
        {
          "text": "Elle est rapide d'accès et volatile (perd ses données à l'extinction)",
          "correct": true,
          "feedback": "Bonne réponse : la RAM est utilisée comme zone de\ntravail pour les programmes en cours d'exécution.\nSa rapidité (nanosecondes) la rend bien plus\nperformante que les SSD ou disques durs (microsecondes\nà millisecondes).\n"
        }
      ],
      "explanation": "La hiérarchie mémoire moderne combine plusieurs niveaux\nde vitesse : registres (CPU) > cache (CPU) > RAM > SSD\n> disque dur > stockage réseau. Plus c'est rapide, plus\nc'est cher et limité en capacité."
    },
    {
      "id": "q04",
      "difficulty": 1,
      "skills": [
        "cycle-von-neumann"
      ],
      "title": "Cycle de von Neumann",
      "statement": "Quelles sont les étapes du **cycle de von Neumann**\nexécuté par le processeur ?",
      "options": [
        {
          "text": "Compiler, lier, exécuter",
          "correct": false,
          "feedback": "Erreur : c'est le cycle de **production d'un exécutable**, pas le cycle d'exécution des\ninstructions.\n"
        },
        {
          "text": "Allumer, démarrer puis attendre une action de l'utilisateur",
          "correct": false,
          "feedback": "Erreur : ce serait plus une procédure de démarrage,\npas le cycle d'exécution des instructions.\n"
        },
        {
          "text": "Fetch (lire), Decode (décoder), Execute (exécuter)",
          "correct": true,
          "feedback": "Bonne réponse : c'est le cycle « lecture, décodage,\nexécution » qui se répète des milliards de fois par\nseconde dans un processeur moderne. Certains modèles\najoutent une étape « write back » (écriture du\nrésultat).\n"
        },
        {
          "text": "Lire, écrire, supprimer",
          "correct": false,
          "feedback": "Erreur : c'est plutôt le vocabulaire des opérations\nsur fichiers, pas le cycle d'exécution.\n"
        }
      ],
      "explanation": "Ce cycle, simple en apparence, est largement optimisé\ndans les processeurs modernes : pipelining (plusieurs\nétapes en parallèle), exécution dans le désordre,\nprédiction de branchement, etc."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "bus"
      ],
      "title": "Bus",
      "statement": "Qu'est-ce qu'un **bus** dans une architecture\nd'ordinateur ?",
      "options": [
        {
          "text": "Un système de transport public",
          "correct": false,
          "feedback": "Erreur : analogie possible mais sans rapport en\ninformatique.\n"
        },
        {
          "text": "Un programme qui transporte des fichiers entre dossiers",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec les programmes. Un bus\nest physique.\n"
        },
        {
          "text": "Un type particulier de mémoire vive",
          "correct": false,
          "feedback": "Erreur : confusion possible. Le bus relie les\ncomposants, mais ce n'est pas une mémoire en\nlui-même.\n"
        },
        {
          "text": "Des fils conducteurs reliant les composants entre eux",
          "correct": true,
          "feedback": "Bonne réponse : le bus est l'autoroute interne de\nl'ordinateur. On distingue le bus de **données**\n(qui transporte les valeurs), le bus d'**adresses**\n(où dans la mémoire ?), et le bus de **contrôle**\n(signaux de coordination).\n"
        }
      ],
      "explanation": "Les processeurs modernes ont des bus très spécialisés\n(PCIe pour les cartes d'extension, DDR pour la RAM,\nUSB pour les périphériques externes, etc.)."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "assembleur"
      ],
      "title": "Langage assembleur",
      "statement": "Qu'est-ce que le langage **assembleur** ?",
      "options": [
        {
          "text": "Le langage utilisé par le système d'exploitation",
          "correct": false,
          "feedback": "Erreur : les systèmes modernes sont surtout écrits\nen C/C++ (avec un peu d'assembleur dans les\nparties très bas niveau).\n"
        },
        {
          "text": "Un compilateur qui transforme le code source en exécutable",
          "correct": false,
          "feedback": "Erreur : un compilateur transforme un langage de\nhaut niveau (C, Java) en assembleur ou en machine.\nL'assembleur est un langage, pas un outil.\n"
        },
        {
          "text": "Un langage symbolique de bas niveau, proche du processeur",
          "correct": true,
          "feedback": "Bonne réponse : chaque instruction assembleur\ncorrespond généralement à une instruction machine.\nPar exemple, `MOV AX, 5` charge la valeur $5$ dans\nle registre AX. C'est plus lisible que le binaire\nmais reste très proche du matériel.\n"
        },
        {
          "text": "Un langage de très haut niveau comme Python ou Java",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. L'assembleur est un\nlangage de **bas niveau**, très proche du matériel.\n"
        }
      ],
      "explanation": "L'assembleur est différent pour chaque architecture\nprocesseur (x$86$ pour Intel/AMD, ARM pour\nsmartphones et Apple Silicon, RISC-V open source).\nConnaître l'assembleur aide à comprendre comment un\nprogramme s'exécute concrètement."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "unite-arithmetique"
      ],
      "title": "Unité arithmétique et logique",
      "statement": "Que fait l'**unité arithmétique et logique** (UAL) du\nprocesseur ?",
      "options": [
        {
          "text": "Elle effectue les calculs arithmétiques et logiques",
          "correct": true,
          "feedback": "Bonne réponse : l'UAL est le « calculateur » du\nprocesseur. Elle prend deux opérandes en entrée et\nproduit un résultat selon l'opération demandée par\nl'unité de contrôle.\n"
        },
        {
          "text": "Elle stocke les fichiers du système",
          "correct": false,
          "feedback": "Erreur : aucun stockage. L'UAL est une unité de\ncalcul.\n"
        },
        {
          "text": "Elle gère tous les périphériques d'entrée et de sortie",
          "correct": false,
          "feedback": "Erreur : c'est le rôle des contrôleurs d'E/S, pas\nde l'UAL.\n"
        },
        {
          "text": "Elle décode les instructions",
          "correct": false,
          "feedback": "Erreur : c'est l'unité de **contrôle** qui décode.\nL'UAL exécute les opérations une fois décodées.\n"
        }
      ],
      "explanation": "L'UAL est composée de circuits logiques (additionneurs,\ncomparateurs, décaleurs, portes ET/OU/NON). C'est\nl'application concrète de l'algèbre de Boole étudiée\nen NSI."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "registre"
      ],
      "title": "Registres",
      "statement": "Qu'est-ce qu'un **registre** dans un processeur ?",
      "options": [
        {
          "text": "Une mémoire ultra-rapide interne au processeur",
          "correct": true,
          "feedback": "Bonne réponse : les registres sont les zones de\nstockage les plus rapides (accès en un cycle\nd'horloge). Un processeur en contient typiquement\nquelques dizaines à quelques centaines, contre des\nmilliards de bits en RAM.\n"
        },
        {
          "text": "La mémoire vive de l'ordinateur",
          "correct": false,
          "feedback": "Erreur : la RAM est externe au processeur. Les\nregistres sont **internes**.\n"
        },
        {
          "text": "Un type de bus",
          "correct": false,
          "feedback": "Erreur : un registre n'est pas un bus, c'est un\ncomposant de stockage très rapide.\n"
        },
        {
          "text": "Un fichier où l'on liste les utilisateurs du système",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec les utilisateurs.\n"
        }
      ],
      "explanation": "Un programme assembleur manipule essentiellement les\nregistres : on charge des données depuis la RAM dans\ndes registres, on calcule, et on écrit le résultat\nailleurs. C'est la base du fonctionnement à bas niveau."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "horloge"
      ],
      "title": "Horloge du processeur",
      "statement": "Que mesure-t-on en **gigahertz** (GHz) sur un processeur ?",
      "options": [
        {
          "text": "La consommation électrique",
          "correct": false,
          "feedback": "Erreur : la consommation se mesure en watts, pas en\nhertz.\n"
        },
        {
          "text": "La quantité de mémoire disponible",
          "correct": false,
          "feedback": "Erreur : la mémoire se mesure en octets, pas en\nhertz.\n"
        },
        {
          "text": "Le nombre de cycles par seconde de l'horloge",
          "correct": true,
          "feedback": "Bonne réponse : un processeur à $3$ GHz fait\n$3$ milliards de cycles par seconde. Chaque cycle\npeut typiquement exécuter une (ou plusieurs)\ninstructions. Mais ce n'est qu'une mesure parmi\nd'autres de la performance.\n"
        },
        {
          "text": "La taille des données traitées par instruction",
          "correct": false,
          "feedback": "Erreur : c'est plutôt l'**architecture** (32, 64\nbits) qui définit la taille des mots traités.\n"
        }
      ],
      "explanation": "Attention : la fréquence n'est pas le seul facteur de\nperformance. Un processeur à $3$ GHz peut être plus\nrapide qu'un autre à $4$ GHz s'il fait plus\nd'opérations par cycle (pipeline, superscalaire) ou\ns'il a plus de cœurs."
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "octets",
        "kibi-mibi"
      ],
      "title": "Préfixes pour les octets",
      "statement": "Combien d'octets contient un **kibioctet** (Kio) ?",
      "options": [
        {
          "text": "$1\\ 000$",
          "correct": false,
          "feedback": "Erreur : c'est $1$ kilooctet (KO) en notation\ndécimale (base $10$). Le **kibioctet** utilise la\nbase $2$.\n"
        },
        {
          "text": "$1\\ 048\\ 576$",
          "correct": false,
          "feedback": "Erreur : c'est $1$ Mio (mébioctet, $2^{20}$).\n"
        },
        {
          "text": "$1\\ 024$",
          "correct": true,
          "feedback": "Bonne réponse : $1$ Kio = $2^{10} = 1\\ 024$ octets.\nCette notation IEC ($2000$) distingue le kilooctet\n(kilo = $1000$) du kibioctet (kibi = $1024$). En\ninformatique, on utilise traditionnellement les\npuissances de $2$.\n"
        },
        {
          "text": "$8$",
          "correct": false,
          "feedback": "Erreur : $8$ bits font un **octet**. Un kibioctet\nest bien plus.\n"
        }
      ],
      "explanation": "Hiérarchie : $1$ Kio = $2^{10}$ o ; $1$ Mio = $2^{20}$ o ;\n$1$ Gio = $2^{30}$ o ; $1$ Tio = $2^{40}$ o. Les\nfabricants de disques durs utilisent souvent les\npréfixes décimaux (KO, MO, GO), ce qui crée des\ndifférences avec les kibi/mébi/gibioctets affichés par\nles systèmes."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "hierarchie-memoire"
      ],
      "title": "Hiérarchie mémoire",
      "statement": "Pourquoi a-t-on plusieurs **niveaux de mémoire** dans un\nordinateur (registres, cache, RAM, disque) ?",
      "options": [
        {
          "text": "Pour rendre l'ordinateur plus complexe",
          "correct": false,
          "feedback": "Erreur : la complexité n'est pas un objectif.\nC'est un compromis pratique.\n"
        },
        {
          "text": "Parce que les ingénieurs n'ont pas su choisir",
          "correct": false,
          "feedback": "Erreur : la hiérarchie est un choix délibéré, pas\nun défaut.\n"
        },
        {
          "text": "Pour rendre les programmes incompatibles",
          "correct": false,
          "feedback": "Erreur : la hiérarchie est invisible aux programmes\n(gérée par le matériel et le système d'exploitation).\n"
        },
        {
          "text": "Pour faire un compromis entre vitesse, capacité et coût",
          "correct": true,
          "feedback": "Bonne réponse : les registres et caches sont\nultra-rapides mais très petits et coûteux ; la RAM\nest rapide et de taille modérée ; le disque dur est\nlent mais énorme et bon marché. Combiner les trois\npermet d'avoir à la fois la performance et la\ncapacité.\n"
        }
      ],
      "explanation": "Si l'on devait faire toute la mémoire au niveau des\nregistres, on aurait moins d'un kilooctet à coût\nraisonnable. Si on faisait tout au niveau du disque,\nle processeur passerait son temps à attendre."
    },
    {
      "id": "q12",
      "difficulty": 2,
      "skills": [
        "cache"
      ],
      "title": "Mémoire cache",
      "statement": "À quoi sert la **mémoire cache** d'un processeur ?",
      "options": [
        {
          "text": "Compresser les données",
          "correct": false,
          "feedback": "Erreur : aucun rapport avec la compression.\n"
        },
        {
          "text": "Stocker les fichiers temporaires du système d'exploitation",
          "correct": false,
          "feedback": "Erreur : confusion possible avec le cache du\nnavigateur ou du système. Ici on parle du cache\nprocesseur (interne).\n"
        },
        {
          "text": "Sauvegarder les fichiers avant l'extinction",
          "correct": false,
          "feedback": "Erreur : la cache processeur est volatile, comme\nla RAM. Elle ne sert pas à la sauvegarde.\n"
        },
        {
          "text": "Garder les données récentes pour un accès plus rapide",
          "correct": true,
          "feedback": "Bonne réponse : la cache exploite le principe de\n**localité** (les programmes ont tendance à réutiliser\nles mêmes données ou des données voisines). En\ngardant les données chaudes dans une mémoire\nultra-rapide proche du processeur, on évite des\naccès lents à la RAM.\n"
        }
      ],
      "explanation": "Les processeurs modernes ont $3$ niveaux de cache (L1,\nL2, L3) avec des tailles et vitesses croissantes mais\nrestant bien plus rapides que la RAM. La gestion du\ncache est un domaine complexe qui influe énormément\nsur les performances."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "adressage"
      ],
      "title": "Adresse mémoire",
      "statement": "Qu'est-ce qu'une **adresse mémoire** ?",
      "options": [
        {
          "text": "Un identifiant unique pour chaque programme installé",
          "correct": false,
          "feedback": "Erreur : c'est plutôt un PID (Process ID). Une\nadresse mémoire est plus bas niveau.\n"
        },
        {
          "text": "Le nom d'un fichier sur le disque",
          "correct": false,
          "feedback": "Erreur : confusion avec un chemin. Une adresse\nmémoire est numérique.\n"
        },
        {
          "text": "Un numéro qui identifie un emplacement dans la mémoire",
          "correct": true,
          "feedback": "Bonne réponse : la mémoire est vue comme un\nimmense tableau d'octets, indexés de $0$ à\nquelques milliards. L'adresse identifie où lire ou\nécrire. Sur un processeur $64$ bits, les adresses\npeuvent aller jusqu'à $2^{64}$.\n"
        },
        {
          "text": "Le nom du processeur",
          "correct": false,
          "feedback": "Le nom commercial du\nprocesseur (par exemple\nIntel Core i$7$) est une\ndénomination, pas une\nadresse mémoire. Une\nadresse mémoire est un\nentier qui désigne un\nemplacement précis dans\nla RAM.\n"
        }
      ],
      "explanation": "En programmation, on manipule rarement les adresses\nmémoire directement (sauf en C/C++ avec les pointeurs).\nLe système d'exploitation gère la **mémoire virtuelle**\npour donner à chaque programme l'illusion d'avoir\ntoute la mémoire à lui."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "bits-architecture"
      ],
      "title": "Architecture 64 bits",
      "statement": "Que signifie qu'un processeur est en **architecture $64$ bits** ?",
      "options": [
        {
          "text": "Il a $64$ fils dans ses bus",
          "correct": false,
          "feedback": "Erreur : trop simpliste. Le « $64$ bits » concerne\nla taille des registres et des adresses, pas le\nnombre de fils physiques.\n"
        },
        {
          "text": "Il fait $64$ instructions par seconde",
          "correct": false,
          "feedback": "Erreur : il en fait des milliards par seconde, pas\n$64$.\n"
        },
        {
          "text": "Ses registres et adresses font $64$ bits",
          "correct": true,
          "feedback": "Bonne réponse : il peut traiter des entiers jusqu'à\n$2^{64} - 1$ en une seule instruction et adresser\njusqu'à $2^{64}$ octets de mémoire (soit\n$16$ exbioctets, largement plus que toute mémoire\nactuelle). Les processeurs modernes sont presque\ntous en $64$ bits.\n"
        },
        {
          "text": "Il possède exactement $64$ cœurs de calcul",
          "correct": false,
          "feedback": "Erreur : le nombre de cœurs et la taille des mots\nsont indépendants. Un processeur $64$ bits peut\navoir $1$ ou $128$ cœurs.\n"
        }
      ],
      "explanation": "Le passage à $64$ bits ($2003$ pour AMD, $2006$ pour\nApple Silicon) a permis de dépasser la barre des\n$4$ Gio adressables, qui posait problème avec les\ngrandes bases de données et le calcul scientifique."
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "coeurs"
      ],
      "title": "Multi-cœurs",
      "statement": "Qu'apporte un processeur **multi-cœurs** ?",
      "options": [
        {
          "text": "Il fonctionne entièrement sans système d'exploitation",
          "correct": false,
          "feedback": "Erreur : aucun rapport. Le SE est nécessaire pour\norchestrer les processus.\n"
        },
        {
          "text": "Il exécute plusieurs instructions en parallèle",
          "correct": true,
          "feedback": "Bonne réponse : avec $N$ cœurs, on peut exécuter\n$N$ programmes (ou $N$ threads) en vrai parallèle.\nC'est devenu indispensable car les fréquences\nd'horloge stagnent depuis les années $2005$.\n"
        },
        {
          "text": "Il consomme moins d'énergie que les anciens",
          "correct": false,
          "feedback": "Erreur : ce n'est pas la motivation principale du\nmulti-cœur (même si l'efficacité énergétique est un\navantage indirect).\n"
        },
        {
          "text": "Il a une mémoire vive plus grande",
          "correct": false,
          "feedback": "Erreur : la mémoire est externe et ne dépend pas\ndu nombre de cœurs.\n"
        }
      ],
      "explanation": "Le multi-cœur a redéfini la programmation depuis les\nannées $2000$. Beaucoup d'algorithmes ont dû être\nrepensés pour exploiter le parallélisme efficacement\n(problèmes de synchronisation, de partage de données)."
    },
    {
      "id": "q16",
      "difficulty": 2,
      "skills": [
        "langage-machine"
      ],
      "title": "Langage machine",
      "statement": "Qu'est-ce que le **langage machine** ?",
      "options": [
        {
          "text": "Un langage de programmation de haut niveau comme C ou Python",
          "correct": false,
          "feedback": "Erreur : C et Python sont des langages de **haut niveau**, qu'il faut traduire en langage machine\npour qu'ils s'exécutent.\n"
        },
        {
          "text": "Un protocole réseau",
          "correct": false,
          "feedback": "Un protocole réseau (TCP,\nHTTP, etc.) régit les échanges\nentre machines. Le langage\nmachine, lui, est purement\ninterne au processeur.\n"
        },
        {
          "text": "La représentation binaire des instructions du processeur",
          "correct": true,
          "feedback": "Bonne réponse : chaque instruction est codée en\nbinaire selon une grammaire précise (opcode,\nopérandes). Le processeur lit ces bits et les\nexécute. L'assembleur est une notation **symbolique**\ndu langage machine.\n"
        },
        {
          "text": "Un langage parlé par les robots",
          "correct": false,
          "feedback": "Le langage machine est\nun encodage binaire\ninterne au processeur,\npas une langue parlée.\nLes robots qui « parlent »\nutilisent la synthèse vocale,\nce qui est tout autre chose.\n"
        }
      ],
      "explanation": "Le langage machine est spécifique à chaque architecture\n(x$86$, ARM, RISC-V). Un programme en langage machine\npour x$86$ ne tourne pas tel quel sur un Mac M$1$\n(ARM), il faut le recompiler ou utiliser un\némulateur."
    },
    {
      "id": "q17",
      "difficulty": 2,
      "skills": [
        "pointeur",
        "programmation"
      ],
      "title": "Compteur ordinal",
      "statement": "Qu'est-ce que le **compteur ordinal** (ou compteur de\nprogramme, PC) du processeur ?",
      "options": [
        {
          "text": "Un compteur de bugs",
          "correct": false,
          "feedback": "Le compteur ordinal n'a\naucun rapport avec les\nbugs : c'est un registre\nmatériel qui pointe sur\nla prochaine instruction\nà exécuter.\n"
        },
        {
          "text": "Un identifiant unique de l'utilisateur",
          "correct": false,
          "feedback": "Le PC est interne au\nprocesseur et change à\nchaque cycle. Il n'identifie\nni l'utilisateur ni la session.\n"
        },
        {
          "text": "Le registre pointant la prochaine instruction",
          "correct": true,
          "feedback": "Bonne réponse : à chaque cycle, le processeur lit\nl'instruction à l'adresse pointée par le PC,\nl'exécute, puis incrémente le PC pour passer à la\nsuivante. Les sauts (`if`, boucles, fonctions)\nmodifient le PC autrement.\n"
        },
        {
          "text": "Un compteur qui mesure la durée totale du programme",
          "correct": false,
          "feedback": "Erreur : il ne mesure pas le temps. Il pointe sur\nune instruction.\n"
        }
      ],
      "explanation": "Le PC est central dans le fonctionnement séquentiel\ndes programmes. Comprendre le PC permet de comprendre\ncomment fonctionnent les boucles, conditions, et\nappels de fonction au niveau matériel."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "stockage"
      ],
      "title": "SSD vs disque dur",
      "statement": "Quelle est la différence principale entre un **SSD** et\nun **disque dur classique** (HDD) ?",
      "options": [
        {
          "text": "Le SSD utilise des disques magnétiques en rotation, le HDD des puces de mémoire",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse exact. Le HDD a des\nplateaux mécaniques, le SSD est purement\nélectronique.\n"
        },
        {
          "text": "Aucune différence fondamentale",
          "correct": false,
          "feedback": "Erreur : ils ont des technologies très différentes\navec des compromis différents.\n"
        },
        {
          "text": "Le SSD coûte moins cher au gigaoctet",
          "correct": false,
          "feedback": "Erreur : c'est plutôt l'inverse, même si l'écart se\nréduit. Pour de gros volumes, le HDD reste moins\ncher.\n"
        },
        {
          "text": "Le SSD utilise de la mémoire flash, le HDD des plateaux mécaniques",
          "correct": true,
          "feedback": "Bonne réponse : le SSD est beaucoup plus rapide\n(pas de temps d'accès mécanique), plus silencieux,\nplus résistant aux chocs. Mais il a une durée de\nvie limitée par le nombre d'écritures par cellule.\n"
        }
      ],
      "explanation": "Pour un usage usuel : SSD pour le système et les\napplications (rapidité critique), HDD pour les gros\nfichiers d'archive (économique). Les disques durs\nmécaniques tendent à disparaître hors usage de stockage\nmassif."
    },
    {
      "id": "q20",
      "difficulty": 2,
      "skills": [
        "ROM-RAM"
      ],
      "title": "ROM vs RAM",
      "statement": "Quelle est la différence entre **ROM** et **RAM** ?",
      "options": [
        {
          "text": "ROM concerne la mémoire externe (disque), RAM la mémoire interne",
          "correct": false,
          "feedback": "Erreur : les deux sont des mémoires internes,\nc'est leur volatilité qui les distingue.\n"
        },
        {
          "text": "La ROM est non volatile et fixe, la RAM volatile et modifiable",
          "correct": true,
          "feedback": "Bonne réponse : la ROM contient typiquement le\nfirmware ou BIOS, qui doit être conservé même\nquand l'ordinateur est éteint. La RAM est la zone\nde travail temporaire.\n"
        },
        {
          "text": "ROM est plus rapide que RAM",
          "correct": false,
          "feedback": "Erreur : la RAM est généralement plus rapide d'accès.\nLa ROM se distingue par sa **persistance** et sa\nnon-modifiabilité (dans sa version de base).\n"
        },
        {
          "text": "La ROM est généralement plus grande que la RAM",
          "correct": false,
          "feedback": "Erreur : c'est généralement l'inverse. La ROM est\nsouvent de petite taille (firmware), la RAM bien\nplus grande pour les programmes en cours.\n"
        }
      ],
      "explanation": "ROM = Read-Only Memory ; RAM = Random Access Memory.\nAujourd'hui, la « ROM » des ordinateurs est en réalité\nsouvent une mémoire flash, modifiable mais\nnon-volatile (firmware UEFI mis à jour par exemple)."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese"
      ],
      "title": "Évolution historique",
      "statement": "Lequel des énoncés suivants est **vrai** sur l'évolution\ndes architectures matérielles depuis $50$ ans ?",
      "options": [
        {
          "text": "La fréquence d'horloge des processeurs grand public a continué de doubler chaque année",
          "correct": false,
          "feedback": "Erreur : la fréquence stagne autour de $3$-$5$ GHz\ndepuis $2005$ environ. Le gain de performance vient\nd'autres techniques (multi-cœurs, parallélisme,\narchitecture).\n"
        },
        {
          "text": "Le nombre de transistors croît toujours, mais la performance par cœur stagne",
          "correct": true,
          "feedback": "Bonne réponse : la loi de Moore reste globalement\nvraie pour la densité, mais traduite différemment :\nplus de cœurs, plus de cache, plus d'unités\nspécialisées (GPU, NPU). La performance brute par\nfil d'exécution stagne depuis ~$2005$.\n"
        },
        {
          "text": "Les ordinateurs sont aujourd'hui aussi performants que dans les années $1970$",
          "correct": false,
          "feedback": "Erreur : la performance a augmenté de plusieurs\nordres de grandeur depuis les années $1970$.\n"
        },
        {
          "text": "Le modèle de von Neumann est totalement obsolète depuis longtemps",
          "correct": false,
          "feedback": "Erreur : le modèle de von Neumann reste la base de\ntous les ordinateurs modernes, même s'il est\nenrichi par de nombreuses optimisations.\n"
        }
      ],
      "explanation": "L'avenir s'oriente vers un retour à du calcul\nspécialisé : processeurs graphiques pour\nl'intelligence artificielle, processeurs\nneuronaux pour les téléphones, circuits logiques\nprogrammables dans les serveurs. À plus long\nterme, on attend l'arrivée à grande échelle du\ncalcul quantique et neuromorphique."
    },
    {
      "id": "q26",
      "difficulty": 1,
      "skills": [
        "peripheriques",
        "classification"
      ],
      "title": "Périphériques d'entrée/sortie",
      "statement": "Parmi les éléments suivants, lequel **n'est pas** un\npériphérique d'entrée/sortie ?",
      "options": [
        {
          "text": "L'imprimante",
          "correct": false,
          "feedback": "L'imprimante est un périphérique de sortie :\nelle reçoit des données de l'ordinateur pour\nproduire un document physique.\n"
        },
        {
          "text": "Le transistor",
          "correct": true,
          "feedback": "Bonne réponse : un transistor est un composant\nélectronique élémentaire utilisé pour fabriquer\ndes portes logiques au cœur du processeur. Il\nne sert pas à communiquer avec l'extérieur, il\nest interne au matériel.\n"
        },
        {
          "text": "Le clavier",
          "correct": false,
          "feedback": "Le clavier est un périphérique d'entrée :\nchaque touche enfoncée envoie un code à\nl'ordinateur.\n"
        },
        {
          "text": "La souris",
          "correct": false,
          "feedback": "La souris est bien un périphérique d'entrée :\nelle transmet à l'ordinateur la position du\ncurseur et les clics de l'utilisateur.\n"
        }
      ],
      "explanation": "Les périphériques d'entrée/sortie permettent à\nl'ordinateur de dialoguer avec l'utilisateur ou\navec d'autres machines. Un même appareil peut\nassurer les deux rôles : un disque dur (lecture\net écriture), un écran tactile (affichage et\nsaisie) ou une carte réseau (réception et envoi)."
    },
    {
      "id": "q27",
      "difficulty": 3,
      "skills": [
        "synthese",
        "performance"
      ],
      "title": "Comparer deux processeurs sur une tâche parallèle",
      "statement": "Deux processeurs sont proposés pour un travail de **rendu vidéo**,\ntâche qui se parallélise très bien :\nle processeur **A** est cadencé à $4$ GHz et possède $4$ cœurs ;\nle processeur **B** est cadencé à $3$ GHz et possède $8$ cœurs.\nLequel sera, en pratique, le plus performant sur cette tâche ?",
      "options": [
        {
          "text": "Le processeur B, car doubler les cœurs compense l'écart de fréquence sur une tâche parallèle",
          "correct": true,
          "feedback": "Bonne réponse : pour une tâche qui se parallélise bien,\nle débit total est approximativement proportionnel au\nproduit fréquence par nombre de cœurs.\nPour A on a $4 \\times 4 = 16$ unités de travail\npar seconde (en notation simplifiée), et pour B\n$3 \\times 8 = 24$. B l'emporte donc nettement.\n"
        },
        {
          "text": "Le processeur A, car une fréquence d'horloge plus élevée signifie qu'il exécute toujours plus d'instructions par seconde",
          "correct": false,
          "feedback": "Erreur : la fréquence d'horloge ne mesure que la cadence\nd'un seul cœur. Pour les charges parallèles, le nombre\nde cœurs est au moins aussi déterminant.\n"
        },
        {
          "text": "Le processeur A, car les processeurs à haute fréquence sont systématiquement les plus récents",
          "correct": false,
          "feedback": "Erreur : la fréquence d'horloge stagne depuis le milieu\ndes années $2000$. Un processeur à $3$ GHz peut être bien\nplus récent et performant qu'un autre à $4$ GHz.\n"
        },
        {
          "text": "Aucun des deux, car la performance d'un processeur ne dépend ni de la fréquence ni du nombre de cœurs",
          "correct": false,
          "feedback": "Erreur : ces deux paramètres sont des indicateurs réels\nde performance, simplement non suffisants à eux seuls\n(la taille des caches, l'architecture interne et le jeu\nd'instructions interviennent aussi).\n"
        }
      ],
      "explanation": "Sur une tâche très parallèle, le débit total se rapproche\ndu produit fréquence par nombre de cœurs ; sur une tâche\nséquentielle (qui n'utilise qu'un cœur), c'est la fréquence\nseule qui compte. Le choix d'un processeur dépend donc du\nprofil de la charge de travail visée."
    },
    {
      "id": "q28",
      "difficulty": 3,
      "skills": [
        "synthese",
        "loi-moore"
      ],
      "title": "Pourquoi la fréquence stagne",
      "statement": "Le nombre de transistors par puce ne cesse d'augmenter\nrégulièrement, mais la **fréquence d'horloge** des\nprocesseurs grand public a cessé d'augmenter significativement\ndepuis le milieu des années $2000$ (elle plafonne autour de\n$3$ à $5$ GHz). Quelle en est la cause principale ?",
      "options": [
        {
          "text": "La consommation et la chaleur croissent trop vite avec la fréquence pour être évacuées",
          "correct": true,
          "feedback": "Bonne réponse : la puissance dissipée par un circuit\naugmente très vite avec la fréquence. Au-delà d'un\ncertain seuil, la chaleur produite ne peut plus être\névacuée sans refroidissement extrême. Les fabricants\nont donc privilégié la multiplication des cœurs.\n"
        },
        {
          "text": "Les transistors ne sont plus utilisés dans les processeurs récents, qui reposent sur d'autres technologies",
          "correct": false,
          "feedback": "Erreur : les processeurs actuels sont toujours composés\nde milliards de transistors, simplement gravés plus\nfinement.\n"
        },
        {
          "text": "Les constructeurs se sont mis d'accord pour ne plus vendre de processeurs au-dessus de $5$ GHz, par souci de standardisation",
          "correct": false,
          "feedback": "Erreur : il n'existe aucun accord de ce type, la\ncontrainte est physique.\n"
        },
        {
          "text": "Les utilisateurs ne demandent plus de processeurs rapides depuis l'arrivée des smartphones",
          "correct": false,
          "feedback": "Erreur : la demande de performance n'a jamais cessé,\nla limite est technologique et non commerciale.\n"
        }
      ],
      "explanation": "Cette barrière physique a réorienté l'industrie vers le\n**parallélisme** (multi-cœurs, GPU, processeurs spécialisés)\npour continuer à exploiter l'augmentation du nombre de\ntransistors. C'est une illustration concrète des limites\nde la loi de Moore, qui décrit la densité d'intégration et\nnon la vitesse d'horloge."
    }
  ]
}