CSC 3102 - COURS Introduction aux systèmes d'exploitation - Année 2019-2020 Coordinateurs : Élisabeth Brunet, Amina Guermouche et Gaël Thomas
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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
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
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
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
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
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
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
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
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