Aller au contenu

Systèmes d’exploitation

Corrigé de l'activité faite en classe : Système d'Exploitation.

Fonctions du système d’exploitation

Le système d’exploitation (Operating System ou OS en anglais) est le logiciel principal d'un ordinateur. Sans système d’exploitation, un ordinateur est inutilisable. Il joue plusieurs rôles :

Roles du système d'exploitation

  • Exécution des applications : il permet d’exécuter les programmes et gère leur utilisation du processeur.

  • Gestion des ressources partagées : il alloue la mémoire vive (RAM) aux programmes qui s’exécutent, organise sous forme d’arborescence les fichiers stockés sur le disque dur, fait l’interface avec les périphériques (clavier, souris, écran, carte réseau, etc.)

  • Interface utilisateur : il permet à l’utilisateur d’interagir avec la machine à travers à une interface graphique ou en ligne de commande. Les systèmes d’exploitation les plus connus sont Microsoft Windows, Apple macOS, Google ChromeOS et les distributions Linux (Ubuntu, Debian, Zorin, etc.) sur ordinateurs ; Android et iOS sur smartphones.

Libre vs propriétaire

Linux est un système libre et gratuit1, par opposition à Windows et macOS qui sont propriétaires et payants. Il est aujourd’hui le système d’exploitation utilisé sur tous les serveurs des géants du Web et les supercalculateurs.

Cours

Un logiciel libre (ou Open Source) est un logiciel qui permet l'utilisation, l'étude, la duplication et la modification de son code source.

Un logiciel libre est la plupart du temps gratuit, mais pas toujours2, par exemple Red Hat commercialise une distribution payante de Linux avec notice et contrat d'assistance. Et il existe de nombreux logiciels gratuits qui ne sont pas libres (Adobe Acrobat Reader, Zoom, Dropbox, etc.)

Un système d'exploitation libre n’est pas moins sécurisé qu’un système d’exploitation propriétaire.

Interpréteur de commande ou shell

Cours

L’interpréteur de commandes, aussi appelé invite de commande, ou encore shell, permet d’interagir avec le système d’exploitation. Il est disponible dans tous les systèmes d'exploitation de type Linux. L'utilisateur lance des commandes sous forme d'une entrée texte pour être ensuite exécutées par le shell.

Un interpréteur de commande en mode texte peut sembler obsolète sur les ordinateurs personnels qui disposent tous d’un système d’exploitation avec une interface graphique, mais ce n’est pas le cas sur les tous serveurs. De plus, il offre certains bénéfices: il est universel à toutes les distributions et facilite les échanges entre utilisateurs ; enfin il permet d’automatiser des tâches répétitives.

Explorer l’arborescence des fichiers : pwd, ls, cd

Les fichiers, répertoires3 et sous-répertoires informatiques sont organisés dans une structure appelée une arborescence de fichiers qui part d’un répertoire appelé racine. Plusieurs commandes permettent de se déplacer dans l’arborescence et de visualiser les fichiers.

Cours

La commande pwd (pour « print working directory ») donne l’adresse du répertoire courant ou répertoire dans lequel on se trouve actuellement.

La commande ls (pour list) sert à afficher le contenu d’un répertoire (fichiers et répertoires).

« . » désigne le répertoire courant,

« .. » représente le répertoire parent situé au niveau juste au-dessus du répertoire courant dans l’arborescence.

La commande ls -al (-a pour all, -l pour long) donne une description plus complète (permissions, propriétaire, taille, date de modification, nom) des fichiers et répertoires. Le premier caractère de chaque ligne indique le type de fichier s’il s’agit :

  • « - » indique un fichier ordinaire;
  • « d » indique un répertoire (d pour directory) ;
  • « l » indique un raccourci (l pour link).

La commande cd (pour « change directory ») permet de se déplacer dans l’arborescence de répertoires :

  • cd rep : permet de se déplacer dans le répertoire rep.
  • cd .. : permet de remonter d’un niveau dans le répertoire parent.
  • cd ou cd ~ : permettent de retourner dans son répertoire personnel, depuis n'importe quel répertoire.

