23 - Systèmes d'exploitation

Razik Ikhlef
Vidéo : les systèmes d'exploitation (10 min 33)

Mise en situation

Quand vous allumez votre ordinateur, vous voyez un bureau avec des icônes, vous pouvez lancer un navigateur, écouter de la musique et écrire un programme Python en même temps. Qui orchestre tout cela ? Ce n’est pas le processeur seul (il ne sait qu’exécuter des instructions une par une), ni les applications elles-mêmes (elles ne se connaissent pas entre elles). C’est le système d’exploitation.

Qu’est-ce qu’un système d’exploitation ?

Un système d’exploitation (en anglais Operating System, abrégé OS) est un programme qui se charge en mémoire vive dès le démarrage de l’ordinateur et qui y reste jusqu’à son extinction. Son rôle est de servir d’intermédiaire entre le matériel et les applications : il gère les ressources de la machine (processeur, mémoire, disque, écran, réseau) et les met à disposition des logiciels.

Qu’est-ce qu’un système d’exploitation ? (suite)

Qu’est-ce qu’un système d’exploitation ? (suite)

Concrètement, le système d’exploitation assure quatre fonctions essentielles :

  • Gestion des programmes : il lance les applications, leur attribue du temps processeur et donne l’illusion qu’elles s’exécutent simultanément (c’est le multitâche). En réalité, le processeur bascule très rapidement d’un programme à l’autre ;
  • gestion de la mémoire : il répartit la mémoire vive entre les programmes en cours et empêche qu’un programme n’accède à la mémoire d’un autre ;

Qu’est-ce qu’un système d’exploitation ? (suite)

  • gestion des fichiers : il organise les données sur le disque en dossiers et fichiers, et contrôle les droits d’accès (qui peut lire, écrire, exécuter) ;
  • gestion des périphériques : il communique avec le matériel (clavier, souris, écran, imprimante) grâce à des programmes spéciaux appelés pilotes (drivers).

Libre ou propriétaire ?

Les systèmes d’exploitation se répartissent en deux grandes familles.

Windows (Microsoft) et macOS (Apple) sont des systèmes propriétaires : leur code source n’est pas accessible au public. L’utilisateur ne peut ni l’étudier, ni le modifier, ni le redistribuer.

Libre ou propriétaire ? (suite)

GNU/Linux est un système libre : son code source est accessible en ligne . L’utilisation, l’étude, la modification et la redistribution sont permises. Cette philosophie, portée par Richard Stallman (projet GNU, 1983) et Linus Torvalds (noyau Linux, 1991), garantit le contrôle du programme par ses utilisateurs et la possibilité de partage.

Linux est le système dominant sur les serveurs, les supercalculateurs, les systèmes embarqués (box Internet, robots, drones) et les smartphones (Android repose sur un noyau Linux). Sur les postes de travail, Windows reste le plus utilisé.

Le shell : communiquer avec l’OS

Pour interagir avec le système d’exploitation, on utilise un shell (interpréteur de commandes). Il en existe deux catégories :

  • les interfaces graphiques (GUI), que l’on utilise au quotidien avec la souris : bureau, fenêtres, icônes ;
  • les interfaces en ligne de commande (CLI), où l’on tape des commandes textuelles dans un terminal.

Le shell : communiquer avec l’OS (suite)

En NSI, nous utiliserons principalement le terminal et le shell Bash, qui est le shell standard des systèmes GNU/Linux. À l’ouverture d’un terminal, une invite de commande apparaît :

utilisateur@machine:~$

Elle indique le nom de l’utilisateur, le nom de la machine et le répertoire courant (~ signifie le dossier personnel). On tape sa commande après le $, puis on appuie sur Entrée.

L’arborescence de fichiers

La racine et les dossiers principaux

Sous GNU/Linux, tous les fichiers et dossiers sont organisés dans une arborescence qui part d’un unique point appelé la racine, notée /. Il n’y a pas de lettres de lecteur (C:, D:) comme sous Windows.

La racine et les dossiers principaux (suite)

Arborescence des dossiers sous Linux

Arborescence des dossiers sous Linux

La racine et les dossiers principaux (suite)

Voici les dossiers les plus importants à connaître :

Dossier Contenu
/ La racine, point de départ de toute l’arborescence
/home Les dossiers personnels des utilisateurs
/bin Les programmes essentiels (commandes de base)
/etc Les fichiers de configuration du système
/tmp Les fichiers temporaires

La racine et les dossiers principaux (suite)

Deux particularités à retenir : sous Linux, les chemins utilisent le slash / (et non l’antislash \ de Windows), et les fichiers dont le nom commence par un point (par exemple .bashrc) sont cachés.

Chemins absolus et relatifs

Arborescence développée

Arborescence développée

Chemins absolus et relatifs (suite)

Pour désigner un fichier dans l’arborescence, on peut utiliser deux types de chemins.

Le chemin absolu part toujours de la racine /. Il est complet et sans ambiguïté. Par exemple, le chemin absolu du fichier tutu.txt dans le schéma ci-dessus est /home/elie/documents/tutu.txt.

Le chemin relatif part du répertoire courant. Si l’on se trouve dans le dossier jcg, le chemin relatif vers toto.txt est photos/famille/toto.txt. Pour remonter au dossier parent, on utilise ... Ainsi, depuis le dossier famille, le chemin relatif vers tata.txt est ../vacances/tata.txt.

Chemins absolus et relatifs (suite)

Comment les distinguer ? Un chemin qui commence par / est absolu ; un chemin qui ne commence pas par / est relatif.

Les raccourcis suivants sont très utiles :

