CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas

La page est créée Hervé Dupre
 
CONTINUER À LIRE
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
CSC 3102 – COURS
Introduction aux systèmes
d’exploitation

Année 2019-2020
Coordinateurs : Élisabeth Brunet, Amina
Guermouche et Gaël Thomas

http://www-inf.telecom-sudparis.eu/COURS/CSC3102/Supports/

  CSC 3101
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
Bienvenue en informatique !

                                                                                  Comprendre et savoir programmer des logiciels

                 Présentation du module

                 CSC 3102
                 Introduction aux systèmes d’exploitation
                 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
                                                                                     développer des logiciels

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
       internationaux

5                    CSC 3102                                  Présentation   6                    CSC 3102                                  Présentation
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
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
                                   programmer
    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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
Présentation du cours

                                                                                    Contexte du cours :
                                                                                     • Introduire notre objet d’étude : les systèmes d’exploitation
                De l’ordinateur au processus :
                                                                                    Objectifs :
                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
                Gaël Thomas
                                                                                    Notions abordées :
                                                                                     • 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

                                                                                    Définition d’un ordinateur

                                                                                    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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
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)
                      Bus de communication
                                                                                               Périphériques : matériel fournissant ou stockant des données
                                                                                               secondaires
                                                                                               Réseau, disque dur, souris, clavier, carte graphique, carte son…
                                                                     Internet
                                                                                               Bus de communication : bus interconnectant le processeur, la
         Processeur           Disque dur          Carte
                                                  Réseau
                                                                                               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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
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

 Ce qu’il faut retenir

     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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
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
                                                                155…
                         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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
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
     les processus
     • 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
     Rôle du système d’exploitation
     • 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

                                                                                              Comprendre
                                                                                               • La notion de fichier (CI2 à 4)
                                                                                               • La notion de processus (CI5)
                                                                                               • Quelques mécanismes de communication inter-processus (CI6 à
                                                                                                 9)
       Ken Thompson              Dennis Ritchie        Brian Kernighan
29                    CSC 3102                            De l'ordinateur au processus   30                    CSC 3102                            De l'ordinateur au processus
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
Notions clés du cours                                                                       Annexe : représentation des données

     Un ordinateur
     • 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
     Un processus est un programme en cours d’exécution
     • 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 =
                                                    630
                        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
CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
Représentation des entiers                                                         Représentation des valeurs de vérités
                                                       Le nombre
     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

 Représentation des caractères

     Un octet peut être vu comme un caractère               Ceci est un ‘a’

                                                           0xe1
     Table ascii pour faire la correspondance
                                                           0x59
         0x1f   ↵     0x41      A   0x61   a
                                                           0x61
         0x20   ‘‘    0x42      B   0x62   b
          …     …     0x43      C   0x63   c
                                                           0xf0
         0x30   0     0x44      D   0x64   d
                                                              …

         0x31   1     0x45      E          e
         0x32   2     0x46      F   0x66   f
                                                           0xc3
         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

                                                                                  Les structures algorithmiques

                 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)

                                                                                                                  Canal
                                                                                                                 d’entrée
                                                                                                                                 Utilisateur
                                                                                            Processus                           (humain ou
                                                                                                                  Canal         processus)
                                                                                                                 de sortie

                                                                                                      Terminal d’attache
                                                                                                        du processus

                                                                                                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

      Le shell est un programme permettant d’interagir avec les                          Terminal et shell
             services fournis par un système d’exploitation
                                                                                         Le langage bash

                                                                                         Les variables

                                                                                         Les structures algorithmiques

                                                                                         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

 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
                                                                                        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
                                                                                                                 commande2
     • ./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

     Terminal et shell
                                                                                            Déclaration/affectation avec = (exemple ma_var=valeur)
     Le langage bash

     Les variables                                                                          Consultation en préfixant du caractère $ (exemple $ma_var)

     Les structures algorithmiques
                                                                                            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

     Saisie interactive : read var1 var2 ... varn
     •   Lecture d’une ligne saisie par l’utilisateur (jusqu’au retour chariot)
     •   Le premier mot va dans var1
     •   Le second dans var2
     •   Tous les mots restants vont dans varn

29                      CSC 3102                                      Le shell bash    30                      CSC 3102                                   Le shell bash
Variables bash - exemple                                                 Variables bash - exemple

     $ a=42                                                                   $ a=42
     $                                                                        $ echo $a
                                                                              42
                                                                              $

