10 Cours Systèmes
Histoire et rôle des systèmes d'exploitation⚓︎
Généralités⚓︎
Nous avons vu qu’un ordinateur a été conçu pour exécuter des algorithmes sous forme de programmes.
Le système d’exploitation est un programme tout à fait singulier, il est chargé en mémoire vive dès le démarrage de l’ordinateur et y reste jusqu’à son extinction. Il a la charge de coordonner l’ensemble des tâches qui sont exécutées par l’ordinateur, mais aussi de piloter les différents composants (disque dur, écran, processeur, mémoire etc...) de l’appareil informatique.
Il fait le lien (interface) entre le matériel et les applications.

Le système d’exploitation a les responsabilités suivantes :
- Gérer le lancement des diverses applications et donner l’illusion que l’ordinateur est multitâche.
- Identifier les utilisateurs.
- Gérer l’organisation du disque dur et de ses fichiers.
- Contrôler l’accès aux données du disque dur et ressources de l’ordinateur.
Les deux familles de systèmes d’exploitation les plus populaires sont :
- UNIX (dont macOS, GNU/Linux, iOS et Android)
- Windows
Remarque : on utilise communément la terminologie OS (Opérating System) pour désigner un système d’exploitation.
Libre / propriétaire...⚓︎
Le système UNIX est un système dit "propriétaire" (certaines personnes disent "privateur"), c'est-à-dire un système non libre. Mais plus généralement, qu'est-ce qu'un logiciel libre ?
D'après Wikipédia : "Un logiciel libre est un logiciel dont l'utilisation, l'étude, la modification et la duplication par autrui en vue de sa diffusion sont permises, techniquement et légalement, ceci afin de garantir certaines libertés induites, dont le contrôle du programme par l'utilisateur et la possibilité de partage entre individus". Le système UNIX ne respecte pas ces droits (par exemple le code source d'UNIX n'est pas disponible, l'étude d'UNIX est donc impossible), UNIX est donc un système "propriétaire" (le contraire de "libre"). Attention qui dit logiciel libre ne veut pas forcement dire logiciel gratuit (même si c'est souvent le cas), la confusion entre "libre" et "gratuit" vient de l'anglais puisque "free" veut à la fois dire "libre", mais aussi gratuit.
Histoire⚓︎
Voici une courte vidéo de l’institut Mines-Telecom présentant l’histoire des systèmes d’exploitation.
Voici une courte vidéo de l’institut Mines-Telecom retracant l'histoire d'UNIX.
Histoire de Windows⚓︎

Microsoft a été créé par Bill Gates et Paul Allen en 1975. Microsoft est surtout connu pour son système d'exploitation Windows. Windows est un système d'exploitation "propriétaire", la première version de Windows date de 1983, mais à cette date, Windows n'est qu'un ajout sur un autre système d'exploitation nommé MS-DOS. Aujourd'hui Windows reste le système d'exploitation le plus utilisé au monde sur les ordinateurs grand public, il faut dire que l'achat de Windows est quasiment imposé lorsque l'on achète un ordinateur dans le commerce, car oui, quand vous achetez un ordinateur neuf, une partie de la somme que vous versez termine dans les poches de Microsoft : Windows est pré-installé sur de nombreux ordinateurs. Cela s'appelle de la vente liée. Il est possible de se faire rembourser la licence Windows, mais cette opération est relativement complexe, et il faut alors réinstaller soi-même un autre système d'exploitation sur son ordinateur.
Histoire de GNU/Linux⚓︎

En 1991, l’étudiant finlandais Linus Torvalds qui a alors 22 ans, recherchait un moyen d’avoir un système UNIX sur sa machine INTEL. Comme il n’en trouvait pas à sa guise, il décida de commencer le développement d’un noyau de système d’exploitation alternatif à UNIX.
Après quelques mois, Il diffusa le code de son travail via un compte FTP de l’Université d’Helsinki.
Pour la petite anecdote, le dossier contenant ces travaux a été nommé « Linux » par un administrateur du serveur FTP : Linux pour « Linus UNIX ». Par la suite, ce nom restera.
Au même moment, Richard Stallman, un « hacker » (programmeur) réputé du MIT, montait en parallèle un projet nommé « GNU » (Gnu Is Not Unix) dont le but était de créer un système d’exploitation libre et gratuit de type UNIX, à partir des contributions bénévoles de programmeurs.
En résumé, Linus Torvalds avait le noyau mais pas les logiciels, et Richard Stallman avait les logiciels mais pas le noyau : la mise en commun logique qui suivit aboutit à la naissance du nouveau système d’exploitation GNU/Linux, abusivement abrégé en Linux dans la littérature courante, au grand désespoir de Richard Stallman qui se sent parfois un peu oublié dans l’histoire, alors que sa très large contribution au succès de l’entreprise n’est plus à démontrer !
Linux est beaucoup plus présent dans le monde des serveurs que sur les postes de travail. Le noyau Linux équipe la plupart des systèmes embarqués (box, robots, aérospatial, drones...). mais aussi les supercalculateurs Linux domine le marché des smartphones via l’OS Android qui s’appuie sur un noyau Linux.
La vidéo ci-dessous raconte l'histoire de Linux en entrant un peu plus dans les détails :
https://www.youtube.com/watch?v=IquNF_DXcF8&feature=emb_logo
MacOS⚓︎

