Un ordinateur est un dispositif électronique qui peut être programmé pour exécuter automatiquement des séquences d’opérations arithmétiques ou logiques (calcul)
Le principe de l’ordinateur moderne a été défini par Alan Turing en 1936
Machine de Turing universelle :
Lire et écrire des symboles sur une bande infinie selon un ensemble de règles définies par sa fonction de transition
Elle déplace sa tête de lecture/écriture à gauche ou à droite et change d’état en fonction du symbole et de l’état courant
Une machine de Turing physique
Une machine de Turing en LEGO (ENS Lyon)
Une machine de Turing dans Minecraft
Qu’est-ce qu’un ordinateur ?
Architecture matérielle
Les machines de Turing décrivent une machine abstraite
Comment passer de ce modèle idéalisé à un ordinateur réel ?
Description des systèmes ou architectures informatiques
L’architecture von Neumann (ou architecture Princeton)
L’architecture Harvard
L’architecture Harvard modifiée
Qu’est-ce qu’un ordinateur ?
Architecture von Neumann (1945)
Qu’est-ce qu’un ordinateur ?
Exécuter un programme sur l’architecture von Neumann
Somme A + B
Récupérer l’instruction
Incrémenter le Program Counter (PC)
Décoder l’instruction
Récupérer les opérandes (A & B)
Phase d’exécution
Phase de stockage
Mise à jour du PC
Qu’est-ce qu’un ordinateur ?
L’architecture Harvard
Qu’est-ce qu’un ordinateur ?
Exécuter un programme sur l’architecture Harvard
Somme A + B
Récupérer l’instruction
Incrémenter le Program Counter (PC)
Décoder l’instruction
Récupérer les opérandes (A & B)
Phase d’exécution
Phase de stockage
Mise à jour du PC
Qu’est-ce qu’un ordinateur ?
Comparaison
von Neumann
Un CPU avec à la fois une unité de contrôle (CU) et une unité arithmétique et logique (ALU)
La mémoire stocke à la fois les données et les instructions :
Un programme peut facilement modifier ses instructions (boucles)
Goulot d’étranglement
Problèmes de sécurité
Harvard
CU et ALU séparés
Voies mémoire et instructions séparées :
Traitement des données plus rapide et plus efficace
Coût plus élevé et moins de flexibilité en programmation
Qu’est-ce qu’un ordinateur ?
Le meilleur des deux mondes
Architecture Harvard modifiée
Utilisée dans les ordinateurs modernes et les microcontrôleurs
Caches séparés pour les données et les instructions
Adressage mémoire unifié (mais voies ou caches séparés)
Flexibilité
Optimisation des performances
Qu’est-ce qu’un ordinateur ?
Composants matériels d’un ordinateur “moderne”
Un CPU (généralement avec plusieurs cœurs)
Mémoire vive (RAM)
Périphériques de stockage :
Disques durs (HDD)
Disques à état solide (SSD)
Qu’est-ce qu’un ordinateur ?
Composants matériels d’un ordinateur “moderne”
Carte mère
Socket CPU
Chipset
Emplacements RAM (emplacements DIMM)
Connecteurs de stockage
Emplacements d’extension
Composants matériels d’un ordinateur “moderne”
Beaucoup plus de périphériques d’entrée/sortie
Systèmes d’exploitation
Qu’est ce qu’un Système d’Exploitation (Operating System - OS)
Envoyer des instructions binaires à un ordinateur est possible mais peu pratique
$\rightarrow$ Utiliser un logiciel principal appelé système d’exploitation (OS) pour agir comme intermédiaire entre les utilisateurs et le matériel informatique
Systèmes d’exploitation
Un peu d’histoire
Un autre voyage dans le temps
Premiers ordinateurs (années 1940 – 1950) :
Opérations manuelles, traitement par lots
Ère des mainframes (années 1960) :
Transition des systèmes mono-utilisateur, mono-tâche vers des environnements multi-utilisateurs, multitâches
Unix et premiers mini-ordinateurs (années 1970) :
Portabilité, système de fichiers hiérarchique, sécurité et permissions
Ordinateurs personnels (années 1980) :
Plus simples, plus intuitifs, capables de fonctionner sur du matériel moins puissant
Introduction de l’interface graphique (GUI) par Apple
Systèmes d’exploitation
Un peu d’histoire
L’essor des systèmes d’exploitation modernes
Microsoft Windows :
De 3.0 à 95, étape clé pour établir Microsoft comme système d’exploitation dominant sur bureau
Windows NT/2000/XP et suivants ont apporté stabilité et facilité d’utilisation
GNU/Linux – la révolution open-source :
1991 : première version du noyau Linux
Dans les années 2000, Linux domine le marché des serveurs et plus encore
MacOS :
Noyau basé sur Unix
Lien fort avec le matériel Apple
Systèmes d’exploitation
Composants et fonctionnalités
L’essor des systèmes d’exploitation modernes
La gestion des ressources matérielles est sous la responsabilité du noyau
Les fonctions clés du noyau sont :
Gestion des processus
Gestion de la mémoire
Gestion des périphériques
Gestion du système de fichiers
Communication inter-processus
Sécurité et contrôle d’accès
Systèmes d’exploitation
Comment intéragir avec le Systèmes d’exploitation?
Le shell en ligne de commande (Command-line shells)
Mode historique d’interaction avec le système d’exploitation
Les shells en ligne de commande demandent à l’utilisateur de saisir des commandes textuelles pour effectuer des tâches telles que la gestion des fichiers, le contrôle des processus, etc.
Exemples : sh, bash, zsh, cmd.exe, Powershell
Les shells graphiques
Permettent d’accéder aux fonctions d’un système d’exploitation sans avoir à taper des commandes
Souvent construits au-dessus de ce qu’on appelle un système de fenêtres
Exemples : Gnome Shell, Windows shell, Aqua
Systèmes d’exploitation
Autres composants et fonctionnalités
Le programme Init
Le premier programme à s’exécuter après le chargement du noyau
Daemons et services
Tâches en arrière-plan qui effectuent des fonctions spécifiques (attente de connexions, surveillance de l’ordinateur)
Utilisateurs
Utilisateurs humains – Réguliers ou administrateur/root
Comptes de service – utilisés par le système d’exploitation pour exécuter des tâches spécifiques (e.g., www-data)
Le terminal
Intéragir avec l’OS en utilisant un terminal
Historiquement, le seul moyen d’interagir avec votre système
De nos jours, le terminal est généralement une application pré-installée, e.g.,