31                  CSC 3102                             Le shell bash   32                  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
                                                                              Bonjour, monde!!!
                                                                              $

33                  CSC 3102                             Le shell bash   34                  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                  Saisi par l’utilisateur                        $ read x
     Ceci est une phrase                                                      Ceci est une phrase
     $                                                                        $ echo $x
                                                                              Ceci est une phrase
                                                                              $

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
     Ceci est une phrase                                                            Ceci est une phrase
     $ read x y                     Saisi par l’utilisateur                         $ read x y
     Ceci est une phrase                                                            Ceci est une phrase
     $                                                                              $ echo $x
                                                                                                                Premier mot
                                                                                    Ceci
                                                                                    $

37                   CSC 3102                                  Le shell bash   38                   CSC 3102                                  Le shell bash

 Variables bash - exemple

     $ a=42                                                                         Terminal et shell
     $ echo $a
     42                                                                             Le langage bash
     $ s='Bonjour, monde!!!'
     $ echo $s
     Bonjour, monde!!!                                                              Les variables
     $ read x
     Ceci est une phrase                                                            Les structures algorithmiques
     $ echo $x
     Ceci est une phrase
     $ read x y
                                                                                    Arguments d’une commande
     Ceci est une phrase
     $ echo $x                                                                      Commandes imbriquées
                                  Premier mot
     Ceci
     $ echo $y
                                  Tous les mots qui suivent
     est une phrase

39                   CSC 3102                                  Le shell bash   40                   CSC 3102                                  Le shell bash

                                                                                                                                if cond; then
                                                                                                                                    cmds
 Schéma algorithmique séquentiel                                                Schéma alternatif (if)                          elif cond; then
                                                                                                                                    cmds
                                                                                                                                else
                                                                                                                                   cmds
     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
       séparateur

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

                                                                                                                                                          if cond; then
                                                                                                                                                              cmds
 Remarque sur les conditions                                                                  Schéma alternatif (if)                                      elif cond; then
                                                                                                                                                              cmds
                                                                                                                                                          else
                                                                                                                                                             cmds
     [ cond ] est un raccourci pour la commande test cond                                         Schéma alternatif simple                                fi

                                                                                                  • Si alors … sinon ( si alors … sinon … )               x=1
                                                                                                                                                          y=2
     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"
                                echo coucou
                                                                                                                                                          fi
                             fi

                                        Équivaut à
                             if test $x -eq 42; then
                                echo coucou
                             fi

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
                                                                 cmds
                                                                                              Schéma alternatif (case)                                    elif cond; then
                                                                                                                                                              cmds
                                                             else                                                                                         else
                                                                cmds                                                                                         cmds
     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                                   …;;
                                                                                                  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
                                                                                                                                         x=10
         – 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
                                                                                                                                            echo $x
                                                                                                                                         done

49                     CSC 3102                                   Le shell bash   50                       CSC 3102                                   Le shell bash

 Schémas itératifs                                                                 Schémas itératifs
                                                         while cond;
                                                               do
                                                                      ; do                                                                   while cond;
                                                                                                                                                   do
                                                                                                                                                          ; do
                                                            
                                                            cmds                                                                                
                                                                                                                                                cmds
     Boucles                                             done                          Boucles                                               done

     • while                                                                           • while
                                                      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
                                                          cmds                                                                                cmds
         – 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
                                                                                                                                            echo $var
                                                                                                                                         done

51                     CSC 3102                                   Le shell bash   52                       CSC 3102                                   Le shell bash

                                                                                   Arguments d’une commande

     Terminal et shell                                                                 mon_script.sh arg1 arg2 arg3 arg4 …
                                                                                       ⇒ chaque mot est stocké dans une variable numérotée
     Le langage bash
                                                                                           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" …
     Commandes imbriquées
                                                                                       •   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
                                                          done         mon_echo.sh

     $                                                    $./mon_echo.sh
                                                          $