Enfin pour terminer, quelques mots sur le système d'exploitation des ordinateurs de marque Apple : tous les ordinateurs d'Apple sont livrés avec le système d'exploitation macOS. Ce système macOS est un système d'exploitation UNIX, c'est donc un système d'exploitation propriétaire.
Le Shell, une IHM pour les systèmes d’exploitation⚓︎
Une interface entre l’utilisateur et le système d’exploitation s’appelle un shell ou interpréteur de commandes.
Le rôle d’un shell est de prendre une entrée de l’utilisateur, de la traduire en instructions compréhensibles par le système d’exploitation et de renvoyer la réponse du système à l’utilisateur.
Il existe deux grandes catégories de shell :
- les interfaces textuelles comme BASH, le plus commun sur les systèmes de la famille UNIX.
- les interfaces graphiques qu’on retrouve dans les systèmes d’exploitation grand public tels que Windows.
Pour résumer, une façon d’interagir avec le système est d’utiliser un terminal (ou console) dans lequel vous pourrez saisir des commandes (qui ne sont rien d’autre que des programmes). Le programme avec lequel vous interagissez pour exécuter les commandes s’appelle le shell.
GNU/Linux⚓︎
L'arborescence de GNU/Linux⚓︎
Système de fichiers racine⚓︎
L’arborescence d’un système GNU/Linux se présente sous la forme suivante :
Remarques :
- Sous GNU/Linux, les fichiers cachés commencent par un point.
- Sous GNU/Linux, un fichier ne possède pas forcement une extension.
Bien entendu, les dossiers représentés peuvent contenir d’autres dossiers et des fichiers.
Voici une brève description de quelques dossiers du système:
Le système de fichiers racine (root file system), soit le système de fichiers primaire est associé au répertoire le plus haut / :
/bin: commandes binaires utilisateur essentielles (pour tous les utilisateurs)/boot: fichiers statiques du chargeur de lancement/dev: fichiers de périphériques/etc: configuration système spécifique à la machine/home: répertoires personnels des utilisateurs/lib: bibliothèques partagées essentielles et modules du noyau/mnt: point de montage pour les systèmes de fichiers montés temporairement/proc: système de fichiers virtuel d’information du noyau et des processus /root répertoire personnel de root (optionnel)/sbin: binaires système (binaires auparavant mis dans/etc)/sys: état des périphériques (model device) et sous-systèmes (subsystems)/tmp: fichiers temporaires
Remarques :
- sous Linux, les chemins sont séparés par des slashes
/:/etc/init/xfsmais jamais des anti-slashes\(spécifique à Windows). ./représente le répertoire courant.../représente le répertoire parent.~/(tilde) représente le répertoire personnel de l’utilisateur (home/nom_utilisateur).
Chemin absolu ou relatif⚓︎
Ci-dessous, un exemple plus développé de l’arborescence d’un disque sous GNU/Linux :
On y voit les dossiers personnels de deux utilisateurs : jcg et elie.
Pour indiquer la position d’un fichier (ou d’un répertoire) dans l’arborescence, il existe 2 méthodes : indiquer un chemin absolu ou indiquer un chemin relatif :
- Le chemin absolu doit indiquer « le chemin » depuis la racine
/et on indique tous les répertoires rencontrés. - Le chemin relatif part du répertoire courant. Il ne part donc pas forcément de la racine, mais depuis un répertoire quelconque.
En considérant l’exemple d’arborescence ci-dessus :
-
Le chemin absolu du fichier
tutu.txtsera :/home/elie/documents/tutu.txt
-
Le chemin relatif permettant d’accéder au fichier
toto.txtdepuis le répertoirejcgest :photo/famille/toto.txt
-
le chemin relatif pour accéder au fichier
tata.txtdepuis le répertoirefamilleest :../vacances/tata.txt(remarque :../permet de remonter du dossier parentphotos)
Remarque : L’absence ou la présence du
/au début du chemin nous permettra de distinguer un chemin relatif d’un chemin absolu.
Exercice :⚓︎
-
En vous basant sur l’arborescence ci-dessus, déterminez le chemin absolu permettant d’accéder au fichier :
networkstiti.txt
-
Toujours en vous basant sur l’arborescence ci-dessus, déterminez le chemin relatif permettant d’accéder au fichier :
titi.txtdepuis le répertoireelietutu.txtdepuis le répertoireboulot
Bash, le shell Linux en lignes de commandes⚓︎
BASH est un shell, un interpréteur de lignes de commandes pouvant accéder aux services et interagir avec le noyau d’un système d’exploitation. Bash est le shell de base utilisé dans le terminal d’une distribution Linux.
Remarque : les commandes Linux et UNIX sont à peu près les mêmes, il y a quelques différences, qui n'interviennent pas sur les commandes les plus courantes que vous verrez en Première.
L'invite de commande⚓︎
À l’ouverture d’un terminal, on peut voir l’invite de commande sous la forme suivante :
nom_utilisateur@nom_ordinateur:~$
La syntaxe d’une commande Bash est simple. Il suffit de saisir le nom de la commande à la suite de cette invite.
Par exemple :
nom_utilisateur@nom_ordinateur:~$ ls
La commande ls permet en effet de lister le contenu d’un dossier.
Remarque : le nom de la commande peut être suivi d’options facultatives, introduites par un tiret, et d’arguments :
nom_commande -option1 -option2 argument1 argument2
Par exemple, la commande ci-dessous demande d’utiliser la commande ls
pour afficher les informations détaillées (option -l) sur le fichier
exemple:
naruto@MonOrdiAMoi:~$ ls -l exemple
On obtient :
-rw-rw-r-- 1 naruto naruto 0 août 16 12:05 exemple
Remarque : chaque commande est un programme enregistré dans un fichier. Par exemple, la commande
lsse réfère à un programme situé à l’emplacement/usr/bin/ls
Les commandes linux⚓︎
Quasiment tout ce qu'il faut savoir se trouve ici :
http://juliend.github.io/linux-cheatsheet
Pour nous, simplement lire les commandes entourées...


