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ésentationOrganisation (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ésentationPré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 processusSché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 processusFonctionnement 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 processusExé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 processusDu 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 processusNotions 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 processusRepré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 processusTerminal 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 bashLe 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 bashUn 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 bashInvocation 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 bashScript 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 bashVariables 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 bashVariables 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 bashConditions 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 bashSché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 bashArguments 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 bashImbrication 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 bashSystè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 FichiersOrganisation 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 FichiersNotion 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 FichiersRemarque 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 FichiersLes 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 FichiersLien 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 FichiersVous pouvez aussi lire