Pour identifier un fichier ou un répertoire depuis le répertoire courant (.) on utilise un chemin relatif. Ce chemin n’est pas unique, il dépend du répertoire dans lequel on se trouve.

Un répertoire particulier se trouve tout au sommet de l’arborescence : le répertoire racine ou root (/) .

  • cd / : permet de se rendre directement dans le répertoire racine de l’arborescence de fichiers.

Pour identifier un fichier ou un répertoire depuis la racine (/ ou root), on utilise son chemin absolu. Ce chemin est unique, il ne dépend pas du répertoire dans lequel on se trouve.

Visualiser et chercher dans un fichier : cat et grep

Cours

La commande cat (pour « catenate » ou concaténer) servait à l’origine à joindre deux fichiers ensembles mais est souvent utilisé pour afficher le contenu d’un seul fichier dans le terminal.

La commande grep sert à rechercher une chaîne de caractères dans un fichier.

Créer, copier, supprimer un fichier : touch, mv et rm

Cours

Les commandes cp, mv et rm permettent de copier, déplacer ou renommer et supprimer un fichier :

  • cp fich1 fich2 : sert à copier le fichier fich1 dans fich2 (cp pour copy).

  • mv fich1 rep : sert à déplacer le fichier fich1 dans un répertoire rep (mv pour move).

  • mv fich1 fich2 : sert à renommer le fichier fich1 en fich2.

  • rm fich : sert à supprimer un fichier fich (rm pour remove).

Créer et supprimer un répertoire : mkdir et rmdir

Cours

Les commandes mkdir et rmdir permettent de créer et supprimer un répertoire :

  • mkdir rep : sert à créer un répertoire rep (mkdir pour make directory) .

  • rmdir rep : sert à supprimer un répertoire rep (rmdir pour remove directory). rmdir (sans option) ne permet pas de supprimer un répertoire qui n’est pas vide.

Gérer les droits : id et chmod

Pour définir des droits associés à un fichier ou à un répertoire, les systèmes d’exploitation de la famille Linux divisent les utilisateurs en trois catégories :

  • L’utilisateur à qui appartient le fichier, désigné par « u » pour user.
  • Le groupe d’utilisateurs d’un fichier, désigné par « g » pour group.
  • Tous les autres utilisateurs, désignés par « o » pour others.

Tout utilisateur fait partie d’un ou plusieurs groupes. En fait, le système d’exploitation l’identifie par un identifiant (UID, ou User ID) ainsi que ses groupes (par leur GID pour Group ID).

Les droits sur le fichier : Un bloc de trois caractères rwx indiquent si l’on a accordé le droit (lettre présente) ou pas (-) pour chaque catégorie d’utilisateurs : l’utilisateur (u), puis son groupe (g), et les autres (o).

  • Lecture (r pour read) qui autorise la lecture pour un fichier ordinaire ou la liste des fichiers d’un répertoire.
  • Écriture (w pour write) qui permet la modification d’un fichier ou des fichiers contenus dans un répertoire.
  • Exécution (x pour execute), qui indique si un programme peut être exécuté.

Cours

La commande chmod (pour change mode) permet de modifier les droits associés à un fichier ou à un répertoire.

  • chmod modifs fich : sert à modifier les droits sur le fichier fich selon modifs composé de :

    • une ou plusieurs lettres parmi « u », « g », « o » ou « a » (a pour all) : les utilisateurs concernés,
    • « + » ou « - » : attribue des droits supplémentaires (+) ou supprime des droits (-),
    • une ou plusieurs lettres parmi « r », « w » et « x » : les droits en lecture (r), écriture (w) et exécution (x).

Il existe une autre manière de décrire les droits à attribuer à un fichier en octal (base 8) en additionnant les droits associés respectivement à u, g et o en additionnant les valeurs :

  • 4 pour r,
  • 2 pour w,
  • 1 pour x.

