{
  "chapter": {
    "id": "systemes-exploitation",
    "level": "premiere",
    "theme": "Architectures",
    "title": "Systèmes d'exploitation",
    "description": "Rôle d'un système d'exploitation : gestion des\nprocessus, gestion de la mémoire, gestion des\nfichiers et des périphériques, rôle du noyau,\nprincipaux systèmes (Linux, Windows, macOS,\nAndroid, iOS).",
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "definition"
      ],
      "title": "Définition d'un système d'exploitation",
      "statement": "Qu'est-ce qu'un **système d'exploitation** ?",
      "options": [
        {
          "text": "Un type particulier de processeur",
          "correct": false,
          "feedback": "Un système d'exploitation est\nun logiciel ; le processeur\nest un composant matériel.\nLes deux notions sont\ndistinctes.\n"
        },
        {
          "text": "Une mémoire électronique de l'ordinateur",
          "correct": false,
          "feedback": "Un système d'exploitation est\nun logiciel, et non un\ncomposant matériel. La\nmémoire est une notion\ndistincte.\n"
        },
        {
          "text": "Le logiciel qui gère le matériel et sert les applications",
          "correct": true,
          "feedback": "C'est l'**intermédiaire**\nentre le matériel et les\napplications. Sans système\nd'exploitation, chaque\nprogramme devrait gérer\nlui-même chaque détail du\nmatériel.\n"
        },
        {
          "text": "Un logiciel d'application comme un traitement de texte",
          "correct": false,
          "feedback": "Un système d'exploitation est\nplus fondamental qu'une\napplication. C'est lui qui\nfait fonctionner les\napplications, et non\nl'inverse.\n"
        }
      ],
      "explanation": "Le terme anglais correspondant\nest *Operating System*. Quelques\nexemples courants : Linux,\nWindows, macOS, Android, iOS,\nChromeOS. Tout appareil\ninformatique en est doté."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "exemples"
      ],
      "title": "Exemples de systèmes d'exploitation",
      "statement": "Lequel des noms suivants\ndésigne un **système d'exploitation** ?",
      "options": [
        {
          "text": "Microsoft Word",
          "correct": false,
          "feedback": "Microsoft Word est une\napplication de traitement de\ntexte, qui fonctionne\nau-dessus d'un système\nd'exploitation, mais qui\nn'en est pas un.\n"
        },
        {
          "text": "Linux",
          "correct": true,
          "feedback": "Linux est un noyau de\nsystème d'exploitation\nlibre, à la base de\nnombreuses distributions\ncomme Ubuntu, Debian, Fedora,\nou encore Android.\n"
        },
        {
          "text": "Firefox",
          "correct": false,
          "feedback": "Firefox est un navigateur\nWeb, donc une application,\net non un système\nd'exploitation.\n"
        },
        {
          "text": "Excel",
          "correct": false,
          "feedback": "Excel est un tableur, donc\nune application, et non un\nsystème d'exploitation.\n"
        }
      ],
      "explanation": "On distingue plusieurs grandes\nfamilles de systèmes : les\nsystèmes de type Unix (Linux,\nmacOS, BSD), Windows, et les\nsystèmes mobiles (Android,\nreposant sur Linux ; iOS,\nreposant sur Darwin/Unix).\nTous partagent les mêmes\nfonctions de base."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "processus"
      ],
      "title": "Notion de processus",
      "statement": "Qu'est-ce qu'un **processus** ?",
      "options": [
        {
          "text": "Une fonction Python",
          "correct": false,
          "feedback": "Une fonction est une partie\nd'un programme, mais un\nprocessus correspond à\nl'exécution complète d'un\nprogramme, avec toutes ses\nressources.\n"
        },
        {
          "text": "Un fichier stocké sur le disque",
          "correct": false,
          "feedback": "Un fichier sur disque est\nstatique. Un processus, lui,\nest dynamique : c'est un\nprogramme effectivement en\ncours d'exécution.\n"
        },
        {
          "text": "Un programme en cours d'exécution",
          "correct": true,
          "feedback": "Un même programme peut être\nlancé plusieurs fois, et\nchaque lancement crée un\nnouveau processus\nindépendant.\n"
        },
        {
          "text": "Un type particulier de mémoire",
          "correct": false,
          "feedback": "Un processus utilise de la\nmémoire, mais il n'est pas\nlui-même un type de\nmémoire.\n"
        }
      ],
      "explanation": "Il faut bien distinguer la\nnotion de **programme** (un\nfichier sur le disque) de\ncelle de **processus** (une\ninstance en cours d'exécution).\nSous Linux, on utilise les\ncommandes `ps` ou `top` pour\nafficher la liste des\nprocessus ; sous Windows, on\nouvre le Gestionnaire des\ntâches."
    },
    {
      "id": "q04",
      "difficulty": 1,
      "skills": [
        "memoire"
      ],
      "title": "Gestion de la mémoire",
      "statement": "Pourquoi le système\nd'exploitation gère-t-il la\n**mémoire** ?",
      "options": [
        {
          "text": "Pour nettoyer la mémoire chaque jour automatiquement",
          "correct": false,
          "feedback": "Le système d'exploitation\nn'effectue aucun nettoyage\nrégulier programmé. Il\nalloue et libère la\nmémoire au fil des besoins\ndes processus.\n"
        },
        {
          "text": "Allouer la mémoire aux processus et les isoler",
          "correct": true,
          "feedback": "Sans isolation, un processus\npourrait lire ou écrire\ndans la mémoire d'un autre\nprocessus, ce qui créerait\ndes bugs et des failles de\nsécurité majeures. Le\nsystème d'exploitation\nempêche précisément cela.\n"
        },
        {
          "text": "Pour augmenter la capacité physique de la mémoire",
          "correct": false,
          "feedback": "La capacité physique de la\nmémoire est fixée par le\nmatériel. Le système\nd'exploitation peut\nsimuler une mémoire plus\ngrande grâce au mécanisme\nde mémoire virtuelle, mais\nil ne change pas la\ncapacité physique.\n"
        },
        {
          "text": "Pour rendre la mémoire plus rapide d'accès",
          "correct": false,
          "feedback": "La rapidité de la mémoire\nest une caractéristique\nmatérielle. Le rôle du\nsystème d'exploitation est\nd'organiser son\nutilisation, et non de\nmodifier ses performances\nintrinsèques.\n"
        }
      ],
      "explanation": "Le mécanisme clé est celui de\nla **mémoire virtuelle**.\nChaque processus voit un\nespace mémoire continu qui\nlui est propre, alors que cet\nespace est en réalité projeté\nsur la mémoire physique par\nle système d'exploitation\n(techniques de segmentation\nou de pagination)."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "fichiers"
      ],
      "title": "Système de fichiers",
      "statement": "Que permet un **système de fichiers** ?",
      "options": [
        {
          "text": "D'envoyer des courriels",
          "correct": false,
          "feedback": "L'envoi de courriels relève\ndes protocoles réseau\ncomme SMTP, et n'a aucun\nrapport avec un système\nde fichiers.\n"
        },
        {
          "text": "De compresser systématiquement les données stockées",
          "correct": false,
          "feedback": "Certains systèmes de\nfichiers peuvent\ncompresser les données,\nmais ce n'est pas leur\nfonction principale. Leur\nrôle premier est\nl'organisation.\n"
        },
        {
          "text": "De jouer de la musique",
          "correct": false,
          "feedback": "La lecture de musique est\nune fonction d'application,\nsans rapport avec un\nsystème de fichiers (qui\nse contente de stocker les\nfichiers concernés).\n"
        },
        {
          "text": "Organiser les données en fichiers et dossiers",
          "correct": true,
          "feedback": "Sans système de fichiers,\nun disque ne serait qu'une\nlongue suite d'octets. Le\nsystème de fichiers\nstructure ces octets en\nnoms, chemins, hiérarchies,\npermissions et dates.\n"
        }
      ],
      "explanation": "Quelques exemples de systèmes\nde fichiers : NTFS (Windows),\next4 (Linux), APFS (macOS),\nFAT32 (clés USB), exFAT (gros\nvolumes). Chacun possède ses\npropres caractéristiques,\ncomme la taille maximale ou\nla journalisation."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "peripheriques"
      ],
      "title": "Accès aux périphériques",
      "statement": "Comment un programme accède-t-il\nà un **périphérique** comme une\nimprimante, une caméra ou un\nmicrophone ?",
      "options": [
        {
          "text": "Directement, en parlant au matériel",
          "correct": false,
          "feedback": "Cette approche serait\nimpraticable : chaque\nprogramme devrait connaître\nle détail de chaque modèle\nde matériel existant.\n"
        },
        {
          "text": "En débranchant et en rebranchant l'appareil",
          "correct": false,
          "feedback": "Le débranchement n'a aucun\nrapport avec l'accès\nlogiciel à un\npériphérique.\n"
        },
        {
          "text": "Par l'intermédiaire d'une carte mémoire amovible",
          "correct": false,
          "feedback": "Une carte mémoire est\nelle-même un\npériphérique, mais elle\nn'a aucun rapport avec\nl'accès à d'autres\npériphériques.\n"
        },
        {
          "text": "Via le système d'exploitation et ses pilotes",
          "correct": true,
          "feedback": "Le pilote traduit les\nappels génériques du\nsystème d'exploitation en\ncommandes spécifiques au\nmatériel. C'est un\nmécanisme d'abstraction\ntrès puissant.\n"
        }
      ],
      "explanation": "Sous Unix, on adopte le\nprincipe « tout est fichier » :\nles périphériques sont\naccessibles par\nl'intermédiaire de fichiers\nspéciaux situés dans le\ndossier `/dev`, comme\n`/dev/sda` pour un disque ou\n`/dev/audio` pour la sortie\naudio."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "noyau"
      ],
      "title": "Noyau d'un système d'exploitation",
      "statement": "Qu'est-ce que le **noyau** d'un\nsystème d'exploitation ?",
      "options": [
        {
          "text": "Le centre du processeur",
          "correct": false,
          "feedback": "Cette description évoque\nplutôt le « cœur » d'un\nprocesseur multi-cœurs,\nnotion matérielle sans\nrapport avec le noyau d'un\nsystème d'exploitation.\n"
        },
        {
          "text": "Une partie du processeur",
          "correct": false,
          "feedback": "Le noyau est un logiciel,\net non un composant\nmatériel du processeur.\n"
        },
        {
          "text": "La partie centrale et privilégiée du système",
          "correct": true,
          "feedback": "Le noyau s'exécute en\n**mode noyau**, qui dispose\nde toutes les permissions.\nLes applications, elles,\ns'exécutent en **mode utilisateur**, avec des\npermissions limitées.\n"
        },
        {
          "text": "Une application graphique du bureau utilisateur",
          "correct": false,
          "feedback": "Le noyau n'a pas\nd'interface graphique.\nC'est au contraire un\ncomposant logiciel de bas\nniveau, sans interaction\ndirecte avec\nl'utilisateur.\n"
        }
      ],
      "explanation": "Linus Torvalds a créé le noyau\nLinux en $1991$. Une\ndistribution complète comme\nUbuntu ou Debian ajoute de\nnombreux outils autour de ce\nnoyau : interpréteur de\ncommandes, bibliothèques,\ngestionnaire de paquets,\ninterface graphique."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "multitache"
      ],
      "title": "Exécution multitâche",
      "statement": "Comment un système\nd'exploitation parvient-il à\nexécuter **plusieurs programmes en même temps** sur un\nprocesseur monocœur ?",
      "options": [
        {
          "text": "Cette exécution simultanée est techniquement impossible",
          "correct": false,
          "feedback": "C'est précisément ce que\nréalise tout système\nd'exploitation moderne,\ncomme expliqué dans la\nbonne réponse.\n"
        },
        {
          "text": "Par commutation rapide de contexte entre processus",
          "correct": true,
          "feedback": "On parle de\n**partage de temps**.\nAvec plusieurs cœurs, on\najoute en plus du\n**vrai** parallélisme.\n"
        },
        {
          "text": "En ignorant tous les programmes sauf un",
          "correct": false,
          "feedback": "Cette description correspond\nau mode monotâche, qui\nn'existe plus depuis\nlongtemps dans les systèmes\nd'exploitation modernes.\n"
        },
        {
          "text": "En les fusionnant en un seul",
          "correct": false,
          "feedback": "Aucune fusion n'est\nréalisée. Les programmes\nrestent indépendants ;\nc'est leur exécution qui\nest entrelacée.\n"
        }
      ],
      "explanation": "Vocabulaire associé :\nl'**ordonnanceur** est le\ncomposant du noyau qui décide\nquel processus s'exécute à\nchaque instant. Plusieurs\nstratégies existent : tour de\nrôle, priorité, etc."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "permissions"
      ],
      "title": "Permissions sur les fichiers",
      "statement": "Pourquoi un système\nd'exploitation gère-t-il des\n**permissions** sur les fichiers ?",
      "options": [
        {
          "text": "Pour ranger joliment les fichiers par couleur à l'écran",
          "correct": false,
          "feedback": "Les permissions sont une\nnotion de sécurité, sans\nrapport avec un\nquelconque classement\nesthétique.\n"
        },
        {
          "text": "Pour compresser les fichiers",
          "correct": false,
          "feedback": "La compression est une\nautre fonctionnalité,\ngérée séparément des\npermissions.\n"
        },
        {
          "text": "Pour gagner de l'espace de stockage",
          "correct": false,
          "feedback": "Les permissions occupent\nune place négligeable et\nn'ont aucun rapport avec\nl'économie d'espace.\n"
        },
        {
          "text": "Limiter qui peut lire, écrire ou exécuter un fichier",
          "correct": true,
          "feedback": "Cette gestion empêche un\nutilisateur d'accéder aux\nfichiers d'un autre, ou\nd'altérer les fichiers\nsystème. Elle est\nindispensable sur les\nserveurs partagés entre\nplusieurs utilisateurs.\n"
        }
      ],
      "explanation": "Sous Unix, la commande\n`chmod` modifie les\npermissions, et la commande\n`chown` change le\npropriétaire d'un fichier.\nUne notation classique des\npermissions est `rwxr-xr--`,\noù chaque triplet décrit les\ndroits du propriétaire, du\ngroupe et des autres\nutilisateurs."
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "exemple-mobile"
      ],
      "title": "Systèmes d'exploitation mobiles",
      "statement": "Quels sont aujourd'hui les\n**deux principaux systèmes d'exploitation mobiles** ?",
      "options": [
        {
          "text": "Windows et macOS",
          "correct": false,
          "feedback": "Ce sont des systèmes\nd'exploitation pour\nordinateurs de bureau,\npas pour téléphones\nmobiles.\n"
        },
        {
          "text": "Android et iOS",
          "correct": true,
          "feedback": "Android domine largement\nle marché (environ $70 \\%$\ndes parts de marché\nmondiales) ; il repose\nsur un noyau Linux. iOS,\nd'Apple, occupe environ\n$28 \\%$ du marché ; il\nrepose sur Darwin, lui-même\ndérivé d'Unix.\n"
        },
        {
          "text": "Symbian et BlackBerry OS",
          "correct": false,
          "feedback": "Ces systèmes ont quasi\ndisparu du marché\naujourd'hui. Ils étaient\ndominants dans les\nannées $2000$, mais ont\nété éclipsés par Android\net iOS.\n"
        },
        {
          "text": "Linux et BSD",
          "correct": false,
          "feedback": "Linux est le **noyau**\nd'Android, mais Android\nn'est pas qu'un Linux :\nc'est tout un système\nmobile bâti par-dessus.\nQuant à BSD, son usage\nsur mobile reste très\nmarginal.\n"
        }
      ],
      "explanation": "Android et iOS dominent\nquasiment tout le marché.\nTous deux dérivent\nd'ancêtres de la famille\nUnix, à travers des couches\nd'abstraction différentes."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "shell"
      ],
      "title": "Interpréteur de commandes",
      "statement": "Qu'est-ce qu'un **interpréteur de commandes** ?",
      "options": [
        {
          "text": "Une interface texte avec le système (Bash, PowerShell)",
          "correct": true,
          "feedback": "L'utilisateur tape des\ncommandes (`ls`, `cd`,\n`cp`, etc.) que\nl'interpréteur exécute.\nCet outil est très\npuissant pour\nl'automatisation, grâce\naux scripts.\n"
        },
        {
          "text": "Un protocole de communication réseau sécurisé",
          "correct": false,
          "feedback": "Cette description peut\névoquer le protocole SSH\n(*Secure Shell*), mais\nun interpréteur de\ncommandes est un\nprogramme local, et non\nun protocole réseau.\n"
        },
        {
          "text": "Un fichier exécutable quelconque",
          "correct": false,
          "feedback": "Un interpréteur de\ncommandes est bien un\nprogramme, mais c'est un\nprogramme particulier,\ndédié à l'interprétation\ndes commandes saisies\npar l'utilisateur.\n"
        },
        {
          "text": "Un type particulier de mémoire",
          "correct": false,
          "feedback": "Un interpréteur de\ncommandes est un\nprogramme, et non un\ntype de mémoire.\n"
        }
      ],
      "explanation": "Sous Linux ou macOS,\nl'interpréteur le plus\ncourant est Bash, suivi de\nZsh ou Fish. Sous Windows,\non dispose de l'invite de\ncommande historique, de\nPowerShell, ou du\nsous-système Linux pour\nWindows. Les scripts\nécrits dans ces\ninterpréteurs permettent\nd'automatiser de nombreuses\ntâches répétitives."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "logiciel-libre"
      ],
      "title": "Linux et logiciel libre",
      "statement": "Quelle particularité\ndistingue **Linux** des autres\ngrands systèmes\nd'exploitation ?",
      "options": [
        {
          "text": "Il est plus rapide à l'exécution",
          "correct": false,
          "feedback": "Cette affirmation est\nimprécise et n'est pas\nvraie de manière\nuniverselle. La\nperformance dépend\nfortement du contexte\nd'utilisation.\n"
        },
        {
          "text": "Il est libre et à code source ouvert",
          "correct": true,
          "feedback": "C'est une différence\nphilosophique majeure.\nLinux a été créé par\nLinus Torvalds en\n$1991$. Il est\naujourd'hui omniprésent :\nserveurs,\nsuper-calculateurs,\ntéléphones (via\nAndroid), objets\nconnectés.\n"
        },
        {
          "text": "Il fonctionne sans aucun matériel",
          "correct": false,
          "feedback": "Comme tout système\nd'exploitation, Linux\nrequiert du matériel\npour s'exécuter.\n"
        },
        {
          "text": "Il ne possède pas de noyau",
          "correct": false,
          "feedback": "Au contraire : Linux est\nprécisément un noyau de\nsystème d'exploitation.\n"
        }
      ],
      "explanation": "Le logiciel **libre** au\nsens des quatre libertés\nde la *Free Software\nFoundation* est plus\ncontraint que le simple\nlogiciel à code source\nouvert. Les deux notions\nse confondent souvent dans\nla pratique. Cette\nouverture favorise\nl'innovation collaborative."
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "boot"
      ],
      "title": "Démarrage d'un ordinateur",
      "statement": "Que se passe-t-il quand on\n**démarre** un ordinateur ?",
      "options": [
        {
          "text": "Rien de particulier",
          "correct": false,
          "feedback": "De nombreuses étapes\ns'enchaînent au\ndémarrage, comme\ndétaillé dans la\nbonne réponse.\n"
        },
        {
          "text": "Le système d'exploitation se met automatiquement à jour",
          "correct": false,
          "feedback": "La mise à jour n'est pas\nsystématique au\ndémarrage. Elle peut\nintervenir\nponctuellement, selon\nles configurations.\n"
        },
        {
          "text": "Le système d'exploitation s'éteint",
          "correct": false,
          "feedback": "Cette interprétation est\ncontradictoire avec\nl'idée même de\ndémarrage.\n"
        },
        {
          "text": "Le BIOS/UEFI initialise le matériel, puis charge le noyau",
          "correct": true,
          "feedback": "Cette séquence en chaîne\nva du BIOS au chargeur\nd'amorçage, puis au\nnoyau, à l'`init` et\nenfin à l'interpréteur\nde commandes ou à\nl'interface graphique.\nCette organisation\npermet une grande\nflexibilité (par\nexemple, le démarrage\nalternatif entre\nplusieurs systèmes).\n"
        }
      ],
      "explanation": "Quelques chargeurs\nd'amorçage connus : GRUB\n(sous Linux) ou le\ngestionnaire d'amorçage\nWindows. La technologie\nUEFI a remplacé l'ancien\nBIOS sur les machines\nmodernes."
    },
    {
      "id": "q18",
      "difficulty": 2,
      "skills": [
        "systeme-fichiers-arbre"
      ],
      "title": "Arborescence des fichiers",
      "statement": "Comment un **système de fichiers** est-il\ngénéralement organisé ?",
      "options": [
        {
          "text": "Sous forme d'une table à deux dimensions",
          "correct": false,
          "feedback": "Une organisation en\ntable serait beaucoup\ntrop limitée pour des\nmilliers ou des\nmillions de fichiers.\n"
        },
        {
          "text": "De manière aléatoire",
          "correct": false,
          "feedback": "Une organisation\naléatoire ne\npermettrait pas de\nretrouver un fichier\nde manière fiable.\n"
        },
        {
          "text": "Sous forme d'arbre (hiérarchie de dossiers)",
          "correct": true,
          "feedback": "Sous Linux et macOS,\non a une seule racine\nnotée `/`. Sous\nWindows, on a une\nracine par lecteur,\ncomme `C:\\` ou `D:\\`.\n"
        },
        {
          "text": "Sous forme d'une seule grande liste plate",
          "correct": false,
          "feedback": "Cette organisation\nserait très difficile\nà parcourir au-delà\nde quelques dizaines\nde fichiers.\n"
        }
      ],
      "explanation": "Vocabulaire associé : un\n**chemin absolu** part de\nla racine, par exemple\n`/home/alice/doc.txt`,\ntandis qu'un **chemin relatif** part du dossier\ncourant, par exemple\n`../doc.txt`."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "ressources-partage"
      ],
      "title": "Partage de ressources",
      "statement": "Pourquoi deux processus ne\npeuvent-ils pas écrire\n**simultanément** dans le\nmême fichier sans\nprécaution ?",
      "options": [
        {
          "text": "Les écritures se mélangent et corrompent les données",
          "correct": true,
          "feedback": "Ces bugs sont\ndifficiles à\nreproduire. Pour les\néviter, on utilise\ndes verrous (mutex,\nverrous de fichier)\nou des structures\natomiques.\n"
        },
        {
          "text": "Parce que le disque dur ne le permet pas",
          "correct": false,
          "feedback": "Techniquement, le\ndisque accepte les\nécritures\nsuccessives. Le\nproblème est plutôt\nd'ordre logique :\nles écritures peuvent\nse mélanger si elles\nne sont pas\ncoordonnées.\n"
        },
        {
          "text": "Parce que c'est formellement interdit par la loi française",
          "correct": false,
          "feedback": "Cette interprétation\njuridique n'a aucun\nrapport avec la\nquestion technique.\n"
        },
        {
          "text": "Aucun risque n'est associé à cette situation",
          "correct": false,
          "feedback": "Les risques de\ncorruption de\ndonnées sont au\ncontraire bien\nréels, comme expliqué\ndans la bonne\nréponse.\n"
        }
      ],
      "explanation": "La notion essentielle\nest la\n**synchronisation** :\nlorsque plusieurs\nprocessus ou plusieurs\nfils d'exécution\naccèdent à une ressource\npartagée, il faut\nsérialiser les accès\ncritiques pour garantir\nla cohérence."
    },
    {
      "id": "q23",
      "difficulty": 3,
      "skills": [
        "permissions-unix"
      ],
      "title": "Permissions sous Unix",
      "statement": "Sous Unix, que signifie\nla chaîne de permissions\n`rwxr-xr--` ?",
      "options": [
        {
          "text": "rwx pour les autres, r-x pour le groupe, r-- pour le propriétaire",
          "correct": false,
          "feedback": "Erreur : l'ordre de lecture est\npropriétaire, groupe, autres. Le premier\ntriplet `rwx` concerne le propriétaire, le\ndernier `r--` les autres utilisateurs.\n"
        },
        {
          "text": "rwx pour le propriétaire, r-x pour le groupe, r-- pour les autres",
          "correct": true,
          "feedback": "La chaîne se lit en\ntrois triplets, qui\ncorrespondent aux\ntrois catégories\nd'utilisateurs. La\nnotation octale\néquivalente est\n$754$ ($4$ pour la\nlecture, $2$ pour\nl'écriture, $1$ pour\nl'exécution).\n"
        },
        {
          "text": "rwx pour le propriétaire, r-x pour les autres, r-- pour le groupe",
          "correct": false,
          "feedback": "Erreur : le deuxième triplet (`r-x`) est\ncelui du **groupe**, le troisième (`r--`)\ncelui des autres utilisateurs. Ici les\nautres ne peuvent pas exécuter le fichier.\n"
        },
        {
          "text": "r pour le propriétaire, w pour le groupe, x pour les autres",
          "correct": false,
          "feedback": "Erreur : la chaîne ne se lit pas caractère\npar caractère mais par **triplets** de\ntrois caractères (`rwx`, `r-x`, `r--`), un\npar catégorie d'utilisateurs.\n"
        }
      ],
      "explanation": "La commande `chmod`\nmodifie les permissions :\n`chmod 755 fichier` ou\n`chmod u+x fichier` pour\najouter le droit\nd'exécution au\npropriétaire. Cette\ncommande est très\nutilisée dans la\npratique."
    },
    {
      "id": "q24",
      "difficulty": 3,
      "skills": [
        "securite-isolation"
      ],
      "title": "Isolation des processus",
      "statement": "Pourquoi l'**isolation**\ndes processus est-elle\ncruciale pour la sécurité ?",
      "options": [
        {
          "text": "Pour faciliter la copie de fichiers",
          "correct": false,
          "feedback": "C'est plutôt\nl'inverse :\nl'isolation rend la\ncopie entre\nprocessus plus\ndélicate, car elle\nempêche l'accès\ndirect.\n"
        },
        {
          "text": "Empêcher un programme d'atteindre la mémoire des autres",
          "correct": true,
          "feedback": "Si un processus de\nnavigation\ncompromis pouvait\nlire les mots de\npasse d'autres\napplications, ce\nserait\ncatastrophique. Le\nsystème\nd'exploitation\nassure cette\nisolation grâce à\nla mémoire\nvirtuelle, aux\npermissions, aux\nespaces de noms et\naux conteneurs.\n"
        },
        {
          "text": "Pour rendre les programmes plus rapides",
          "correct": false,
          "feedback": "La rapidité n'est\npas le but de\nl'isolation. Au\ncontraire, isoler\nles processus a un\nléger coût en\nperformance.\n"
        },
        {
          "text": "Pour économiser de l'électricité",
          "correct": false,
          "feedback": "La consommation\nélectrique n'est\npas reliée à\nl'isolation.\n"
        }
      ],
      "explanation": "Plusieurs couches\nd'isolation existent :\nla mémoire virtuelle, les\npermissions sur les\nfichiers, les espaces de\nnoms, les bacs à sable\n(utilisés par exemple\ndans les navigateurs),\nles conteneurs Docker et\nles machines virtuelles."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese"
      ],
      "title": "Synthèse",
      "statement": "Parmi les affirmations\nsuivantes sur les\nsystèmes d'exploitation,\nlaquelle est **fausse** ?",
      "options": [
        {
          "text": "Le rôle d'un système d'exploitation est de gérer les processus, la mémoire, les fichiers et les périphériques",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte. Ce sont\nprécisément les\nmissions principales\nd'un système\nd'exploitation.\n"
        },
        {
          "text": "Une application accède directement au matériel sans passer par le système d'exploitation",
          "correct": true,
          "feedback": "Cette affirmation est\nfausse (donc c'est la\nbonne réponse). C'est\nprécisément l'inverse :\ntoutes les\napplications passent\npar le système\nd'exploitation, via\nles appels système,\npour accéder au\nmatériel. Cela\ngarantit l'isolation\net la sécurité de\nl'ensemble.\n"
        },
        {
          "text": "La virtualisation permet d'exécuter plusieurs systèmes d'exploitation sur une même machine physique",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte. C'est l'une\ndes technologies\nfondamentales de\nl'informatique en\nnuage actuelle.\n"
        },
        {
          "text": "Linux est un noyau de système d'exploitation libre",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte. Linux a\nété créé par Linus\nTorvalds en $1991$\net est diffusé sous\nlicence GPL.\n"
        }
      ],
      "explanation": "Une maxime architecturale :\n« tout passe par le\nsystème d'exploitation ».\nCe principe d'indirection\nest ce qui garantit la\nsécurité, la portabilité\net la modularité des\nprogrammes."
    },
    {
      "id": "q26",
      "difficulty": 2,
      "skills": [
        "mode-noyau",
        "mode-utilisateur",
        "securite"
      ],
      "title": "Mode utilisateur et mode noyau",
      "statement": "Un processeur moderne distingue deux modes d'exécution :\nle **mode utilisateur** et le **mode noyau**. Quelle est\nla différence essentielle entre les deux ?",
      "options": [
        {
          "text": "Le mode noyau accède à tout, le mode utilisateur est restreint",
          "correct": true,
          "feedback": "Bonne réponse : le mode noyau donne au système\nd'exploitation un contrôle total sur la machine\n(mémoire, processeur, périphériques). Le mode\nutilisateur, au contraire, isole chaque application\ndans une « bulle » contrôlée, ce qui empêche un\nprogramme défaillant d'endommager le système ou\nd'autres programmes.\n"
        },
        {
          "text": "Le mode noyau ne fonctionne que sur Linux",
          "correct": false,
          "feedback": "Erreur : la distinction utilisateur/noyau existe sur\ntous les systèmes d'exploitation modernes (Linux,\nWindows, macOS, BSD). C'est une caractéristique du\nprocesseur, pas du système d'exploitation.\n"
        },
        {
          "text": "Le mode utilisateur n'est utilisé que pour lancer des jeux vidéo",
          "correct": false,
          "feedback": "Erreur : tous les programmes ordinaires (navigateur,\ntraitement de texte, console Python) tournent en\nmode utilisateur. Le mode noyau est réservé au\nsystème d'exploitation lui-même.\n"
        },
        {
          "text": "Le mode noyau est plus rapide que le mode utilisateur",
          "correct": false,
          "feedback": "Erreur : la différence ne tient pas à la vitesse,\nmais au niveau de privilèges. Les mêmes instructions\ns'exécutent à la même cadence, quel que soit le\nmode.\n"
        }
      ],
      "explanation": "Cette séparation des privilèges est l'un des piliers\nde la sécurité moderne. Elle empêche par exemple\nqu'un navigateur compromis prenne le contrôle de la\ncarte réseau ou efface les fichiers d'autres\nutilisateurs. Le passage du mode utilisateur au mode\nnoyau passe par les **appels système**, contrôlés\npar le noyau."
    },
    {
      "id": "q27",
      "difficulty": 2,
      "skills": [
        "couches",
        "architecture-logicielle"
      ],
      "title": "Couches logicielles d'un système",
      "statement": "Dans quel ordre se superposent les couches logicielles\nd'un système informatique typique, du plus bas niveau\n(matériel) au plus haut niveau (utilisateur) ?",
      "options": [
        {
          "text": "Matériel, applications utilisateur, bibliothèques, noyau",
          "correct": false,
          "feedback": "Erreur : le noyau ne se trouve pas au-dessus des\napplications. Il en est au contraire le support :\nil s'intercale entre le matériel et tout le reste.\n"
        },
        {
          "text": "Matériel, noyau, bibliothèques, applications",
          "correct": true,
          "feedback": "Bonne réponse : c'est le modèle en couches usuel.\nLe noyau dialogue directement avec le matériel ;\nles bibliothèques s'appuient sur le noyau via les\nappels système ; les applications appellent les\nbibliothèques. Chaque couche masque la complexité\nde la précédente.\n"
        },
        {
          "text": "Noyau, matériel, applications utilisateur, bibliothèques",
          "correct": false,
          "feedback": "Erreur : le noyau ne se situe pas en dessous du\nmatériel. C'est l'inverse : le matériel est la\ncouche la plus basse, le noyau s'exécute dessus.\n"
        },
        {
          "text": "Applications, noyau, matériel, bibliothèques",
          "correct": false,
          "feedback": "Erreur : l'ordre n'est pas cohérent. Les\napplications utilisateur sont la couche la plus\nhaute, et les bibliothèques système se situent\nentre le noyau et les applications.\n"
        }
      ],
      "explanation": "Cette organisation en couches (parfois appelée\n« pile logicielle ») est ce qui permet aux mêmes\napplications de tourner sur des matériels différents :\nseules les couches inférieures sont à adapter. Elle\npermet aussi à plusieurs applications de partager les\nressources sans se gêner."
    },
    {
      "id": "q29",
      "difficulty": 2,
      "skills": [
        "pilotes",
        "peripheriques"
      ],
      "title": "Rôle d'un pilote",
      "statement": "Que désigne-t-on par **pilote** (en anglais *driver*)\ndans un système d'exploitation ?",
      "options": [
        {
          "text": "Un programme qui exécute les calculs scientifiques en parallèle",
          "correct": false,
          "feedback": "Erreur : ce serait plutôt une bibliothèque de\ncalcul (BLAS, NumPy, etc.). Un pilote a une mission\ntrès différente : faire le lien entre le système et\nun périphérique.\n"
        },
        {
          "text": "Un programme reliant le système à un périphérique",
          "correct": true,
          "feedback": "Bonne réponse : chaque modèle de périphérique\n(carte graphique, imprimante, capteur) parle un\ndialecte spécifique. Le pilote traduit les\nrequêtes générales du noyau dans ce dialecte\nparticulier. Sans pilote, le matériel n'est pas\nreconnu.\n"
        },
        {
          "text": "La cadence d'horloge du processeur",
          "correct": false,
          "feedback": "Erreur : la cadence d'horloge est une grandeur\nphysique mesurée en hertz. Un pilote est un\nlogiciel, pas une fréquence.\n"
        },
        {
          "text": "La personne qui utilise l'ordinateur",
          "correct": false,
          "feedback": "Erreur : en informatique, le terme « pilote »\n(*driver*) désigne un module logiciel, pas une\npersonne. La personne qui utilise l'ordinateur\nest appelée « utilisateur ».\n"
        }
      ],
      "explanation": "Quand on branche une nouvelle imprimante ou une\nnouvelle carte graphique, il est parfois nécessaire\nd'installer un pilote dédié. Les systèmes modernes\nembarquent des centaines de pilotes génériques pour\nreconnaître automatiquement la plupart des\npériphériques courants."
    },
    {
      "id": "q28",
      "difficulty": 3,
      "skills": [
        "synthese",
        "role-se"
      ],
      "title": "Pourquoi un système d'exploitation",
      "statement": "Pourquoi est-il nécessaire qu'un **système d'exploitation**\ns'interpose entre les programmes utilisateurs et le matériel,\nplutôt que de laisser chaque programme accéder directement\nau processeur, à la mémoire et aux périphériques ?",
      "options": [
        {
          "text": "Mutualiser les ressources, isoler les programmes, abstraire le matériel",
          "correct": true,
          "feedback": "Bonne réponse : un système d'exploitation moderne\nremplit trois fonctions complémentaires. Il **partage**\nles ressources rares (processeur, mémoire, accès\ndisque) entre les programmes ; il **isole** chaque\nprogramme pour qu'un bug ou un acte malveillant ne\ncontamine pas les autres ; il **abstrait** le matériel\nen proposant une interface uniforme (fichiers,\nprocessus, sockets) qui marche sur des machines très\ndifférentes.\n"
        },
        {
          "text": "Pour ralentir volontairement les programmes et leur laisser le temps de se synchroniser entre eux",
          "correct": false,
          "feedback": "Erreur : le système d'exploitation n'est pas un\nralentisseur. Il introduit un léger surcoût, mais\nson objectif est au contraire d'ordonnancer\nefficacement les tâches.\n"
        },
        {
          "text": "Pour empêcher les programmes d'utiliser les périphériques d'entrée et de sortie",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. Le système d'exploitation\nrend possible l'accès aux périphériques en exposant\ndes appels système ; sans lui, chaque programme\ndevrait piloter directement le matériel.\n"
        },
        {
          "text": "Pour traduire automatiquement chaque programme dans un autre langage de programmation avant son exécution",
          "correct": false,
          "feedback": "Erreur : la traduction de code source est le rôle\nd'un compilateur ou d'un interpréteur, pas du\nsystème d'exploitation.\n"
        }
      ],
      "explanation": "Sans système d'exploitation, deux programmes lancés\nsimultanément se disputeraient le processeur, écriraient\nn'importe où en mémoire et entreraient en conflit sur les\npériphériques. C'est ce qui se passait sur les premiers\nmicro-ordinateurs des années $1970$, où un seul programme\ntournait à la fois."
    },
    {
      "id": "q30",
      "difficulty": 3,
      "skills": [
        "synthese",
        "memoire-virtuelle",
        "swap"
      ],
      "title": "Saturation de la mémoire vive",
      "statement": "Sur un système d'exploitation moderne (Linux, macOS,\nWindows), que se passe-t-il généralement lorsqu'un\nprogramme demande **plus de mémoire vive que la RAM physiquement disponible** ?",
      "options": [
        {
          "text": "Le système utilise le disque (swap) comme extension de la RAM, mais le programme ralentit",
          "correct": true,
          "feedback": "Bonne réponse : la **mémoire virtuelle** permet au\nsystème d'exploitation de présenter à chaque\nprogramme un espace d'adressage plus grand que la\nRAM physique, en déplaçant les pages les moins\nutilisées vers le disque. Le programme continue,\nmais le ralentissement peut être très important.\n"
        },
        {
          "text": "La RAM physique double automatiquement sa capacité tant que le programme en a besoin",
          "correct": false,
          "feedback": "Erreur : la capacité matérielle de la RAM est\nfixée. Aucun mécanisme logiciel ne peut ajouter de\nla mémoire physique en cours d'exécution.\n"
        },
        {
          "text": "Le système d'exploitation supprime sans avertissement les autres programmes pour libérer de la place",
          "correct": false,
          "feedback": "Erreur : le système ne supprime pas les programmes\nde manière arbitraire. Si la pression mémoire devient\nextrême, certains noyaux peuvent recourir à un\nmécanisme de dernier recours (par exemple le\n*OOM killer* de Linux), mais ce n'est pas le\ncomportement habituel.\n"
        },
        {
          "text": "Le programme s'arrête immédiatement avec une erreur, sans aucun mécanisme intermédiaire",
          "correct": false,
          "feedback": "Erreur : l'arrêt n'est qu'un dernier recours, après\nque les mécanismes de mémoire virtuelle ont été\ndébordés.\n"
        }
      ],
      "explanation": "La mémoire virtuelle est l'une des grandes idées des\nsystèmes d'exploitation modernes. Elle isole chaque\nprogramme dans son propre espace d'adressage et permet\nd'utiliser plus de mémoire qu'il n'y a de RAM. La\ncontrepartie est claire : un accès au disque est de\nl'ordre de $1000$ à $100\\,000$ fois plus lent qu'un\naccès en RAM, d'où le fameux ressenti de « machine\nqui rame »."
    }
  ]
}