Files
1ereNSI/architecture/os/emulateurs.ipynb

506 lines
17 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "cell-0",
"metadata": {},
"source": [
"# De la surface au noyau — Explorer un système d'exploitation"
]
},
{
"cell_type": "markdown",
"id": "cell-1",
"metadata": {},
"source": [
"Durée : 1h30<br>\n",
"Objectifs : Comprendre ce qu'est un système d'exploitation, distinguer interface graphique et ligne de commande, découvrir la notion de couche logicielle<br>\n",
"Niveau : Première NSI<br>\n",
"Prérequis : Aucun<br>\n",
"<br>\n",
"Systèmes mis en œuvre : PC / Machine personnelle<br>\n",
"Logiciels utilisés : Navigateur web (Firefox ou Chrome recommandé)"
]
},
{
"cell_type": "markdown",
"id": "cell-2",
"metadata": {},
"source": [
"## Type de document\n",
"\n",
"Document d'accompagnement de l'activité"
]
},
{
"cell_type": "markdown",
"id": "cell-3",
"metadata": {},
"source": [
"## Programme\n",
"\n",
"Découverte du rôle d'un système d'exploitation à travers l'exploration d'environnements historiques et contemporains, en passant de l'interface graphique à la ligne de commande."
]
},
{
"cell_type": "markdown",
"id": "cell-4",
"metadata": {},
"source": [
"## Table des matières\n",
"\n",
"1. Introduction — L'OS, le GUI, la CLI\n",
"2. Couche 3 — Mac System 7 (1991)\n",
"3. Couche 2 — Windows 2000\n",
"4. Couche 1 — La ligne de commande (WebVM)\n",
"5. Synthèse\n",
"6. Bonus — Terminus"
]
},
{
"cell_type": "markdown",
"id": "cell-5",
"metadata": {},
"source": [
"---\n",
"\n",
"## 1. Introduction — L'OS, le GUI, la CLI"
]
},
{
"cell_type": "markdown",
"id": "cell-6",
"metadata": {},
"source": [
"### Le système d'exploitation (OS)\n",
"\n",
"Ton ordinateur est composé de matériel : processeur, mémoire, disque dur, carte réseau... Ce matériel ne sait pas, par lui-même, afficher une fenêtre ou lire un fichier.\n",
"\n",
"C'est le rôle du **système d'exploitation** (en anglais *Operating System*, abrégé **OS**) : c'est un logiciel qui fait l'intermédiaire entre le matériel et toi. Sans lui, ton ordinateur est une boîte vide.\n",
"\n",
"Exemples d'OS que tu connais probablement :\n",
"<li>Windows (Microsoft)\n",
"<li>macOS (Apple)\n",
"<li>Linux (libre et gratuit, dans de nombreuses variantes)\n",
"<li>Android et iOS (sur téléphone)"
]
},
{
"cell_type": "markdown",
"id": "cell-7",
"metadata": {},
"source": [
"### GUI et CLI : deux façons de parler à l'OS\n",
"\n",
"Il existe deux grandes façons d'interagir avec un système d'exploitation :\n",
"\n",
"**Le GUI** *(Graphical User Interface — Interface Utilisateur Graphique)*\n",
"Tu utilises la souris, tu cliques sur des icônes, tu ouvres des fenêtres. C'est l'interface que tu connais sur Windows ou macOS au quotidien.\n",
"\n",
"**La CLI** *(Command Line Interface — Interface en Ligne de Commande)*\n",
"Tu tapes du texte, l'OS répond en texte. Pas d'icônes, pas de souris obligatoire. C'est ce qu'utilisent les développeur·euses, les administrateur·rices système, et... les hackers dans les films.\n",
"\n",
"Ces deux interfaces ne sont pas opposées : le GUI est construit *par-dessus* la CLI, qui est elle-même construite *par-dessus* le matériel.\n",
"On peut représenter ça comme des couches :\n",
"\n",
"```\n",
"┌─────────────────────────┐\n",
"│ Toi (l'utilisateur) │\n",
"├─────────────────────────┤\n",
"│ GUI (interface visuelle)│ ← Couche 3\n",
"├─────────────────────────┤\n",
"│ CLI (ligne de commande) │ ← Couche 2\n",
"├─────────────────────────┤\n",
"│ OS (noyau / kernel) │ ← Couche 1\n",
"├─────────────────────────┤\n",
"│ Matériel (hardware) │\n",
"└─────────────────────────┘\n",
"```\n",
"\n",
"Dans cette séance, tu vas descendre ces couches une par une, en partant de l'interface la plus \"habillée\" jusqu'au terminal brut."
]
},
{
"cell_type": "markdown",
"id": "cell-8",
"metadata": {},
"source": [
"#### Question préliminaire\n",
"\n",
"Quand tu double-cliques sur un dossier pour l'ouvrir, qui \"fait le travail\" selon toi : l'icône elle-même, ou quelque chose en dessous ? Explique en une phrase.\n",
"\n",
"*(Pour répondre, modifie la couleur du texte dans la cellule suivante avec la balise HTML `<span style=\"color:blue\">ta réponse</span>`)*"
]
},
{
"cell_type": "markdown",
"id": "cell-9",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-10",
"metadata": {},
"source": [
"---\n",
"\n",
"## 2. Couche 3 — Mac System 7 (1991)"
]
},
{
"cell_type": "markdown",
"id": "cell-11",
"metadata": {},
"source": [
"Tu vas explorer **Mac System 7**, sorti en 1991 — l'un des premiers systèmes grand public à proposer une interface graphique complète.\n",
"\n",
"Ouvre ton navigateur et rends-toi à cette adresse : <https://system7.app>\n",
"\n",
"Le système se lance directement dans ton navigateur, sans installation. Laisse-lui quelques secondes pour démarrer."
]
},
{
"cell_type": "markdown",
"id": "cell-12",
"metadata": {},
"source": [
"### Missions\n",
"\n",
"<li><strong>Mission 1</strong> : Sur le bureau, ouvre le <em>Finder</em> (le gestionnaire de fichiers). Crée un nouveau dossier et donne-lui ton prénom. (Indice : regarde dans les menus en haut.)\n",
"<li><strong>Mission 2</strong> : Dans le menu <strong>Pomme</strong> (🍎 en haut à gauche), trouve les informations sur cet ordinateur. Qu'est-ce qui y est indiqué ?\n",
"<li><strong>Mission 3</strong> : Essaie de trouver une application installée sur ce système. Comment tu t'y prends, sachant qu'il n'y a pas de barre de recherche ?"
]
},
{
"cell_type": "markdown",
"id": "cell-13",
"metadata": {},
"source": [
"#### Question 1\n",
"Décris en une phrase ce que tu vois sur l'écran. Qu'est-ce qui te permet de naviguer dans ce système ?"
]
},
{
"cell_type": "markdown",
"id": "cell-14",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-15",
"metadata": {},
"source": [
"#### Question 2\n",
"Qu'est-ce que tu ne peux **pas** faire facilement ici, alors que tu le fais sans réfléchir sur ton ordinateur habituel ?"
]
},
{
"cell_type": "markdown",
"id": "cell-16",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-17",
"metadata": {},
"source": [
"#### Question 3\n",
"Qui s'occupe d'afficher les icônes, les fenêtres et les menus selon toi ? Est-ce que c'est le matériel directement, ou autre chose ?"
]
},
{
"cell_type": "markdown",
"id": "cell-18",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-19",
"metadata": {},
"source": [
"---\n",
"\n",
"## 3. Couche 2 — Windows 2000"
]
},
{
"cell_type": "markdown",
"id": "cell-20",
"metadata": {},
"source": [
"On avance dans le temps. **Windows 2000** est sorti en... 2000. Il représente une étape importante dans l'histoire des OS Microsoft : plus stable, plus proche des systèmes professionnels modernes.\n",
"\n",
"Ouvre cette adresse dans ton navigateur : <https://bellard.org/jslinux/vm.html?url=win2k.cfg&mem=192&graphic=1&w=1024&h=768>\n",
"\n",
"⚠️ Le démarrage peut prendre **1 à 2 minutes** — c'est normal, une vraie machine virtuelle se lance dans ton navigateur. Sois patient·e !"
]
},
{
"cell_type": "markdown",
"id": "cell-21",
"metadata": {},
"source": "### Missions\n\n<li><strong>Mission 1</strong> : Crée un nouveau dossier sur le bureau, comme tu l'as fait sur System 7. La méthode est-elle identique ?\n<li><strong>Mission 2</strong> : Ouvre le <em>Panneau de configuration</em> (via le menu Démarrer), puis clique sur <em>Système</em>. Observe les informations sur le matériel affichées.\n<li><strong>Mission 3</strong> : Ouvre le Gestionnaire des tâches via le menu <strong>Démarrer → Exécuter</strong>, tape <code>taskmgr</code> puis Entrée. Regarde l'onglet <em>Processus</em> : que vois-tu tourner en arrière-plan ?\n\n> ⚠️ **Note :** Le raccourci <strong>Ctrl+Alt+Suppr</strong> est souvent intercepté par ton propre ordinateur avant d'atteindre la machine virtuelle. Passe par <em>Démarrer → Exécuter → taskmgr</em> pour contourner ce problème."
},
{
"cell_type": "markdown",
"id": "cell-22",
"metadata": {},
"source": [
"#### Question 4\n",
"Compare avec System 7 : qu'est-ce qui a **changé** dans l'interface ? Qu'est-ce qui est resté **pareil dans le principe** ?"
]
},
{
"cell_type": "markdown",
"id": "cell-23",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-24",
"metadata": {},
"source": [
"#### Question 5\n",
"Le Panneau de configuration te montre des informations sur le matériel (processeur, mémoire...). Qui fait le lien entre ces informations et le matériel physique selon toi ?"
]
},
{
"cell_type": "markdown",
"id": "cell-25",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-26",
"metadata": {},
"source": [
"#### Question 6\n",
"Dans le Gestionnaire des tâches, des dizaines de processus tournent sans que tu l'aies demandé. À quoi ça sert selon toi ? Qui les a lancés ?"
]
},
{
"cell_type": "markdown",
"id": "cell-27",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-28",
"metadata": {},
"source": [
"---\n",
"\n",
"## 4. Couche 1 — La ligne de commande (WebVM)"
]
},
{
"cell_type": "markdown",
"id": "cell-29",
"metadata": {},
"source": "Tu arrives maintenant à la couche la plus proche du système : **la ligne de commande**.\n\nPlus d'icônes, plus de fenêtres. Tu communiques avec l'OS en tapant du texte, et l'OS te répond en texte.\n\nOuvre cette adresse : <https://webvm.io>\n\nUne machine virtuelle Linux se lance entièrement dans ton navigateur. Tu obtiens un **terminal** — c'est-à-dire une interface en ligne de commande directement connectée à un OS Linux.\n\n> 💡 **Petit aparté tech :** WebVM utilise **WebAssembly**, une technologie qui permet à un navigateur web d'exécuter du code très rapidement — assez pour faire tourner un vrai système Linux. Ton navigateur devient une machine à part entière.\n\n*(Si le chargement est lent, recharge la page une fois.)*"
},
{
"cell_type": "markdown",
"id": "cell-30",
"metadata": {},
"source": "### Missions\n\n<li><strong>Mission 1</strong> : Tape <code>ls</code> puis appuie sur Entrée. Que se passe-t-il ?\n<li><strong>Mission 2</strong> : Tape <code>pwd</code> puis Entrée. Qu'est-ce que cette commande t'indique ?\n<li><strong>Mission 3</strong> : Tape <code>mkdir tonprenom</code> (remplace <em>tonprenom</em> par ton prénom, sans espace ni accent). Puis refais un <code>ls</code>. Que remarques-tu ?\n<li><strong>Mission 4</strong> : Tape <code>uname -a</code> et observe le résultat. Reconnais-tu certains mots ?\n<li><strong>Mission 5</strong> : Tape <code>ls /</code> (avec un espace puis un slash). Tu vois la racine du système de fichiers Linux."
},
{
"cell_type": "markdown",
"id": "cell-31",
"metadata": {},
"source": "#### Question 7\nCompare la Mission 3 ici avec la Mission 1 sur System 7 et Windows 2000 : tu as créé un dossier dans les trois cas.\n\nDans un GUI, on **voit** le résultat avant d'agir (les icônes, les menus sont là). En CLI, on **conçoit** l'action (on écrit la commande) avant de voir le résultat.\n\nQu'est-ce que la CLI **montre** que le GUI **cachait** ? Qu'est-ce que tu trouves plus clair, et qu'est-ce que tu trouves plus difficile ?"
},
{
"cell_type": "markdown",
"id": "cell-32",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-33",
"metadata": {},
"source": "#### Question 8\nLa commande `uname -a` t'a donné des informations sur le système. Tu y vois notamment le mot \"Linux\" et un numéro de version. Qu'est-ce que cela te dit sur ce qui fait tourner WebVM ? Et `ls /` : est-ce que l'arborescence ressemble à ce que tu voyais dans le Finder de System 7 ou l'Explorateur de Windows 2000 ?"
},
{
"cell_type": "markdown",
"id": "cell-34",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-35",
"metadata": {},
"source": [
"#### Question 9\n",
"En regardant le schéma des couches du début : où te situes-tu maintenant par rapport aux deux parties précédentes ?"
]
},
{
"cell_type": "markdown",
"id": "cell-36",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-37",
"metadata": {},
"source": [
"---\n",
"\n",
"## 5. Synthèse"
]
},
{
"cell_type": "markdown",
"id": "cell-38",
"metadata": {},
"source": [
"Avant le débrief collectif, prends quelques minutes pour noter tes réponses. Elles serviront de base à la discussion."
]
},
{
"cell_type": "markdown",
"id": "cell-39",
"metadata": {},
"source": [
"#### Question 10\n",
"En tes propres mots, qu'est-ce qu'un système d'exploitation ? (1-2 phrases)"
]
},
{
"cell_type": "markdown",
"id": "cell-40",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-41",
"metadata": {},
"source": [
"#### Question 11\n",
"Quelle est la différence entre un GUI et une CLI ? Donne un exemple concret pour chacun."
]
},
{
"cell_type": "markdown",
"id": "cell-42",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-43",
"metadata": {},
"source": [
"#### Question 12\n",
"Quelle interface as-tu préféré explorer ? Pourquoi ?"
]
},
{
"cell_type": "markdown",
"id": "cell-44",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-45",
"metadata": {},
"source": [
"#### Question 13\n",
"Qu'est-ce que cette séance t'a appris sur ce qui se passe \"sous le capot\" de ton ordinateur ?"
]
},
{
"cell_type": "markdown",
"id": "cell-46",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"id": "cell-47",
"metadata": {},
"source": [
"---\n",
"\n",
"## 6. Bonus — Terminus : aller encore plus loin"
]
},
{
"cell_type": "markdown",
"id": "cell-48",
"metadata": {},
"source": "Tu viens de taper tes premières commandes Linux sur WebVM. Mais la ligne de commande, ça s'apprend aussi en jouant !\n\n**Terminus** est un jeu d'aventure textuel dans lequel tu navigues en utilisant de vraies commandes Linux : `ls`, `cd`, `cat`, `mv`...\n\nAdresse du jeu : <http://luffah.xyz/bidules/Terminus/>\n\nUn document d'accompagnement est disponible pour t'aider à progresser dans le jeu : [Notebook Terminus](./terminus.ipynb)\n\nLe jeu fonctionne dans le navigateur, sur ordinateur **et sur téléphone**. Tu peux y jouer chez toi, dans le bus, n'importe où.\n\nC'est une excellente façon de continuer à pratiquer ce que tu as découvert aujourd'hui — et de descendre encore une couche de plus.\n\n---\n\n### Tu veux aller encore plus loin ?\n\nSi tu as terminé toutes les missions en avance, voici d'autres OS à explorer dans ton navigateur :\n\n<li><a href=\"https://www.pcjs.org/blog/2015/09/21/\">PCjs.org</a> — Windows 95 et d'autres OS historiques (DOS, Windows 3.1...) émulés avec précision\n<li><a href=\"https://copy.sh/v86/\">v86</a> — Un émulateur très puissant : FreeDOS, Windows 98, et bien d'autres OS plus exotiques\n<li><a href=\"https://infinitemac.org\">Infinite Mac</a> — Du Mac System 1.0 jusqu'à Mac OS 9, version par version"
},
{
"cell_type": "markdown",
"id": "cell-49",
"metadata": {},
"source": [
"---\n",
"\n",
"Licence :\n",
"\n",
"Auteur : Florian Mathieu\n",
"\n",
"Licence CC BY NC\n",
"\n",
"<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"><img alt=\"Licence Creative Commons\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.10.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}