Source: https://fr.readkong.com/page/csc-3102-cours-introduction-aux-systemes-d-exploitation-8009852
Timestamp: 2020-08-08 03:55:43+00:00

Document:
CSC 3102 - COURS - Introduction aux systèmes d'exploitation
La page est créée Hervé Dupre
CSC 3102 – COURS
Coordinateurs : Élisabeth Brunet, Amina
Guermouche et Gaël Thomas
http://www-inf.telecom-sudparis.eu/COURS/CSC3102/Supports/
CSC 3101
Bienvenue en informatique !
Comprendre et savoir programmer des logiciels
Coordinateurs : Élisabeth Brunet et Gaël Thomas
CSC 3102                                                 2                    CSC 3102                                  Présentation
Bienvenue en système !                                                        Rôle d’un système d’exploitation
Comprendre et savoir programmer des ordinateurs
Simplifier la vie du concepteur de logiciels
• Masquer l’hétérogénéité du matériel
• Masquer les détails de mise en œuvre de bas niveau
• Offrir des abstractions pertinentes et de haut niveau pour
3                    CSC 3102                                  Présentation   4                    CSC 3102                                  Présentation
Pourquoi apprendre le système ?                                               Objectifs du module
Par curiosité : comprendre ce qui se passe sous le capot                      Introduire la notion de système d’exploitation
• Rôle et fonctionnalités
Parce que c’est utile dans notre vie de tous les jours
Introduire les principales abstractions fournies par un système
(ne serait-ce que pour installer votre maison connectée !)
• Processus, fichiers, communication inter-processus
Pour écrire des logiciels qui utilisent efficacement les                      Comprendre les systèmes UNIX par l’exemple
ressources                                                                     • À l’aide d’un langage de script (le shell bash)
Savoir utiliser le langage bash
Pour travailler dans les domaines liés aux systèmes
• Gros besoins d’ingénieurs inventifs sur les marchés nationaux et           Être autonome pour les autres enseignements en informatique
5                    CSC 3102                                  Présentation   6                    CSC 3102                                  Présentation
Organisation (1/2)                                                     Organisation (2/2)
10 séances de 3h (cours intégrés + travaux pratiques)                  Séances 1 : le langage bash
• Petits groupes d’une vingtaine d’étudiants
• Une (petite) partie cours                                           Séances 2 à 4 : le système de fichier
• Une (grosse) partie pratique sur machine
Séance 5 : les processus
Notation : 10% devoir maison + 90% contrôle final
• Un devoir maison noté en séance 2
Séance 6 : communication inter-processus
• Un contrôle
• Un contrôle de rattrapage
Séances 7 à 8 : synchronisation inter-processus
Attention! N’oubliez pas de travailler ☺
car programmer s’apprend par la pratique                               Séance 9 : révision
7                    CSC 3102                           Présentation   8                  CSC 3102                           Présentation
Contexte du cours :
• Introduire notre objet d’étude : les systèmes d’exploitation
De l’ordinateur au processus :
rôle d’un système
•   Comprendre ce qu’est un ordinateur
•   Comprendre ce que sont un logiciel et un programme
CSC 3102                                                             •   Comprendre ce qu’est un système d’exploitation
Introduction aux systèmes d’exploitation                             •   Comprendre ce qu’est un processus
• Ordinateur, mémoire, processeur, périphérique, système
d’exploitation, processus, communication, programme, logiciel
CSC 3102                                                     2                     CSC 3102                         De l'ordinateur au processus
Machine électronique capable d’exécuter des instructions
effectuant des opérations sur des nombres
I. Qu’est ce qu’un ordinateur ?
1946 : ENIAC
(calculateur à tubes
30 tonnes, 72m2
pour 330 mult/s)
CSC 3102                                                     4                     CSC 3102                         De l'ordinateur au processus
Définition d’un ordinateur                                                      Définition d’un ordinateur
Machine électronique capable d’exécuter des instructions                        Machine électronique capable d’exécuter des instructions
effectuant des opérations sur des nombres                                       effectuant des opérations sur des nombres
Janv 1948 : SSEC (premier ordinateur chez IBM) avec
une capacité mémoire de 150 nombres
5                  CSC 3102                      De l'ordinateur au processus   6                     CSC 3102                         De l'ordinateur au processus
Schéma de haut niveau d’un ordinateur                                                     Schéma de haut niveau d’un ordinateur
Processeur : unité capable d’effectuer des calculs
Mémoire vive             Carte graphique
Mémoire vive : matériel stockant des données directement
accessibles par le processeur
Accès rapide, données perdues en cas de coupure électrique.
Par exemple : SDRAM (Synchronous Dynamic Random Access Memory)
Périphériques : matériel fournissant ou stockant des données
Réseau, disque dur, souris, clavier, carte graphique, carte son…
Bus de communication : bus interconnectant le processeur, la
Processeur           Disque dur          Carte
mémoire vive et les périphériques
7                         CSC 3102                         De l'ordinateur au processus   8                      CSC 3102                              De l'ordinateur au processus
Qu’est ce que la mémoire vive ?                                                           Qu’est ce que la mémoire vive ?
Mémoire vive : ensemble de cases numérotées contenant des                                 Mémoire vive : ensemble de cases numérotées contenant des
octets                                                                                    octets
Case 0 0110 0001b                                                                         Case 0    225
Une case contient un octet          Case 1 0101 1001b                                     Une case contient un octet          Case 1     89
(byte en anglais) = regroupe 8 bits Case 2 0110 0001b                                     (byte en anglais) = regroupe 8 bits Case 2     97
Case 3 1111 0000b                                                                         Case 3    240
Bit : valeur valant 0 ou 1                                                                Bit : valeur valant 0 ou 1
• 0 : bit non chargé ("courant ne passe pas")                                             • 0 : bit non chargé ("courant ne passe pas")
• 1 : bit chargé ("courant passe")     Case 800        1100 1011b                         • 1 : bit chargé ("courant passe")     Case 800                 195
Un octet permet de représenter                         Écriture binaire
Un octet permet de représenter                          Écriture décimale
28 = 256 valeurs                                                                          28 = 256 valeurs
9                         CSC 3102                         De l'ordinateur au processus   10                     CSC 3102                              De l'ordinateur au processus
Fonctionnement d’un processeur                                                            Fonctionnement d’un ordinateur
Mémoire : tableau d’octets, indexé à partir de 0
Un processeur exécute des instructions qui peuvent                                                         Adresse Adresse Adresse
•   Effectuer des calculs                                                                                     0          18     MAX-1
•   Accéder à la mémoire
•   Accéder aux autres périphériques                                                                                    …       13      …
•   Sélectionner l’instruction suivante à exécuter (saut)
Processeur : possède des variables internes appelées registres
Le processeur identifie une instruction par un numéro                                     • PC (Program Counter) : adresse de l’instruction suivante
(Par exemple : 1 = additionne, 2 = soustrait, etc.)
Si PC == 18, alors l’instruction suivante à exécuter est l’instruction 13
• Autres : registres sur lesquels le processeur effectue les calculs
11                        CSC 3102                         De l'ordinateur au processus   12                     CSC 3102                              De l'ordinateur au processus
Fonctionnement d’un ordinateur                                                          Fonctionnement d’un ordinateur
À chaque cycle d’horloge, le processeur :
•   Charge l’instruction à l’adresse PC à partir de la mémoire
•   Place le PC sur l’instruction qui suit                                                                        Et c’est tout!
•   Sélectionne le circuit à activer en fonction du numéro d’instruction
•   Exécute l’instruction
Un ordinateur ne sait rien faire de mieux que des calculs
Quelques exemples d’instructions
• 10 88 ⇒ charge l’octet à l’adresse 88 dans le registre nommé R0
(lit une variable)
• 12 121⇒ ajoute 121 à PC (saut)
• 14 20 ⇒ ajoute 20 au registre R0 (calcul)
• 17 70 12 ⇒ envoie 70 au périphérique numéro 12
13                     CSC 3102                          De l'ordinateur au processus   14                  CSC 3102                      De l'ordinateur au processus
Une machine est constituée d’un processeur, d’une mémoire
vive et de périphériques, le tout interconnecté par un bus
Un processeur exécute de façon séquentielle des instructions                                        II. Logiciels et programmes
qui se trouvent en mémoire
Chaque instruction est identifiée par un numéro, elle peut
•   Effectuer une opération sur des variables internes (registres)
•   Lire ou écrire en mémoire ses registres
•   Accéder à un périphérique
•   Modifier la prochaine instruction à effectuer (saut)
15                     CSC 3102                          De l'ordinateur au processus                       CSC 3102
L’ordinateur vu par l’utilisateur                                                       Qu’est ce qu’un programme ?
L’utilisateur installe des logiciels
Microsoft office, Chrome, Civilization V…                                               Programme binaire =
Ensemble d’instructions exécutables par le processeur + des
Logiciel = ensemble de fichiers                                                         données manipulées par ces instructions
• Fichiers ressources : images, vidéos, musiques…
• Fichiers programmes : fichier contenant des données et des                            Programme source =
instructions destinées à être exécutées par un ordinateur                             Ensemble d’opérations abstraites décrivant les actions à
effectuer + des données manipulées par ces opérations
In fine, l’utilisateur lance l’exécution de programmes
Excel, Word, Chrome, Civilization V, CivBuilder (permet de
construire des cartes pour civilization V)…
17                     CSC 3102                          De l'ordinateur au processus   18                  CSC 3102                      De l'ordinateur au processus
Exécution d’un programme binaire                                                           Exécution d’un programme binaire
Un binaire doit être chargé en mémoire pour être exécuté                                   Un binaire doit être chargé en mémoire pour être exécuté
(typiquement à partir du disque dur)                                                        Chargé à partir du disque dur, du réseau, d’un autre périphérique
Processeur                    Mémoire vive             Disque dur                           Processeur                    Mémoire vive             Disque dur
Case 60                                                                                     Case 60        155
Case 61                                                                                     Case 61         89
Fichier "pgm"                                                                               Fichier "pgm"
Case 62                                                                                     Case 62        121
155…                                                                                        155…
Case 63                                                                                     Case 63    …
1. Demande au disque de copier le fichier                                            2. Copie du contenu du fichier
"pgm" à partir de la case 60                                                "pgm" dans la case 60 et les suivantes
Bus de communication de l’ordinateur                                                        Bus de communication de l’ordinateur
19                     CSC 3102                             De l'ordinateur au processus   20                      CSC 3102                             De l'ordinateur au processus
Exécution d’un programme binaire                                                           Exécution d’un programme source
Un binaire doit être chargé en mémoire pour être exécuté                                   Solution 1 : après une traduction vers un programme binaire
Chargé à partir du disque dur, du réseau, d’un autre périphérique
Processeur                    Mémoire vive             Disque dur
Case 60        155                                                          Prog source                 Traduit          Prog binaire
Case 61         89
PC vaut 60                                           Fichier "pgm"                        Declare x = 0                                 155 89 121…
Case 62        121                                                     Ajoute 42 à x
Case 63    …
3. L’exécution du programme peut alors démarrer
En informatique le traducteur s’appelle un compilateur
Bus de communication de l’ordinateur
21                     CSC 3102                             De l'ordinateur au processus   22                      CSC 3102                             De l'ordinateur au processus
Exécution d’un programme source                                                            Quelques exemples de programmes
Solution 2 : en le faisant interpréter par un autre programme                              Word, Excel ou Chrome sont des programmes binaires
(appelé interpréteur)
En général, dans un logiciel de jeux
Prog source                 Lit et            Interpréteur                              • Le jeu lui-même est un programme binaire
interprète                                                     • Capable d’interpréter les mods qui, eux, sont directement des
declare x = 0                             1.   Lit programme source
programmes sources (mod = extension du jeu)
ajoute 42 à x                             2.   Pour chaque opération
Si declare …
Si ajoute …                            Les applications Android sont
Si soustrait …
• Interprétées avant Android KitKat (version 4.4)
• Compilées dès qu’elles sont installées depuis Android KitKat
Les pages Web dynamiques sont interprétées
23                     CSC 3102                             De l'ordinateur au processus   24                      CSC 3102                             De l'ordinateur au processus
Du programme au processus
Un processus est un programme en cours d’exécution
• Contient bien sûr les opérations du programme
III. Processus et système                                                    • Mais aussi son état à un instant donné
– Données en mémoire manipulées par le programme
– Valeurs des registres du processeur
– État des périphériques (fichiers ouverts, connexions réseaux…)
CSC 3102                                                           26                    CSC 3102                            De l'ordinateur au processus
Gestion des processus                                                                    Architecture globale à l’exécution
Le système d’exploitation est un logiciel particulier qui gère
Processus      Processus 1                Processus 2
• Un noyau de système
Gestionnaire de processus + IPC +
(Le noyau du système est le seul programme qu’on n’appelle pas                       Système             Vision haut niveau du matériel
processus quand il s’exécute)                                                                   (Fichiers, connexions réseaux, terminaux…)
• Un ensemble de programmes utilitaires
Mémoire vive         Carte graphique
• Démarrer des processus
(en chargeant le programme binaire ou l’interpréteur adéquat)                         Matériel               Bus de communication
• Arrêter des processus
• Offrir une vision de haut niveau du matériel aux processus                                                                                                  Internet
• Offrir des mécanismes de communication inter-processus (IPC)                                          Processeur     Disque dur Carte réseau
27                    CSC 3102                            De l'ordinateur au processus   28                    CSC 3102                            De l'ordinateur au processus
Naissance des premiers systèmes UNIX                                                     Objectif du module
1969 : première version d’UNIX en assembleur                                             Étude des systèmes Unix par l’exemple
1970 : le nom UNIX est créé
1971 : invention du langage de programmation C pour réécrire                             À l’aide du langage bash (CI1)
UNIX dans un langage de haut niveau                                                       • Langage interprété par le programme bash
• Langage spécialisé dans la gestion de processus
• La notion de fichier (CI2 à 4)
• La notion de processus (CI5)
• Quelques mécanismes de communication inter-processus (CI6 à
Ken Thompson              Dennis Ritchie        Brian Kernighan
29                    CSC 3102                            De l'ordinateur au processus   30                    CSC 3102                            De l'ordinateur au processus
Notions clés du cours                                                                       Annexe : représentation des données
• Est composé de : mémoire, processeur, périphérique et bus
• Un processeur exécute des instructions se trouvant en mémoire                        Remarque : les diapositives qui suivent sont indispensables pour
Un logiciel contient des fichiers                                                        avoir un minimum de culture en informatique
• Ressources (images, sons, textures…)
• Programmes (source et/ou binaire)
Un programme est une suite d’opérations + des données
• Opérations + état à un instant donné
Le système gère les processus et abstrait le matériel
31                     CSC 3102                              De l'ordinateur au processus   32                     CSC 3102                           De l'ordinateur au processus
Représentation des nombres                                                                  L’hexadécimal en informatique
Notation décimale : un chiffre peut prendre 10 valeurs de 0 à 9                             Avec 4 bits, on encode 16 valeurs, soit 1 chiffre hexadécimal
276 = 2*102 + 7*101 + 6*100                                                                                         Case 0    1110 0001b
Case 1    0101 1001b
Notation binaire : un chiffre peut prendre 2 valeurs de 0 à 1                                                                           Case 2    0110 0001b
Case 3    1111 0000b
1101b = 1*23 + 1*22 + 0*21 + 1*20 = 13
Notation hexadécimale : un chiffre peut prendre 16 valeurs de 0 à f
Case 800    1100 1011b
0x276 =      2*162
+       7*161
+       6*160 =
0xb6 = 11*161 + 6*160 = 182
33                     CSC 3102                              De l'ordinateur au processus   34                     CSC 3102                           De l'ordinateur au processus
L’hexadécimal en informatique                                                               Que représentent les octets ?
Avec 4 bits, on encode 16 valeurs, soit 1 chiffre hexadécimal                               Une série d’octets peut représenter :
•   Un entier naturel (dans N)
Case 0          0xe1                         •   Un entier relatif (dans Z)
Case 0          0xe1
L’hexadécimal est donc adéquat
pour représenter les valeurs                   Case 1          0x59                         •   Une suite de caractères                 Case 1          0x59
des octets                                     Case 2          0x61                         •   Une valeur de vérité (vrai ou faux)     Case 2          0x61
Case 3          0xf0                         •   Un nombre flottant                      Case 3          0xf0
Un octet est représenté par                                                                 •   Un nombre complexe
2 chiffres hexadécimaux                                                                     •   Une instruction machine
Case 800          0xc3                                                                   Case 800          0xc3
• Ou tout autre ensemble énumérable
35                     CSC 3102                              De l'ordinateur au processus   36                     CSC 3102                           De l'ordinateur au processus
Représentation des entiers                                                         Représentation des valeurs de vérités
Les octets sont regroupés pour former              0xe159                          Booléen : valeur pouvant valoir vrai ou faux       Une valeur vraie
des valeurs entières
(souvent par 1, 2, 4 ou 8 octets)                     0xe1                                                                               0xe1
Peut être stocké sur 1 bit, 1 octet,
• Peut être vu comme un naturel                       0x59                         2 octets, 4 octets, 8 octets…                         0x59
(dans N)                                            0x61                                                                               0x61
0xe159 = 14*163 + 1*162 + 5*16 + 9
0xf0                         Convention :                                          0xf0
⇒ 0x159 représente 57689
• Ou comme un relatif (dans Z)                                                     • 0 vaut faux
0xe159 + 0x1ea7 = 0x0000 + une retenue                                           • Toute autre valeur vaut vrai
0x1ea7 est donc l’inverse de 0xe159                                                                                                    0xc3
0x1ea7 = 1*163 + 14*162 + 10*16 + 7 = 7847
⇒ 0xe159 représente -7847
37                   CSC 3102                       De l'ordinateur au processus   38                    CSC 3102                      De l'ordinateur au processus
Un octet peut être vu comme un caractère               Ceci est un ‘a’
Table ascii pour faire la correspondance
0x1f   ↵     0x41      A   0x61   a
0x20   ‘‘    0x42      B   0x62   b
…     …     0x43      C   0x63   c
0x30   0     0x44      D   0x64   d
0x31   1     0x45      E          e
0x32   2     0x46      F   0x66   f
0x33   3     0x47      G   0x67   g
…     …      …        …    …     …
39                   CSC 3102                       De l'ordinateur au processus
Terminal et shell
Le langage bash
Le shell bash                                                    Les variables
CSC3102 - Introduction aux systèmes d’exploitation               Arguments d’une commande
Élisabeth Brunet et Gaël Thomas                                  Commandes imbriquées
CSC 3102                                                 2                    CSC 3102                                       Le shell bash
Le terminal                                                                   Le terminal
Porte d’entrée d’un ordinateur
Un ordinateur n’a pas toujours un terminal intégré
Un terminal offre :
• un canal pour entrer des données (clavier, souris, écran tactile…)                           Bien que ce soit souvent le cas
• un canal pour afficher des données (écran, imprimante, haut-                           (smartphone, tablette, ordinateur portable…)
parleur…)
3                    CSC 3102                                 Le shell bash   4                    CSC 3102                                       Le shell bash
Un processus communique
Un terminal peut être virtualisé
avec l’utilisateur via un terminal
Un terminal virtuel émule le comportement d’un terminal                       On dit que le processus est attaché à un (et un seul) terminal
physique dans un autre terminal (virtuel ou physique)
Processus                           (humain ou
Canal         processus)
Terminal d’attache
Remarque : lorsqu’un terminal est fermé,
Terminaux virtuels                                        tous les processus attachés au terminal sont détruits
5                    CSC 3102                                 Le shell bash   6                    CSC 3102                                       Le shell bash
Le shell est un programme permettant d’interagir avec les                          Terminal et shell
services fournis par un système d’exploitation
Arguments d’une commande
Commandes imbriquées
Shell en mode graphique                   Shell en mode texte
(Bureau windows, X-windows…)          (bash, tcsh, zsh, ksh, cmd.exe…)
7                         CSC 3102                                  Le shell bash   8                     CSC 3102                                  Le shell bash
Le Bourne-Again Shell (bash)                                                        Remarque importante
Dans ce cours, nous étudions le shell en mode texte bash
En mode texte car permet d’écrire des scripts !                                Dans la suite du cours, nous utiliserons souvent le terme « shell »
pour désigner le « Bourne-Again shell »
Attaché à un terminal virtuel en mode texte
Mais n’oubliez pas que bash n’est qu’un shell parmi de
nombreux autres shells (bash, tcsh, zsh, ksh, cmd.exe…)
9                         CSC 3102                                  Le shell bash   10                    CSC 3102                                  Le shell bash
Bash                                                                                Un texte bash
Interpréteur de commandes                                                           Un texte est formé de mots bash
• Lit des commandes (à partir du terminal ou d’un fichier)
• Exécute les commandes                                                             Un mot bash est
• Écrit les résultats sur son terminal d’attache
• Formé de caractères séparés par des délimiteurs
(délimiteurs : espace, tabulation, retour à la ligne)
Bash définit un langage, appelé le langage bash                                       Exemple : Coucou=42!* est un unique mot
• Structures algorithmiques classiques                                              • Exceptions :
(if, while, for, etc.)                                                              – ; & && | || ( ) ` sont des mots ne nécessitant pas de
• Variables                                                                               délimiteurs
– Si une chaîne de caractères est entourée de "" ou '', bash
considère un unique mot
Accès rapide aux mécanismes offert par le noyau du système
d’exploitation (tube, fichiers, redirections, …)                                        bash est sensible à la casse (c.-à-d., minuscule ≠ majuscule)
11                        CSC 3102                                  Le shell bash   12                    CSC 3102                                  Le shell bash
Un texte bash                                                                Un texte bash
Un texte est formé de mots                                                   Un texte est formé de mots
Ici       nous   avons       5     mots                                      Ici     nous    avons       5      mots
" En bash, ceci est un unique "mot" y compris mot milieu"                    " En bash, ceci est un unique "mot" y compris mot milieu"
Voici, trois, mots                                                           Voici, trois, mots
" zip "@é§èçà°-_¨^$%ù£,.:+=' est un autre unique mot'                        " zip "@é§èçà°-_¨^$%ù£,.:+=' est un autre unique mot’
Nous|avons;NEUF&&mots&ici                                                    Nous|avons;NEUF&&mots&ici
13                     CSC 3102                              Le shell bash   14                    CSC 3102                               Le shell bash
Invocation d’une commande bash                                               Invocation d’une commande bash
Invocation d’une commande :                                                  Invocation d’une commande :
var1=val1 var2=val2… cmd arg1 arg2…                                          var1=val1 var2=val2… cmd arg1 arg2…
(tout est optionnel sauf cmd)                                                (tout est optionnel sauf cmd)
• Lance la commande cmd avec les arguments arg1, arg2… et                    • Lance la commande cmd avec les arguments arg1, arg2… et
les variables var1, var2… affectées aux valeurs val1, val2…                  les variables var1, var2… affectées aux valeurs val1, val2…
$                                                                            $ echo Salut tout le monde
15                     CSC 3102                              Le shell bash   16                    CSC 3102                               Le shell bash
$ echo Salut tout le monde                                                   $ echo Salut tout le monde
17                     CSC 3102                              Le shell bash   18                    CSC 3102                               Le shell bash
Invocation d’une commande bash                                                  Invocation d’une commande bash
Invocation d’une commande :                                                     Invocation d’une commande :
var1=val1 var2=val2… cmd arg1 arg2…                                             var1=val1 var2=val2… cmd arg1 arg2…
(tout est optionnel sauf cmd)                                                   (tout est optionnel sauf cmd)
• Lance la commande cmd avec les arguments arg1, arg2… et                       • Lance la commande cmd avec les arguments arg1, arg2… et
les variables var1, var2… affectées aux valeurs val1, val2…                     les variables var1, var2… affectées aux valeurs val1, val2…
$ echo "Salut      tout le   monde"                                             $ echo "Salut       tout le    monde"
19                   CSC 3102                                   Le shell bash   20                    CSC 3102                                  Le shell bash
Invocation d’une commande bash                                                  La première commande à connaître
Invocation d’une commande :                                                     man 1 cmd
var1=val1 var2=val2… cmd arg1 arg2…                                             • man pour manuel : donne de l’aide
(tout est optionnel sauf cmd)                                                   • 1 (optionnel) indique la section d’aide de la commande
• Lance la commande cmd avec les arguments arg1, arg2… et                          – 1 : commandes
les variables var1, var2… affectées aux valeurs val1, val2…                  • cmd est la commande dont on veut consulter le manuel
$ echo "Salut   tout le      monde"                                             $ man ls
Salut   tout le   monde
21                   CSC 3102                                   Le shell bash   22                    CSC 3102                                  Le shell bash
La première commande à connaître                                                Caractères spéciaux de bash
man 1 cmd                                                                       Caractères spéciaux
• man pour manuel : donne de l’aide                                              • \ ' ` " > < $ # * ~ ? ;( ) { }
• 1 (optionnel) indique la section d’aide de la commande                           (' est appelé quote ou apostrophe
– 1 : commandes                                                                 alors que ` est appelé antiquote ou accent grave)
• cmd est la commande dont on veut consulter le manuel                           • Explication de chacun donnée dans la suite du cours
Désactiver l’interprétation des caractères spéciaux
• \ désactive l’interprétation spéciale du caractère suivant
• '…' ⇒ désactive l’interprétation dans toute la chaîne
• "…" ⇒ seuls sont interprétés les caractères $ \ ` (accent grave)
23                   CSC 3102                                   Le shell bash   24                    CSC 3102                                  Le shell bash
Script bash                                                                            Structure d’un script bash
Programme bash = texte bash dans un fichier texte                                      Première ligne : #! /bin/bash
• Interprétable par bash au lancement par l’utilisateur                                • #! : indique au système que ce fichier est un ensemble de
• Modifiable par un éditeur de texte (p. ex. emacs, vi, mais pas word !)                 commandes à exécuter par l’interpréteur dont le chemin suit
• Un programme bash doit être rendu exécutable avec :                                       – par exemple : /bin/sh, /usr/bin/perl, /bin/awk, etc.
chmod u+x mon_script.sh                                                            • /bin/bash lance bash
(notion vue dans le CI2 sur le système de fichiers)
• Par convention, les noms de script sont suffixés par l’extension « .sh »             Puis séquence structurée de commandes shell
– p. ex., mon_script.sh                                                                                 #! /bin/bash
Invocation du script nommé mon_script.sh avec                                                               commande1
• ./mon_script.sh                                                                                                          mon_script.sh
./ indique que le script se trouve                             …
• Avec ses arguments :                          dans le répertoire courant
./mon_script.sh          arg1 arg2          (notion vue dans le CI2)              Sortie implicite du script à la fin du fichier
• Sortie explicite avec la commande exit
25                      CSC 3102                                      Le shell bash    26                      CSC 3102                                   Le shell bash
Variables bash
Déclaration/affectation avec = (exemple ma_var=valeur)
Les variables                                                                          Consultation en préfixant du caractère $ (exemple $ma_var)
Saisie interactive : read var1 var2 ... varn
Arguments d’une commande                                                               •   Lecture d’une ligne saisie par l’utilisateur (jusqu’au retour chariot)
•   Le premier mot va dans var1
Commandes imbriquées                                                                   •   Le second dans var2
•   Tous les mots restants vont dans varn
27                      CSC 3102                                      Le shell bash    28                      CSC 3102                                   Le shell bash
Variables bash                                                                         Variables bash - exemple
Déclaration/affectation avec = : ma_var=valeur
Consultation en préfixant du caractère $ : $ma_var
•   Lecture d’une ligne saisie par l’utilisateur (jusqu’au retour chariot)
•   Le second dans var2
29                      CSC 3102                                      Le shell bash    30                      CSC 3102                                   Le shell bash
Variables bash - exemple                                                 Variables bash - exemple
$ a=42                                                                   $ a=42
$                                                                        $ echo $a
31                  CSC 3102                             Le shell bash   32                  CSC 3102   Le shell bash
$ echo $a                                                                $ echo $a
42                                                                       42
$ s='Bonjour, monde!!!'                                                  $ s='Bonjour, monde!!!'
$                                                                        $ echo $s
Bonjour, monde!!!
33                  CSC 3102                             Le shell bash   34                  CSC 3102   Le shell bash
$ echo $s                                                                $ echo $s
Bonjour, monde!!!                                                        Bonjour, monde!!!
$ read x                  Saisi par l’utilisateur                        $ read x
Ceci est une phrase                                                      Ceci est une phrase
$                                                                        $ echo $x
35                  CSC 3102                             Le shell bash   36                  CSC 3102   Le shell bash
Variables bash - exemple                                                       Variables bash - exemple
$ a=42                                                                         $ a=42
$ echo $a                                                                      $ echo $a
42                                                                             42
$ s='Bonjour, monde!!!'                                                        $ s='Bonjour, monde!!!'
$ echo $s                                                                      $ echo $s
Bonjour, monde!!!                                                              Bonjour, monde!!!
$ read x                                                                       $ read x
Ceci est une phrase                                                            Ceci est une phrase
$ echo $x                                                                      $ echo $x
$ read x y                     Saisi par l’utilisateur                         $ read x y
$                                                                              $ echo $x
37                   CSC 3102                                  Le shell bash   38                   CSC 3102                                  Le shell bash
Variables bash - exemple
$ a=42                                                                         Terminal et shell
42                                                                             Le langage bash
$ s='Bonjour, monde!!!'
Bonjour, monde!!!                                                              Les variables
Ceci est une phrase                                                            Les structures algorithmiques
$ read x y
$ echo $x                                                                      Commandes imbriquées
Tous les mots qui suivent
est une phrase
39                   CSC 3102                                  Le shell bash   40                   CSC 3102                                  Le shell bash
if cond; then
Schéma algorithmique séquentiel                                                Schéma alternatif (if)                          elif cond; then
Suite de commandes les unes après les autres                                   Schéma alternatif simple                    fi
• Sur des lignes séparées                                                      • Si alors … sinon ( si alors … sinon … )
• Sur une même ligne en utilisant le caractère point virgule (;) pour          • elif et else sont optionnels
41                   CSC 3102                                  Le shell bash   42                   CSC 3102                                  Le shell bash
Conditions de test                                                                           Conditions de test
Tests sur des valeurs numériques                                                             Tests sur des valeurs numériques
•   [   n1   –eq   n2   ]   : vrai si n1   est égal à n2                                     •   [   n1   –eq   n2   ]   : vrai si n1   est égal à n2
•   [   n1   –ne   n2   ]   : vrai si n1   est différent de n2                               •   [   n1   –ne   n2   ]   : vrai si n1   est différent de n2
•   [   n1   –gt   n2   ]   : vrai si n1   supérieur strictement à n2                        •   [   n1   –gt   n2   ]   : vrai si n1   supérieur strictement à n2
•   [   n1   –ge   n2   ]   : vrai si n1   supérieur ou égal à n2                            •   [   n1   –ge   n2   ]   : vrai si n1   supérieur ou égal à n2
•   [   n1   –lt   n2   ]   : vrai si n1   inférieur strictement à n2                        •   [   n1   –lt   n2   ]   : vrai si n1   inférieur strictement à n2
•   [   n1   –le   n2   ]   : vrai si n1   est inférieur ou égal à n2                        •   [   n1   –le   n2   ]   : vrai si n1   est inférieur ou égal à n2
Tests sur des chaînes de caractères                                                          Tests sur des chaînes de caractères
•   [   mot1 = mot2 ] : vrai si mot1 est égale à mot2                                        •   [   mot1 = mot2 ] : vrai si mot1 est égale à mot2
•   [   mot1 != mot2 ]: vrai si mot1 n’est pas égale à mot2                                  •   [   mot1 != mot2 ]: vrai si mot1 n’est pas égale à mot2
•   [   -z mot ] : vrai si mot est le mot vide                                               •   [   -z mot ] : vrai si mot est le mot vide
•   [   -n mot ] : vrai si mot n’est pas le mot vide                                         •   [   -n mot ] : vrai si mot n’est pas le mot vide
43                           CSC 3102                                        Le shell bash   44                           CSC 3102                                         Le shell bash
Remarque sur les conditions                                                                  Schéma alternatif (if)                                      elif cond; then
[ cond ] est un raccourci pour la commande test cond                                         Schéma alternatif simple                                fi
• Si alors … sinon ( si alors … sinon … )               x=1
test est une commande renvoyant vrai (valeur 0) ou faux                                      • elif et else sont optionnels                          if [ $x -eq $y ]; then
echo "$x = $y"
(valeur différente de 0) en fonction de l’expression qui suit                                                                                        elif [ $x -ge $y ]; then
echo "$x >= $y"
if [ $x -eq 42 ]; then                                                                                                       else
echo "$x < $y"
if test $x -eq 42; then
45                           CSC 3102                                        Le shell bash   46                           CSC 3102                                         Le shell bash
if cond; then                                                                                if cond; then
cmds                                                                                         cmds
Schéma alternatif (case)                                    elif cond; then
else                                                                                         else
Schéma alternatif simple                                fi                                   Schéma alternatif simple                                fi
• Si alors … sinon ( si alors … sinon … )                                                    • Si alors … sinon ( si alors … sinon … )
• elif et else sont optionnels                          case mot in                          • elif et else sont optionnels                          case mot in
motif1)                                                                                      motif1)
…;;                                                                                          …;;
motif2)                                                                                      motif2)
*)                                                                                           *)
Schéma alternatif multiple                                   …;;
• Si mot vaut motif1 …                                  esac                                 • Si mot vaut motif1 …                                  esac
Sinon si mot vaut motif2 …                                                                   Sinon si mot vaut motif2 …                            res="fr"
Sinon …                                                                                      Sinon …                                               case $res   in
"fr")
• Motif : chaîne de caractères pouvant                                                       • Motif : chaîne de caractères pouvant                       echo   "Bonjour";;
utiliser des méta-caractères (voir CI3)                                                      utiliser des méta-caractères (voir CI3)                  "it")
echo   "Ciao";;
• * ) correspond au cas par défaut                                                           • * ) correspond au cas par défaut                         *)
echo   "Hello";;
47                           CSC 3102                                        Le shell bash   48                           CSC 3102                        esac             Le shell bash
Schémas itératifs                                                                 Schémas itératifs
while cond; do                                                                      while cond; do
cmds                                                                                cmds
Boucles                                             done                          Boucles                                               done
• while                                                                           • while
– Tant que … faire …                                                               – Tant que … faire …                         while [ $x –ge 0 ]; do
– Mot clé break pour sortir de la boucle                                           – Mot clé break pour sortir de la boucle        read x
49                     CSC 3102                                   Le shell bash   50                       CSC 3102                                   Le shell bash
while cond;
; do                                                                   while cond;
x=10                                                                               x=10
– Tant que … faire …                         while [ $x –ge 0 ]; do                – Tant que … faire …                         while [ $x –ge 0 ]; do
– Mot clé break pour sortir de la boucle        read x                             – Mot clé break pour sortir de la boucle        read x
echo $x                                                                            echo $x
done                                                                               done
• for                                                                             • for
– Pour chaque … dans … faire …                for var in liste; do                 – Pour chaque … dans … faire …                 for var in liste; do
– var correspond à la variable d’itération    done
– var correspond à la variable d’itération     done
– liste : ensemble sur lequel var itère                                            – liste : ensemble sur lequel var itère
for var in 1 2 3 4; do
51                     CSC 3102                                   Le shell bash   52                       CSC 3102                                   Le shell bash
Terminal et shell                                                                 mon_script.sh arg1 arg2 arg3 arg4 …
⇒ chaque mot est stocké dans une variable numérotée
mon_script.sh      arg1    arg2   arg3   arg4         …
Les variables                                                                             "$0"           "$1"    "$2"   "$3"   "$4"         …
Les structures algorithmiques                                                     •   "$0" : toujours le nom de la commande
•   "$1" … "$9" : les paramètres de la commande
Arguments d’une commande                                                          •   $# : nombre de paramètres de la commande
•   "$@" : liste des paramètres : "arg1" "arg2" "arg3" "arg4" …
•   shift : décale d’un cran la liste des paramètres
53                     CSC 3102                                   Le shell bash   54                       CSC 3102                                   Le shell bash
Arguments d’une commande                             Arguments d’une commande
#! /bin/bash                                         #! /bin/bash
for i in "$@"; do                                    for i in "$@"; do
echo $i                                              echo $i
done         mon_echo.sh
$                                                    $./mon_echo.sh
55                    CSC 3102       Le shell bash   56                    CSC 3102                              Le shell bash
$./mon_echo.sh                                       $./mon_echo.sh
$./mon_echo.sh toto titi                             $./mon_echo.sh toto titi
toto                                                 toto
titi                                                 titi
$                                                    $./mon_echo "fin de" la demo
57                    CSC 3102       Le shell bash   58                    CSC 3102                              Le shell bash
Imbrication de commandes
Terminal et shell                                    Pour récupérer le texte écrit sur le terminal par une commande
dans une chaîne de caractères
Le langage bash                                      • $(cmd)
• Attention à ne pas confondre avec $cmd qui permet l’accès à la
valeur de la variable cmd
59                    CSC 3102       Le shell bash   60                    CSC 3102                              Le shell bash
Imbrication de commandes                                                    Imbrication de commandes
Pour récupérer le texte écrit sur le terminal par une commande              Pour récupérer le texte écrit sur le terminal par une commande
dans une chaîne de caractères                                               dans une chaîne de caractères
• $(cmd)                                                                    • $(cmd)
• Attention à ne pas confondre avec $cmd qui permet l’accès à la            • Attention à ne pas confondre avec $cmd qui permet l’accès à la
valeur de la variable cmd                                                   valeur de la variable cmd
$ date                                                                      $ date
lundi 27 juillet 2015, 12:47:06 (UTC+0200)                                  lundi 27 juillet 2015, 12:47:06 (UTC+0200)
$                                                                           $ echo "Nous sommes le $(date). "
Nous sommes le lundi 27 juillet 2015, 12:47:06
(UTC+0200).
61                   CSC 3102                               Le shell bash   62                   CSC 3102                               Le shell bash
Pour récupérer le texte écrit sur le terminal par une commande              Terminal et shell
• $(cmd)                                                                    Le langage bash
$ date                                                                     Les structures algorithmiques
lundi 27 juillet 2015, 12:47:06 (UTC+0200)
$ echo "Nous sommes le $(date). "
$ echo "Nous sommes le $date."                                             Commandes imbriquées
Attention, récupère la variable date
et non le résultat de la commande date
63                   CSC 3102                               Le shell bash   64                   CSC 3102                               Le shell bash
Conclusion                                                                  En route pour le TP !
• Terminal, shell
• Interpréteur de commande bash
– Commandes, langage bash
• Caractères spéciaux de bash
• Script bash
Commandes clés
• man, bash, echo, read
Commandes à connaître
65                   CSC 3102                               Le shell bash   66                   CSC 3102                               Le shell bash
Besoin de mémoriser des informations
• Photos, PDF, données brutes, exécutables d’applications, le système
d’exploitation lui-même, etc.
Organisation du stockage sur mémoire de masse
• Localisation abstraite grâce à un chemin dans une arborescence
• Unité de base = fichier
CSC3102 – Introduction aux systèmes d’exploitation
Exemples de types de systèmes de fichiers
Élisabeth Brunet & Gaël Thomas
• NTFS pour Windows, ext2, ext3, ext4 pour Linux, HFSX pour Mac-OS
• FAT pour les clés USB, ISO pour les CD
• … et des myriades d’autres types de systèmes de fichiers
CSC 3102                                                    2        2015-2016       CSC 3102                            Système de Fichiers
Qu’est-ce qu’un fichier
Le système de fichiers vu par un processus                                       Un fichier est la réunion de
•    Un contenu, c’est-à-dire un ensemble ordonné d’octets
Le système de fichiers sur disque                                                 •    Un propriétaire
•    Des horloges scalaires (création, dernier accès, dernière modif)
•    Des droits d’accès (en lecture, en écriture, en exécution)
Attention : c’est inattendu, mais un fichier est indépendant de
son nom (c.-à-d., le nom ne fait pas parti du fichier et un fichier
peut avoir plusieurs noms)
3     2015-2016      CSC 3102                              Système de Fichiers   4        2015-2016       CSC 3102                            Système de Fichiers
On stocke de nombreux fichiers                                                   Organisation en répertoires
Facilement plusieurs centaines de milliers de fichiers dans un                   Répertoire = fichier spécial qui associe des noms à des fichiers
sous-repertoire       f1
• Plusieurs milliers gérés/utilisés directement par l’utilisateur                                               f1                 …
• Plusieurs centaines de milliers pour le système et les applications                un-repertoire              f2
sous-repertoire                                        f2
tableau.jpg                          tableau.jpg
Problème : comment retrouver facilement un fichier parmi des                                                                        …
centaines de milliers ?
Solution : en rangeant les fichiers dans des répertoires (aussi
appelés dossiers)                                                                                                      script.sh
echo "Hello!!!"
5     2015-2016      CSC 3102                              Système de Fichiers   6        2015-2016       CSC 3102                            Système de Fichiers
Organisation en répertoires                                                                               Organisation en répertoires
Répertoire = fichier spécial qui associe des noms à des fichiers                                          Répertoire = fichier spécial qui associe des noms à des fichiers
sous-repertoire                      f1
f1                            …
f2                                                                       un-repertoire
sous-repertoire                                                                                                                                                                        f2
tableau.jpg                                                                                                                                         tableau.jpg
Mais dans ces diapostives,
on représentera souvent
Le nom d’un                                                                                         un fichier par son nom
fichier n’est stocké que                                                                            (car c’est nettement plus intuitif !)
dans le répertoire qui le
(un fichier non référencé
est supprimé)
7        2015-2016             CSC 3102                                             Système de Fichiers   8        2015-2016                CSC 3102                                             Système de Fichiers
Arborescence standard                                                                                     Arborescence standard
des systèmes d’exploitation UNIX                                                                          des systèmes d’exploitation UNIX
La racine est référencée                                                                                  La racine est référencée
par le nom vide                                                                                           par le nom vide
home      etc          bin   lib    usr   media         …                               dev       tmp        home      etc       bin    lib      usr    media       …
bin   lib       …                                                                       de base              bin    lib     …
en mono-                                         montage pour des
utilisateur                                      disques externes
La plupart des systèmes d’exploitation Unix
(GNU/Linux, BSD, MacOS…) utilisent une arborescence                                                          Fichiers         Fichiers de Bibliothèques             Bibliothèques
temporaires       configuration   de base               supplémentaires
de base standardisée
Fichiers   Répertoire des                             Répertoire
(seul Windows utilise une arborescence réellement différente)                                    représentant les utilisateurs                          principal pour les
périphériques                                           programmes
(voir ci3)                                            exécutables
Vous pouvez la consulter en faisant : man hier (pour hierarchy)
9        2015-2016             CSC 3102                                             Système de Fichiers   10       2015-2016                CSC 3102                                             Système de Fichiers
Arborescence standard
Notion de répertoire de travail
des systèmes d’exploitation UNIX
processus bash
Répertoire                                                                                                     lancé par arya
racine associé
au compte arya
home      etc          bin   lib    usr   media         …                                                    home      etc       bin    lib      usr    media       …
arya         cersei       daenerys           …      bin   lib       …                                     arya          cersei         daenerys        …         bin    lib     …
photo     cours                                                                                           photo      cours                                             Chaque processus possède
Chaque utilisateur possède                                                                                                              un répertoire de travail
un répertoire de connexion (home directory)                                                                                                         (noté cwd pour
peinture.jpg                                                                                              peinture.jpg                                                  current working directory)
Accessible via la variable HOME                                                                               processus bash
processus emacs              lancé par cersei
lancé par arya
11       2015-2016             CSC 3102                                             Système de Fichiers   12       2015-2016                CSC 3102                                             Système de Fichiers
Notion de chemin                                                                                   Exemple de chemin absolu (1/2)
En bash, le séparateur de répertoire est le caractère /
Un chemin s’écrit sous la forme a/b/c qui référence
• le fichier c
home      etc      bin    lib   usr   media       …
• se trouvant dans le répertoire b
• se trouvant lui même dans le répertoire a                                                         arya         cersei      daenerys       …      bin   lib     …
Un chemin absolu part de la racine du système de fichiers                                         photo     cours
Commence par le nom vide (racine), par exemple /a/b/c
/home/arya/photo/peinture.jpg
Un chemin relatif part du répertoire de travail du processus
Commence par un nom non vide, par exemple a/b/c
13       2015-2016            CSC 3102                                       Système de Fichiers   14       2015-2016            CSC 3102                                       Système de Fichiers
Exemple de chemin absolu (2/2)                                                                     Exemple de chemin relatif (1/3)
Un utilisateur peut utiliser ~ comme raccourci pour son répertoire de connexion
home      etc      bin   lib   usr    media       …                                  cwd           home      etc      bin    lib   usr   media       …
arya         cersei      daenerys       …     bin    lib     …                                     arya         cersei      daenerys       …      bin   lib     …
photo     cours                                                                                    photo     cours
~/photo/peinture.jpg                                                                              Pour le processus bash de arya
photo/peinture.jpg
peinture.jpg                                                                                       peinture.jpg
Remarque : un utilisateur peut référencer le répertoire
de connexion d’un autre utilisateur avec ~name
(par exemple ~arya/photo/peinture.jpg)
15       2015-2016            CSC 3102                                       Système de Fichiers   16       2015-2016            CSC 3102                                       Système de Fichiers
Exemple de chemin relatif (2/3)                                                                    Exemple de chemin relatif (3/3)
Chaque répertoire possède un fichier nommé . s’auto-référençant                                    Chaque répertoire possède un fichier nommé .. référençant son parent
cwd           home      etc      bin   lib   usr    media       …                                                home      etc      bin    lib   usr   media       …
cwd            processus bash
Pour le processus bash de arya                                                                            lancé par daenerys
./photo/peinture.jpg
équivaut à                                                                                Pour le processus bash de daenerys
peinture.jpg                                                                                       peinture.jpg                                ../arya/photo/peinture.jpg
17       2015-2016            CSC 3102                                       Système de Fichiers   18       2015-2016            CSC 3102                                       Système de Fichiers
Remarque                                                                      Exemple
echo "Bonjour, vous êtes dans le répertoire $PWD"
Dans bash, quand vous écrivez ./script.sh, vous référencez le
echo "Votre maison se trouve en $HOME"
fichier script.sh du répertoire de travail du processus bash                   echo "Et vous avez lancé le script $0"
de votre terminal
/home/gael/tmp/script.sh
Bonjour, vous êtes dans le répertoire /home/gael/tmp
Votre maison se trouve en /home/gael
Et vous avez lancé le script ./script.sh
19    2015-2016      CSC 3102                           Système de Fichiers   20    2015-2016          CSC 3102                                 Système de Fichiers
Explorer l’arborescence de fichiers                                           Explorer l’arborescence de fichiers
cd chem : change directory                                                    ls chem : list
⇒ change le répertoire courant vers chem                                      ⇒ liste le chemin chem
Exemple : cd ../cersei; cd /home/arya/photo                                   • Si chem absent : affiche le contenu du répertoire courant
(sans argument, cd va dans votre répertoire de connexion)                     • Si chem répertoire : affiche le contenu du répertoire chem
• Sinon si chem est un fichier : affiche le nom du fichier
pwd : print working directory                                                 • Options utiles :
⇒ affiche le répertoire de travail (⇔ echo $PWD)                                  -a : affiche les fichiers cachés (c.-à.d., commençant par '.')
-l : affichage long (propriétaire, droits d’accès, taille etc.)
-d : affiche le informations sur un répertoire au lieu de son contenu
21    2015-2016      CSC 3102                           Système de Fichiers   22    2015-2016          CSC 3102                                 Système de Fichiers
Une machine peut posséder plusieurs disques
Le système de fichiers vu par un processus                                    Et chaque disque peut être scindé en plusieurs partitions
Utile pour installer plusieurs systèmes d’exploitation ou pour
Le système de fichiers sur disque                                               augmenter l’indépendance entre les données utilisateurs et le
• Chaque partition possède son système de fichiers indépendant
Disque 1                               Disque 2
Les droits d’accès                                                                   (par exemple Linux)                          Partition 1
(par exemple données
Partition 1                            personnelles)
(par exemple windows)
Table des partitions                     Table des partitions
23    2015-2016      CSC 3102                           Système de Fichiers   24    2015-2016          CSC 3102                                 Système de Fichiers
Les partitions dans les systèmes UNIX                                                                                  Le système de fichiers sur disque (1/2)
Un disque est identifié par le préfixe sd (scsi drive)                                                                 3 concepts fondamentaux
Les disques sont numérotés a, b, c…                                                                                     • Le bloc : unité de transfert entre le disque et la mémoire
Les partitions sont numérotées 1, 2, 3…                                                                                     (souvent 4096 octets)
(vous pouvez voir les disques/partitions en faisant ls /dev)
• L’inode (index node) : descripteur d’un fichier
–   Type de l’inode (fichier ordinaire, répertoire, autres)
–   Propriétaire, droits, dates de création/modification/accès
sda                                                    sdb
–   Taille
sda2                                                                                                     –   Liste des blocs du contenu du fichier
sdb1                                              –   …
Table des partitions                                     Table des partitions                                 • Donc, dans ce cours : fichier = inode + blocs du fichier
25     2015-2016               CSC 3102                                               Système de Fichiers              26     2015-2016          CSC 3102                                  Système de Fichiers
Le système de fichiers sur disque (2/2)                                                                                Montage d’une partition (1/2)
Avec ext, utilisé sous GNU/Linux, trois zones principales                                                              Le système maintient une table des montages
• Le superbloc, au début, décrit les autres zones                                                                     qui associe des chemins (points de montage) et des disques
• La table des inodes contient les inodes (inode 0 = racine)                                                           • / ⇒ sda1
• La zone des blocs de données contient les données des fichiers                                                       • /home ⇒ sdb1
• /mnt/windows ⇒ sdb2
Remarque : les partitions du disque dur peuvent se trouver sur une autre
5             3         4                                                      machine
1                                      Blocs de
8                        données                                       (typiquement Network File System, comme en salle TP, voir https://
contenu de inode 1 :                                                                                                       doc.ubuntu-fr.org/nfs)
4096 octets du bloc 1 puis
4096 octets du bloc 5 puis
312 octets du bloc 8                      inode 1         inode 2
Tables des                                  Lorsqu’un processus accède à un point de montage, il accède
à l’inode racine du disque indiqué dans la table des montages
Superbloc                                    Par exemple cd /mnt/windows accède à l’inode racine de sdb2
27     2015-2016               CSC 3102                                               Système de Fichiers              28     2015-2016          CSC 3102                                  Système de Fichiers
Montage d’une partition (2/2)                                                                                          Lien direct (1/2)
Exemple de points                                   sda1                                                                   Le nom d’un inode dans un répertoire s’appelle un lien direct
de montage                                                                                                              (hard link en anglais, aussi appelé parfois lien dur, physique ou matériel)
sdb1                                                                                                         On peut créer plusieurs liens directs vers le même inode
Commande ln chem-cible chem-lien
home                 etc       bin      lib       usr   mnt               sdb2                               • Aucune différence entre le nom original et le nouveau nom
• Facilite l’accès à des fichiers à partir d’emplacements connus
arya        daenerys                                      bin    lib            windows
apollinaire.txt
arya          …
photo      cours                                                                                                       home                                              Avec ses quatre dromadaires
Program Files                                                                             Don Pedro d’Alfaroubeira…
pedro.txt
peinture.jpg                                                                                                                                           …
ln /home/arya/apollinaire.txt /home/cersei/pedro.txt
29     2015-2016               CSC 3102                                               Système de Fichiers              30     2015-2016          CSC 3102                                  Système de Fichiers
Lien direct (2/2)                                                                Notion de lien symbolique (1/2)
Pour faire des raccourcis on utilise aussi des liens symboliques
Comme ln –s chem-cible chem-lien
Mais faire de multiples liens directs pour faire des raccourcis                   • Fichier spécial (type lien) dont le contenu est un chemin cible
peut poser problème                                                               • Lorsque le système doit ouvrir le fichier, il ouvre la cible à la place
• Pour supprimer un fichier, il faut supprimer tous les liens directs               de l’original
vers son inode, mais les utilisateurs sont distraits et en oublient                                             apollinaire.txt    Avec ses quatre dromadaires
arya           …                  Don Pedro d’Alfaroubeira…
• Un lien direct ne peut référencer qu’un inode de la même partition
home              cersei
/home/arya/apollinaire.txt
Fichier de type lien symbolique
ln –s /home/arya/apollinaire.txt /home/cersei/pedro.txt
31     2015-2016     CSC 3102                              Système de Fichiers   32        2015-2016        CSC 3102                                   Système de Fichiers
Notion de lien symbolique (2/2)                                                  Il existe de nombreux types de fichiers
Avantages des liens symboliques                                                   •    Fichier ordinaire
• Dès que le fichier cible est détruit, son espace est libéré                     •    Répertoire
(ouvrir le lien symbolique engendre alors une erreur)                           •    Lien symbolique
• Un lien symbolique peut référencer un fichier quelconque, y                     •    Device : un fichier qui représente un périphérique
compris appartenant à une autre partition                                              (disque dur, carte son, carte réseau, …)
– Par exemple /dev/sda1
Principal inconvénient des liens symboliques                                      • Tube nommé : fichier spécial étudié en CI6
• En cas de déplacement du fichier cible, le lien symbolique peut
• Socket : fichier spécial proche des tubes (non étudié dans ce
devenir invalide
33     2015-2016     CSC 3102                              Système de Fichiers   34        2015-2016        CSC 3102                                   Système de Fichiers
Commandes de base sur les fichiers
Le système de fichiers vu par un processus                                        •    Création
•    Suppression
Le système de fichier sur disque                                                  •    Copie
•    Déplacement / renommage
•    Consultation
•    Recherche
Commandes utilitaires bien pratiques
• Principales vues en TP
35     2015-2016     CSC 3102                              Système de Fichiers   36        2015-2016        CSC 3102                                   Système de Fichiers
COURS LINUX - INSTALLATION ET ADMINISTRATION →
INFZ20, Introduction au monde d'Unix →
UNIX : Compl ements, trucs et astuces →
Introduction Unix →
TD séance n 5 Répertoires et Fichiers sous Windows →
CSC 3102 - Sujets de TP Introduction aux systèmes d'exploitation →
LINUX - PHELMA - Grenoble INP →
MANUEL DES PROJETS ET DES ÉTUDES TRIMBLE ACCESS →
Sophos Anti-Virus pour Linux - Guide de configuration →
M1101a - Cours 3 - Processus, droits, fichiers - IUT2 Informatique →
Introduction au systŁme Unix/Linux →
Introduction au calcul parallèle avec la bibliothèque MPI (Message Passing Interface) →
Cours Unix 1 - Michel Mauny →
Supplément sur Linux - Commandes et script →
Cadastre des Pensions Documentation pour les organismes →
TP 1 - Linux : Commandes de base & utilitaires →
Systèmes d'exploitation - Le niveau utilisateur →

References: CSC 

CSC 

CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 

CSC 

CSC 
 CSC 

CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
In fine
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 

CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 

CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 

CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 
 CSC 

CSC