Upload
lamkhuong
View
239
Download
2
Embed Size (px)
Citation preview
Chapitre 3Systèmes de gestion de fichiers
Jean PrivatUniversité du Québec à Montréal
INF3172 — Principes des systèmes d’exploitationAutomne 2016
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 1 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 2 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 3 / 54
Rappel
Rôles d’un SEGestion des processusGestion de l’espace mémoireGestion de l’espace disqueGestion des entrées-sorties
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 4 / 54
Gestion de l’espace disque
ObjectifsGérer l’espace, répondre aux demandes d’allocationet de libération de l’espaceDonner à l’utilisateur une abstraction cohérente etindépendante du mode de gestion de l’espace
Notion de base : le fichierLa partie du SE qui s’occupe des fichiers :Système de gestion de fichiers (SGF)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 5 / 54
Les fichiers
Besoins de l’utilisateur (et des logiciels)Contenu défini par l’utilisateurFichiers nommés (plutôt que numérotés)Organisés pour les retrouver facilementNotion de propriétaire et droits d’accèsIndépendants du matérielIl veut aussi un SGF extensible
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 6 / 54
Hiérarchie de fichiers
Sous UnixLa racine s’appelle / (slash) et elle est unique
Sous WindowsPlusieurs racines possibles (C :, etc.)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 7 / 54
Fichiers sous UnixUn principe Unix de base
Tout est fichier
Fichiers standardsTextes, exécutables, code source, images...Contenu décidés par l’utilisateur
Fichiers spéciauxRépertoires, fichiers physiques (dans /dev), lienssymboliques, tubes nommés...Manipulation par des appels systèmes spécifiquesRègles au cas par cas
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 8 / 54
Partitions
Morceau du système de fichierChaque partition est indépendanteMais partie d’un grand tout
Montage et démontageUne partition est montée dans un répertoire
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 9 / 54
PartitionsPartition de l’espace disque= Système de fichier simple
Contient tout le nécessaire pour sa bonne gestion
Se compose de deux partiesEspace de gestionEspace de donnée
Différents types de partition(différents systèmes de fichier)
FAT32, NTFS, HFS+, EXT4, BTRFS, XFS...
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 10 / 54
Partitions
Espace de gestionTable des i-nodes (i-nœuds) : matricule des fichiersUn moyen de connaître les blocs libres
Espace de donnéesContient les contenus des fichiersUtilisation de blocs de taille identique (en général)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 11 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 12 / 54
Table des inodes
Une entrée = un fichiernuméro d’inodetype de l’inode (fichier standard, répertoire...)propriétaire (uid, gid)droits (utilisateur, groupe, autre)taille du fichier en octetsdates (plusieurs sortes)nombre de liens durspointeurs vers blocs de donnée
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 13 / 54
Nom de fichiers et répertoires
Le nom des fichiers n’apparaît pas dans la tables desinodesLes donnés d’un répertoire contiennent uniquementla liste des fichiers avec leurs numéros d’inodes etleurs noms253 . .146 .540 f i c e l l e490 repondeu r
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 14 / 54
Droits et propriétaires
Système utilisateur-groupe-autresChaque utilisateur et associé à une identité (uid) età un groupe (gid)Chaque processus lancé par un utilisateur est associéà son uid et son gidChaque fichier du système possède un utilisateurpropriétaire et un groupe propriétaire
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 15 / 54
Droits des fichiers
Un triplet de 3 droits (rwx) est assigné à chaqueclasse de propriétaire (ugo)
r (read/lecture) : Le contenu du fichier/répertoireest accessible en lecturew (write/écriture) : Le contenu du fichier/répertoireest accessible en écriture (modifiable)x (execute/exécution) : Le fichier est exécutable. Lerépertoire est traversable
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 16 / 54
ExempleTable des inodesi n ode type d r o i t s prop t a i l l e2 d rwxr−xr−x 0 ;0 2048795 d rwxr−xr−x 470;47001 10241450 − rwxr−x−−− 470;47001 125
Contenu répertoires
/ r epu s /2 . . 2 . .795 . 2 .1450 f i f r e 795 r epu s
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 17 / 54
Dates (Unix)
Trois types de datesmtime : date de dernière modification du fichierctime : date de dernière modification de l’entréedans la table des inodesatime : date de dernier accès au fichier (lecture)
ReprésentationStockées en temps Unix
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 18 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 19 / 54
Liens durs
DéfinitionDes entrées dans un ou plusieurs répertoires (avecpossiblement des noms de fichiers distincts) quiréférencent un même inodeLe champ nombre de liens durs de la table desinodes compte le nombre de références
PiègeLes liens durs ne sont pas des liens
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 20 / 54
Création de liens durs
Commande ln et appel système link()$ ln oldpath newpath
int link (const char ∗oldpath, const char ∗newpath)
Attention :pas de distinction entre l’original et le lien
Tous les deux « sont » le même fichier
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 21 / 54
Suppression d’un fichierAlgorithmeSupprimer l’entrée dans le répertoire;Décrémenter le nombre de liens durs;si nombre de liens durs = 0 alors
Supprimer l’inode dans la table;Libérer les blocs pointés;
fin
Commande rm et appel système unlink()$ rm pathnameint unlink (const char ∗pathname)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 22 / 54
Limites de liens durs
Forcément sur la même partitionPas de liens durs entre répertoiresPas forcément l’effet voulu lors de l’écrasement defichiers
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 23 / 54
Liens symboliques
ObjectifRésoudre les limitations des liens durs
Nouveau type de fichier (L)Contenu : un chemin (relatif ou absolu)Même vers un fichier spécial : répertoire, fichierpériphérique, un autre lien symboliqueMême vers une autre partition
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 24 / 54
Création de liens symboliques
Appel système symlink(), commande ln$ ln −s oldpath newpathint symlink(const char ∗oldpath,const char ∗newpath)
ComportementLe nombre de liens dur de l’orginal reste inchangéAccéder au lien symbolique revient à manipuler lefichier liéLe SE fait le travail automatiquement
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 25 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 26 / 54
Accès à l’inode
Commandes ls et stat$ ls −li monfichier4965657 −rwx−−−−−− 1 p r i v a t p r o f 29752007−08−29 17 :15 mon f i c h i e r
Appel système stat() et lstat()int stat (const char ∗path, struct stat ∗buf);int lstat (const char ∗path, struct stat ∗buf);
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 27 / 54
Modification de l’inode
Droits d’accèschmod et chmod()
Propriétaireschown, chgrp et chown()
Datestouch et utime()
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 28 / 54
Manipulation des fichiers
Déplacer, renommerCommande mv, appel système rename()
CopierCommande cp, pas d’appel système
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 29 / 54
Manipulation de fichiers
Niveau Unix (norme POSIX, volume 2 du man)creat(), open(), read(), write(), close()
Niveau C (norme C89, volume 3 du man)fopen(), fread(), fwrite(), fprintf(), fclose()
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 30 / 54
RépertoiresLes répertoires sont des fichiers spéciaux
Manipulés de façon spécialeAssocient numéro d’inode et nom de fichier
Fonctions Unix (portables)DIR *opendir(const char *nom) ;struct dirent *readdir(DIR *dir) ;int closedir(DIR *dir) ;int chdir(const char *path) ;char *getcwd(char *buf, size_t size) ;
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 31 / 54
Descripteurs de fichiers
Désignent un fichier ouvertDans un processus, chaque fichier ouvert manipulévia un descripteur de fichierC’est un entier de type int
Trois descripteurs par défaut0 : entrée standard1 : sortie standard2 : sortie standard pour les messages d’erreur
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 32 / 54
Utilisation des descripteurs
Ouverture d’un fichierint creat(const char *pathname, int mode) ;retourne le descripteur de fichier (ou -1)
Exemple plus long
char ∗message = " He l l o World " ;i n t f d = c r e a t ( " h e l l o " , S_IRWXU) ;w r i t e ( fd , message , s t r l e n ( message ) ) ;c l o s e ( fd ) ;
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 33 / 54
Masque de création de fichiersQuels droits pour les fichiers crées
C’est l’utilisateur qui choisit ?C’est le programme qui choisit ?C’est l’administrateur qui choisit ?
⇒ Il y a un moyen de combiner les trois
umask, le masque de création de fichiersChaque processus a un masqueLes droits de l’umask sont éliminés des fichiers crées
Règle de bonne programmationUtiliser les droits les plus largesL’umask fera le reste
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 34 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 35 / 54
Adressage des fichiersRappel
L’espace de donnée est divisé en blocsLes données d’un fichier sont réparties entre blocs(la table des inodes en contient l’adresse)
Pointeurs vers les blocs de donnéePointeur direct : contient l’adresse d’un bloc dedonnéePointeur indirect : contient l’adresse d’un bloccontenant des pointeurs directsPointeur indirect double : contient l’adresse d’unbloc contenant des pointeurs indirects
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 36 / 54
Adressage des fichierExerciceDans la table des inodes
Il y a 13 pointeurs de blocs :10 sont des pointeurs directs1 est indirect1 est indirect double1 est indirect tripleUn bloc fait 2kUn pointeur de bloc est représenté sur 32 bits
QuestionQuel est la taille maximale d’un fichier ?
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 37 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 38 / 54
Table des descripteurs
RappelUn processus manipule des descripteurs de fichiersLe SE s’occupe de l’accès et de la cohérence desfichiers
Mise en œuvreUne table des descripteurs par processusLe descripteur est un indice de cette tableLe SE s’occupe des tables des inodesLe SE gère un tampon pour optimiser les accès
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 39 / 54
Tables du SE (globales)
Table des inodes en mémoire (TIM)Une entrée par fichier ouvertC’est l’ensemble des caches de l’ensemble desfichiers ouverts du SELe SE essaye de minimiser les accès disquesIl y a un asynchronisme entre les demandes del’utilisateur et les écritures effectives sur le disque.
Table des fichiers ouverts (TFO)Une entrée par demande d’ouverture de fichiers
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 40 / 54
Contenu des tablesTable des descripteurs (TD)
pointeur vers la table fichiers ouverts
Table fichiers ouverts (TFO)nbre descripteurs (de TD)mode d’ouverture (lecture, écriture)position (voir appel système lseek())pointeur vers la table des inodes en mémoire
Table inodes en mémoire (TIM)nombre pointeurs (de TFO)données des fichiers (méta-infos, caches)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 41 / 54
Ouverture multiple de fichiersPrincipe
Un même fichier peut être manipuléindépendamment par deux processus
ExempleDeux processus font un open() d’un même fichierChacun a un descripteurChaque descripteur pointe vers une entrée de latable des fichiers ouvertsChaque entrée de la table des fichiers ouvert pointevers le même inode en mémoire
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 42 / 54
Héritage entre processus
Lors d’un fork() (en plus du reste)La table des descripteurs est dupliquéeLes compteurs de la tables des fichiers ouverts sontincrémentésL’entrée dans la tables des fichiers ouverts estpartagée en particulier le compteur de position
ExempleEntrée et sorties standard
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 43 / 54
Duplication de descripteurs
Descripteurs synonymesDeux descripteurs d’un même processus peuventpointer une même entrée dans la table des fichiersouvertsAppels systèmes dup() et dup2()
Quel est l’intérêt ?Redéfinir les entrées et sorties standardCommunication par tube (pour plus tard)
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 44 / 54
Exemple
Redirection de la sortie standardi n t o = c r e a t ( " s o r t i e " , 0666 ) ;i f ( o == −1){
p e r r o r ( " Imp o s s i b l e d ’ o u v r i r ’ s o r t i e ’ " ) ;e x i t ( 1 ) ;
}c l o s e ( 1 ) ;dup2 (o , 1 ) ;p r i n t f ( " He l l o World !\ n" ) ;
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 45 / 54
Fermeture d’un fichierAlgorithme du close()
Le descripteur est libéré;Le compteur dans la TFO est décrémenté;si compteur FO == 0 alors
L’entrée dans la TFO est libérée;Le compteur dans la TIM est décrémenté;si compteur IM == 0 alors
L’entrée dans la TIM est synchronisée;L’entrée est libérée;
finfin
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 46 / 54
Fin des processus
Le SE nettoieLors de la terminaison d’un processus, le SE fermetous les descripteurs restés ouverts.
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 47 / 54
Pour résumerLors d’un open()
Une entrée dans la TFO est créeLe processus obtient un descripteur vers cette entrée
Cette entrée pointe vers la TIMSoit vers une nouvelle entréeSoit vers une entrée existante
Deux descripteurs peuvent pointer une mêmeentrée dans la TFO
Soit par héritage : fork()Soit par duplication de descripteurs : dup()
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 48 / 54
Plan1 Systèmes de fichiers
2 Table des inodes
3 Liens durs et liens symboliques
4 Accès et modification des fichiers
5 Adressage des fichiers
6 Traitement des fichiers ouverts
7 Fiabilité de l’espace disque
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 49 / 54
Besoin de fiabilité
L’importantLes données sont la partie essentielle d’un systèmeinformatique« Système d’information » : la valeur est dans lesinformations, pas dans le système
Administrateur systèmeUn des rôle d’un administrateur système est degarantir que les données ne sont ni perdues nicorrompues
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 50 / 54
Sauvegarde (backup)Objectifs
Récupérer d’une catastrophe naturelleRécupérer d’une erreur humaine
MoyensDupliquer les donnéesConserver un historiqueStocker le double ailleurs
Deux approchesSauvegarde physique vs. sauvegarde logique
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 51 / 54
Cohérence d’un SGF
CohérenceL’incohérence d’un système de fichier peut amener àdes pertes de donnéesDans l’idéal, la cohérence doit pouvoir être garantiepar le SGF
En pratique, cet idéal n’est pas atteignablebesoin de vérifier la cohérencebesoin de corriger les incohérences
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 52 / 54
Incohérences d’un SGFQuelques exemples
Un bloc est à la fois libre et utiliséLe nombre des liens durs est incohérentDeux fichiers occupent un même blocLes dates indiquent le futurLa taille est plus grande que le maximumUn répertoire contient un fichier avec un numérod’inode inexistant
Deux problèmesDétecterCorriger
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 53 / 54
Comment vérifier
Certaines vérifications prennent du tempsparcours nécessaire de l’arborescenceparcours de la table des inodes et des blocsd’indirection
Quand faire les vérificationsle moins souvent possiblequand un risque incohérence est détecté
Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 54 / 54