Par exemple, rwx vaut 7 (4 + 2 + 1), rx vaut 5 (4 + 1). On peut choisir directement des droits avec cette notation, mais pas en ajouter ou en ôter.

Canaux d’entrée et sorties standards, redirections : >, >> et |

Toutes les commandes exécutées dans le shell supposent la présence d’entrées sorties appelées canaux :

  • entrée standard ou canal 0, stdin (par défaut, la saisie au clavier)
  • sortie standard, ou canal 1, stdout et
  • sortie d’erreur, canal 2, stderr

Par défaut, le canal d’entrée standard est la saisie au clavier et les deux canaux de sortie se font par affichage dans le shell mais on peut aussi choisir de rediriger ces canaux dans des fichiers avec > et >>.

L’outil « pipe », noté |, permet de rediriger la sortie d’une première commande vers l’entrée d’une seconde commande. En écrivant cmd1 |cmd2, la sortie de cmd1 est redirigée en entrée de cmd2.

Par exemple en utilisant la commande « wc –w text » qui compte le nombre de mots dans text, on peut écrire « ls | wc –w » pour compter le nombre de fichiers dans un répertoire : la sortie de ls est une liste de fichiers qui est envoyée en entrée de wc –w pour être comptée.

Variables et scripts

On peut utiliser des variables en leur affectant une valeur avec le signe « = » suivi de la valeur (sans espace). Ensuite, on précède le nom de la variable d’un $ pour l'utiliser. Le shell utilise aussi des variables, dites d’environnement, par exemple la variable SHELL

La puissance des commandes Linux est exploitable dans des scripts très puissants, ils permettent d’écrire de vrais programmes avec des conditions, des boucles, etc.

Aide et résumé des commandes

La plupart des commandes ont une option --help qui décrit leur utilisation. Par exemple pour ls, on peut utiliser ls --help. Aussi la commande man est très utile, en passant un nom de commande en argument, par exemple on écrit man ls.

Commande Description
cmd > fich Écrit la sortie de commande cmd dans un fichier fich
cmd1|cmd2 Renvoie la sortie de la commande cmd1 sur l’entrée de cmd2
cat fich Affiche le contenu du fichier fich
cd rep Change de répertoire courant pour aller dans rep
cd ou cd ~ Change de répertoire courant pour aller dans le répertoire utilisateur
cd .. Change de répertoire courant pour aller dans le répertoire parent
chmod modifs fich Modifie les droits (rwx) des utilisateurs (u, g , o ou a) pour le fichier fich
cp fich1 fich2 Copie le fichier fich1 dans fich2
echo blabla > fich Crée un fichier fich contenant le texte blabla
grep texte fich Recherche la chaîne de caractères texte dans fich
id Affiche l’identifiant d’utilisateur (uid) et de groupes (gid) de l’utilisateur
ls rep Affiche le contenu du répertoire rep
ls –a Affiche le contenu du répertoire, y compris les fichiers et répertoires cachés
ls -l Affiche le contenu du répertoire avec une description complète
man cmd Affiche la documentation sur la commande cmd
mkdir rep Crée un répertoire rep dans le répertoire courant
mv fich rep Déplace le fichier fich dans le répertoire rep
mv fich1 fich2 Renomme le fichier fich1 en fich2
pwd Afficher l’emplacement du répertoire courant où l'on se situe actuellement
rm fich Supprime le fichier fich
rmdir rep Supprime le répertoire rep (s’il n’est pas vide)
touch fich Crée un fichier fich

  1. Python, Android, Mozilla Firefox et Thunderbird, LibreOffice.org, VLC sont d’autres exemples de logiciels libres et gratuits. 

  2. La confusion entre libre et gratuit vient de l'anglais qui utilise free pour les deux. 

  3. On utilise indifféremment les termes « répertoire » et « dossier ».