Symbole Signification
/ La racine
~ Le dossier personnel de l’utilisateur (/home/utilisateur)
. Le répertoire courant
.. Le répertoire parent (un niveau au-dessus)

Les commandes Bash essentielles

La syntaxe d’une commande Bash est : commande -options arguments. Les options commencent par un tiret et modifient le comportement de la commande.

Commande Rôle Exemple
pwd Afficher le chemin du répertoire courant pwd → /home/alice
ls Lister le contenu d’un répertoire ls
ls -l Lister avec les détails (droits, taille, date) ls -l
cd chemin Se déplacer dans un répertoire cd Documents
cd .. Remonter au dossier parent cd ..
cd ~ Revenir au dossier personnel cd ~

Gérer les fichiers et dossiers

Commande Rôle Exemple
cat fichier Afficher le contenu d’un fichier cat notes.txt
touch fichier Créer un fichier vide touch brouillon.txt
mkdir dossier Créer un dossier mkdir projets
cp source destination Copier un fichier cp notes.txt copie.txt
mv source destination Déplacer ou renommer mv ancien.txt nouveau.txt
rm fichier Supprimer un fichier rm brouillon.txt

Autres commandes utiles

Commande Rôle
man commande Afficher le manuel d’une commande
find chemin -name "nom" Rechercher un fichier par son nom
grep motif fichier Rechercher un texte dans un fichier
sudo commande Exécuter une commande en tant qu’administrateur

Attention : rm supprime définitivement (pas de corbeille) et sudo donne tous les droits sur la machine. Ces commandes doivent être utilisées avec précaution.

Les droits d’accès

Sous GNU/Linux, chaque fichier et chaque dossier possède des droits d’accès qui déterminent qui a le droit de faire quoi. On distingue trois actions possibles :

  • lire (r, pour read) : consulter le contenu d’un fichier, ou lister un dossier ;
  • écrire (w, pour write) : modifier un fichier, ou ajouter et supprimer des fichiers dans un dossier ;
  • exécuter (x, pour execute) : lancer un fichier lorsqu’il s’agit d’un programme, ou entrer dans un dossier.

Les droits d’accès (suite)

Ces droits sont définis séparément pour trois catégories d’utilisateurs : le propriétaire du fichier, son groupe, et tous les autres utilisateurs.

Lire les droits avec ls -l

La commande ls -l affiche les droits au début de chaque ligne, sous la forme d’une suite de dix caractères :

-rwxr-xr--  1  alice  profs  1240  12 mars  sauvegarde.sh

Lire les droits avec ls -l (suite)

Le bloc -rwxr-xr-- se lit en quatre parties :

Partie Caractères Signification
Type - - pour un fichier, d pour un dossier
Propriétaire rwx alice peut lire, écrire et exécuter
Groupe r-x le groupe profs peut lire et exécuter, mais pas écrire
Autres r-- les autres utilisateurs peuvent seulement lire

Un tiret - à la place d’une lettre signifie que le droit correspondant est refusé.

Modifier les droits avec chmod

La commande chmod (change mode) modifie les droits d’un fichier. La forme la plus lisible indique la catégorie concernée (u propriétaire, g groupe, o autres), un + pour ajouter ou un - pour retirer, et le droit visé :

chmod g+w sauvegarde.sh     # autoriser l'écriture au groupe
chmod o-r sauvegarde.sh     # retirer la lecture aux autres

Seuls le propriétaire du fichier et l’administrateur (à l’aide de sudo) peuvent changer les droits.

Activité : Terminus

Pour mettre en pratique les commandes Bash, nous utiliserons le jeu en ligne Terminus (version d’origine en anglais ). Le jeu simule un système de fichiers dans lequel vous naviguez grâce aux commandes cd, ls, cat, etc.

Activité : Terminus (suite)

Activité : Terminus (suite)

Au fur et à mesure de votre progression, vous devrez construire un plan du jeu (sur papier ou en carte mentale) et noter toutes les commandes apprises dans un tableau :

Commande Fonction réelle en Bash Options utiles
ls Lister le contenu d’un répertoire -l : affichage détaillé
cat Afficher le contenu d’un fichier …
… … …

Activité : Terminus (suite)

Exemple de plan sur papier

Exemple de plan sur papier

Activité : Terminus (suite)

Exemple de plan en carte mentale

Exemple de plan en carte mentale

Activité : Terminus (suite)

Important : le jeu adapte librement certaines commandes (par exemple, cat peut servir à « parler » à un personnage). Dans votre tableau, notez la fonction réelle de la commande en Bash, pas sa fonction dans le jeu.

Résumé

Concept Ce qu’il faut retenir
Système d’exploitation Programme qui gère les ressources de la machine et sert d’interface entre matériel et applications
Multitâche L’OS bascule rapidement entre les programmes pour donner l’illusion de simultanéité
Logiciel libre Code source accessible, modifiable et redistribuable (ex. : GNU/Linux)
Logiciel propriétaire Code source fermé (ex. : Windows, macOS)
Shell Interface de communication avec l’OS (graphique ou en ligne de commande)

Résumé (suite)

Concept Ce qu’il faut retenir
Bash Shell en ligne de commande standard sous Linux
Racine / Point de départ de l’arborescence des fichiers sous Linux
Chemin absolu Part de la racine / (ex. : /home/alice/notes.txt)
Chemin relatif Part du répertoire courant (ex. : ../documents/notes.txt)
Commandes essentielles ls, cd, cat, touch, mkdir, cp, mv, rm, pwd
Droits d’accès Lecture (r), écriture (w), exécution (x) pour le propriétaire, le groupe et les autres ; affichés par ls -l