diff --git a/architecture/os/emulateurs.ipynb b/architecture/os/emulateurs.ipynb new file mode 100644 index 0000000..7d8013a --- /dev/null +++ b/architecture/os/emulateurs.ipynb @@ -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
\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
\n", + "Niveau : Première NSI
\n", + "Prérequis : Aucun
\n", + "
\n", + "Systèmes mis en œuvre : PC / Machine personnelle
\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", + "
  • Windows (Microsoft)\n", + "
  • macOS (Apple)\n", + "
  • Linux (libre et gratuit, dans de nombreuses variantes)\n", + "
  • 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 `ta réponse`)*" + ] + }, + { + "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 : \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", + "
  • Mission 1 : Sur le bureau, ouvre le Finder (le gestionnaire de fichiers). Crée un nouveau dossier et donne-lui ton prénom. (Indice : regarde dans les menus en haut.)\n", + "
  • Mission 2 : Dans le menu Pomme (🍎 en haut à gauche), trouve les informations sur cet ordinateur. Qu'est-ce qui y est indiqué ?\n", + "
  • Mission 3 : 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 : \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", + "
  • Mission 1 : Crée un nouveau dossier sur le bureau, comme tu l'as fait sur System 7. La méthode est-elle identique ?\n", + "
  • Mission 2 : Ouvre le Panneau de configuration (via le menu Démarrer), puis clique sur Système. Observe les informations sur le matériel affichées.\n", + "
  • Mission 3 : Appuie sur Ctrl + Alt + Suppr pour ouvrir le Gestionnaire des tâches. Regarde l'onglet Processus : 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 : \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
  • Mission 1 : Tape ls puis appuie sur Entrée. Que se passe-t-il ?\n
  • Mission 2 : Tape pwd puis Entrée. Qu'est-ce que cette commande t'indique ?\n
  • Mission 3 : Tape mkdir tonprenom (remplace tonprenom par ton prénom, sans espace ni accent). Puis refais un ls. Que remarques-tu ?\n
  • Mission 4 : Tape uname -a et observe le résultat. Reconnais-tu certains mots ?\n
  • Mission 5 : Tape ls / (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 : \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", + "\"Licence
    Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file