Voir aussi : https://riptutorial.com/fr/linux/example/25726/options-pour-la-commande-ls
Ou pour les plus curieux : https://fr.wikipedia.org/wiki/Commandes_Unix
Que faut-il retenir ?⚓︎
Il faut connaître les commandes Bash de base :
cdpour naviguer d'un dossier à l'autre (ou parfois chdir, abréviation de l'anglais change directory)lspour lister le contenu d'un dossier (abréviation de list en anglais)catpour lire le contenu d'un fichiertouchpour créer un nouveau fichiermkdirpour créer un nouveau dossier (mkdir est l'abréviation de make directory, « créer répertoire »)sudopour obtenir les droits de super-utilisateurmanpour connaître le manuel d'utilisation d 'une commande.rmpour effacer un fichier ourmdirpour un dossier (en référence au terme anglais remove, « supprimer »).cppour copier un fichier ou dossier (en référence au terme anglais copy, copier).mvpour déplacer un fichier (en référence au terme anglais move, déplacer). Il permet également de renommer un fichier ou un répertoire.pwdpour connaître le chemin courant (Son nom signifie en anglais « print working directory »).findpour trouver un fichier par son nom.greppour trouver une chaîne de caractère dans un fichier.chmod(abréviation de change mode) permet de changer les permissions d'accès d'un fichier ou d'un répertoire.chown(de l'anglais change the owner) permet de changer le propriétaire d'un fichier ou d'un dossier (nécessite les droits de l'utilisateur racine root)
On peut définir un chemin vers un fichier ou dossier de façon :
- relative, en partant du dossier courant.
- absolue, en partant du dossier racine
/.
| Répertoire | Description |
|---|---|
/ |
Racine du système de fichiers |
~ |
Répertoire d'accueil (HOME) |
| . | Répertoire courant |
| .. | Répertoire parent |
Le système de fichiers racine de GNU / Linux comprend au minimum huit dossiers.
/bincontient les programmes communs essentiels./homecontient les dossiers personnels des utilisateurs./etccontient les fichiers de configuration de l'OS et de certains programmes.
Pour aller plus loin : Flux d’entrée / sortie et redirections, filtres et pipeline⚓︎
-
Par défaut, chaque programme (dont les commandes shell) exécuté dans un shell UNIX admet trois canaux, ou flux, de communication avec l’extérieur :
- Un canal d’entrée nommé entrée standard (stdin en anglais) qui par défaut est le texte saisi au clavier dans le terminal.
- Un canal de sortie nommé sortie standard (stdout en anglais) qui par défaut est l’écran du terminal.
- Un canal d’erreur nommé erreur standard (stderror en anglais) qui par défaut est l’écran du terminal.
-
On peut modifier l’entrée ou la sortie standard d’une comamnde pour lire ou écrire sur d’autres canaux que ceux par défaut (fichiers ou flux réseaux au lieu de clavier / écran ). Pour rediriger un flux vers l’entrée ou la sortie standard d’une commande on utilise des opérateurs de redirection :
| Opérateur | Redirection |
|---|---|
| > | sortie standard |
| >> | sortie standard en ajout à la fin |
| < | entrée standard |
Exemples :⚓︎
-
si on veut écrire le contenu du répertoire courant dans un fichier contenu.txt, on redirige la sortie standard de ls vers un fichier contenu.txt au lieu de l’écran du terminal :
user@nomordi:~$ ls > contenu.txt -
Et si on veut compter le nombre de mots dans un texte, on redirige son entrée standard vers le contenu de texte.txt au lieu du clavier :
user@nomordi:~$ wc -m < texte.txt -
On peut enchaîner les commandes en pipeline : la sortie standard d’une commande est raccordée à l’entrée standard d’une commande suivante à l’aide d’un pip symbolisé par le caractère
|:
commande_debut | commande_fin -
Si on veut intercaler une commande entre les deux, elle doit envoyer son entrée standard sur sa sortie standard : de telles commandes qui servent de traitements intermédiaires entre le début et la fin d’un pipeline sont appelées filtres. On peut ainsi réaliser en une ligne de commande des traitements complexes.
commande_debut | filtre1 | filtre2 | ... | commande_fin
Le tableau ci-dessous donne quelques exemples de filtres, d’autres options sont disponibles pour chaque commande.
| Commande | Action |
|---|---|
| cat | copie son entrée standard sur sa sortie standard sans modification |
| sort | trie les lignes de son entrée standard par ordre alphabétique |
| sort -r | trie les lignes de son entrée standard par ordre (alphabétique) décroissant |
| sort -n | trie les lignes de son entrée standard par ordre numérique (et pas chaîne de caractères) |
| sort -k champs,champs | trie en précisant ou les champs à prendre en compte pour le tri |
| -t sep | permet de préciser le séparateur de champs |
| cut -d: -f 5 | sélectionne le \(5^\text{e}\) champ de chaque ligne de l'entrée standard découpée selon le délimiteur : |
| wc -l | compte les lignes de son entrée standard |
| wc -w | compte les mots de son entrée standard |
| wc -m | compte les caractères de son entrée standard |
| uniq | supprime les lignes considérées comme des doublons |
| head -n5 | affiche les cinq premières lignes de son entrée standard |
| head -n-5 | affiche tout sauf les cinq dernières lignes de son entrée standard |
| tail -n5 | affiche les cinq dernières lignes de son entrée standard |
| tail -n+5 | affiche tout sauf les cinq premières lignes de son entrée standard |
Exercice :⚓︎
(Exercice du manuel de première NSI de Thibault Balabonski chez Ellipses)
Le fichier /etc/passwd contient la liste des utilisateurs locaux de la machine. Pour chaque question, on recherchera éventuellement dans le manuel avec la commande man command les options pertinentes des commandes proposées.
- Afficher les 5 premières lignes du fichier
/etc/passwd. - Faire afficher le nombre de lignes du fichier
/etc/passwdavec la commandewc. - Trier le fichier
/etc/passwdavec la commandesort. Quel ordre est utilisé ? - Les champs de chaque ligne de
/etc/passwdsont séparées par le caractère:. Trier le fichier selon le troisième champ. Quel ordre est utilisé ? - Trier
/etc/passwdselon le troisième champ avec l’ordre numérique.