23 - Systèmes d'exploitation

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.

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 ;
  • 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.

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.

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.

Arborescence des dossiers sous Linux

Arborescence des dossiers sous Linux

Voici les dossiers les plus importants à connaître :

DossierContenu
/La racine, point de départ de toute l’arborescence
/homeLes dossiers personnels des utilisateurs
/binLes programmes essentiels (commandes de base)
/etcLes fichiers de configuration du système
/tmpLes fichiers temporaires

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

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 photo/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.

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 :

SymboleSignification
/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.

CommandeRôleExemple
pwdAfficher le chemin du répertoire courantpwd/home/alice
lsLister le contenu d’un répertoirels
ls -lLister avec les détails (droits, taille, date)ls -l
cd cheminSe déplacer dans un répertoirecd Documents
cd ..Remonter au dossier parentcd ..
cd ~Revenir au dossier personnelcd ~

Gérer les fichiers et dossiers

CommandeRôleExemple
cat fichierAfficher le contenu d’un fichiercat notes.txt
touch fichierCréer un fichier videtouch brouillon.txt
mkdir dossierCréer un dossiermkdir projets
cp source destinationCopier un fichiercp notes.txt copie.txt
mv source destinationDéplacer ou renommermv ancien.txt nouveau.txt
rm fichierSupprimer un fichierrm brouillon.txt

Autres commandes utiles

CommandeRôle
man commandeAfficher le manuel d’une commande
find chemin -name "nom"Rechercher un fichier par son nom
grep motif fichierRechercher un texte dans un fichier
sudo commandeExé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.

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

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

PartieCaractèresSignification
Type-- pour un fichier, d pour un dossier
Propriétairerwxalice peut lire, écrire et exécuter
Grouper-xle groupe profs peut lire et exécuter, mais pas écrire
Autresr--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.

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 :

CommandeFonction réelle en BashOptions utiles
lsLister le contenu d’un répertoire-l : affichage détaillé
catAfficher le contenu d’un fichier
Exemple de plan sur papier

Exemple de plan sur papier

Exemple de plan en carte mentale

Exemple de plan en carte mentale

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é

ConceptCe qu’il faut retenir
Système d’exploitationProgramme qui gère les ressources de la machine et sert d’interface entre matériel et applications
MultitâcheL’OS bascule rapidement entre les programmes pour donner l’illusion de simultanéité
Logiciel libreCode source accessible, modifiable et redistribuable (ex. : GNU/Linux)
Logiciel propriétaireCode source fermé (ex. : Windows, macOS)
ShellInterface de communication avec l’OS (graphique ou en ligne de commande)
BashShell en ligne de commande standard sous Linux
Racine /Point de départ de l’arborescence des fichiers sous Linux
Chemin absoluPart de la racine / (ex. : /home/alice/notes.txt)
Chemin relatifPart du répertoire courant (ex. : ../documents/notes.txt)
Commandes essentiellesls, cd, cat, touch, mkdir, cp, mv, rm, pwd
Droits d’accèsLecture (r), écriture (w), exécution (x) pour le propriétaire, le groupe et les autres ; affichés par ls -l