ajout activité sur les emulateurs de systemes d'exploitation
This commit is contained in:
525
architecture/os/emulateurs.ipynb
Normal file
525
architecture/os/emulateurs.ipynb
Normal file
@@ -0,0 +1,525 @@
|
||||
{
|
||||
"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> : Appuie sur <strong>Ctrl + Alt + Suppr</strong> pour ouvrir le Gestionnaire des tâches. Regarde l'onglet <em>Processus</em> : que vois-tu tourner en arrière-plan ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"\n",
|
||||
"Plus 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",
|
||||
"\n",
|
||||
"Ouvre cette adresse : <https://webvm.io>\n",
|
||||
"\n",
|
||||
"Une 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",
|
||||
"*(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\n",
|
||||
"Compare la Mission 3 ici avec la Mission 1 sur System 7 et Windows 2000 : tu as créé un dossier dans les trois cas. Qu'est-ce que la CLI **montre** que le GUI **cachait** ?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
Reference in New Issue
Block a user