55                    CSC 3102       Le shell bash   56                    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
                                                          done         mon_echo.sh

     $./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
                                                          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
     Les variables
                                                            valeur de la variable cmd
     Les structures algorithmiques

     Arguments d’une commande

     Commandes imbriquées

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

 Imbrication de commandes

     Pour récupérer le texte écrit sur le terminal par une commande              Terminal et shell
     dans une chaîne de caractères
     • $(cmd)                                                                    Le langage bash
     • Attention à ne pas confondre avec $cmd qui permet l’accès à la
                                                                                 Les variables
       valeur de la variable cmd
      $ date                                                                     Les structures algorithmiques
      lundi 27 juillet 2015, 12:47:06 (UTC+0200)
      $ echo "Nous sommes le $(date). "
      Nous sommes le lundi 27 juillet 2015, 12:47:06
                                                                                 Arguments d’une commande
      (UTC+0200).
      $ echo "Nous sommes le $date."                                             Commandes imbriquées
      Nous sommes le .
      $
                         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 !

     Concepts clés
     • Terminal, shell
     • Interpréteur de commande bash
         – Commandes, langage bash
     • Documentation
     • Caractères spéciaux de bash
     • Script bash

     Commandes clés
     • man, bash, echo, read

     Commandes à connaître
     • date
65                   CSC 3102                               Le shell bash   66                   CSC 3102                               Le shell bash
Système de Fichiers

                                                                                     Besoin de mémoriser des informations
                                                                                      • Photos, PDF, données brutes, exécutables d’applications, le système
                                                                                        d’exploitation lui-même, etc.
                  Système de Fichiers
                                                                                     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)
    Les commandes utilisateurs

                                                                                     Attention : c’est inattendu, mais un fichier est indépendant de
    Les droits d’accès
                                                                                     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
    ordinateur
                                                                                                                      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                                                                        …
                                                                                     script.sh
    centaines de milliers ?

    Solution : en rangeant les fichiers dans des répertoires (aussi
    appelés dossiers)                                                                                                      script.sh
                                                                                                                     #! /bin/bash

                                                                                                                     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
                                                                        …
      script.sh
                                                                                                                                                                          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
                                                                                                                                                           script.sh
                                                                           référence
                                          #! /bin/bash
                                                                   (un fichier non référencé
                                          echo "Hello!!!"
                                                                         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       …

                                                                                                                                                  Commandes
                                                                                                                                                                                                        Points de
                                                            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

                                                                                                                   cwd
                        home      etc          bin   lib    usr   media         …                                                    home      etc       bin    lib      usr    media       …

        arya         cersei       daenerys           …      bin   lib       …                                     arya          cersei         daenerys        …         bin    lib     …

                                                                                                                                                 cwd
     photo     cours                                                                                           photo      cours                                             Chaque processus possède
                                      Chaque utilisateur possède                                                                                                              un répertoire de travail
                                                                                                                          cwd
                              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
                                                                                                        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
                                                                                                            processus bash
                                                                                                            lancé par arya

                       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
                                                                                                                                                       équivaut à
                                    Remarque : un utilisateur peut référencer le répertoire
                                      de connexion d’un autre utilisateur avec ~name
                                                                                                                                             /home/arya/photo/peinture.jpg
                                      (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
         processus bash
         lancé par arya

         cwd           home      etc      bin   lib   usr    media       …                                                home      etc      bin    lib   usr   media       …

        arya         cersei      daenerys       …     bin    lib     …                                     arya         cersei      daenerys       …      bin   lib     …

                                                                                                                                      cwd            processus bash
     photo     cours                                                                                    photo     cours
                                         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
                                                photo/peinture.jpg
                                                                                                                                                            équivaut à
                                                                                                                                                /home/arya/photo/peinture.jpg
17       2015-2016            CSC 3102                                       Système de Fichiers   18       2015-2016            CSC 3102                                       Système de Fichiers
Remarque                                                                      Exemple
                                                                                    #! /bin/bash

                                                                                    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

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

                                                                               Organisation des disques

                                                                                   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
                                                                                     système d’exploitation
                                                                                   • Chaque partition possède son système de fichiers indépendant
     Les commandes utilisateurs
                                                                                                Disque 1                               Disque 2
                                                                                               Partition 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                                              –   …
                        sda1

               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
       Par exemple,
                                                                                                       Une partition

                                                        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
                                                                                  inodes
                                                                                                                            à 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
                                                                                                                                              cersei
                                                                                    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
                                                                                      …
                                                                                                                       pedro.txt
                                                                                                                                           /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
                                                                                         cours)

33     2015-2016     CSC 3102                              Système de Fichiers   34        2015-2016        CSC 3102                                   Système de Fichiers

                                                                                  Commandes utilisateur

                                                                                      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
     Les commandes utilisateurs
                                                                                       •    Recherche

     Les droits d’accès
                                                                                      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
Vous pouvez aussi lire