chapitre 3 systèmes de gestion de fichiers

54
Chapitre 3 Systèmes de gestion de fichiers Jean Privat Université du Québec à Montréal INF3172 — Principes des systèmes d’exploitation Automne 2016 Jean Privat (UQAM) 03 — SGF INF3172 — Automne 2016 1 / 54

Upload: lamkhuong

Post on 05-Jan-2017

239 views

Category:

Documents


2 download

TRANSCRIPT

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