8inf341

51
8INF341 Les systèmes de fichiers

Upload: aldan

Post on 15-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

8INF341. Les systèmes de fichiers. Disque. Géométrie physique à deux zones d'un disque Géométrie virtuelle du même disque. Formatage de disque (1). Un secteur de disque Préambule: Séquence de bits permettant au matériel de reconnaître le début d’un secteur - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 8INF341

8INF341

Les systèmes de fichiers

Page 2: 8INF341

Disque

Géométrie physique à deux zones d'un disque

Géométrie virtuelle du même disque

Page 3: 8INF341

Formatage de disque (1)

Un secteur de disque

• Préambule: • Séquence de bits permettant au matériel de reconnaître le début d’un

secteur

• Contient également: numéro de cylindre, numéro de secteur, etc.

• Données:• Habituellement 512 octets

• ECC: Bits de redondance pour la récupération des donées en cas d’erreur

• Après un formatage de bas niveau, la capacité du disque est réduite d’environ 20%

Page 4: 8INF341

Formatage de disque (2)

Une illustration du décalage des cylindres

Les cylindres sont décalés afin d’améliorer la performance

Page 5: 8INF341

Formatage de disque (3)

a) Absence d’entrelacementb) Entrelacement simplec) Entrelacement double

Pour éviter l’entrelacement, le contrôleur de disque doit pouvoir mettre une piste complète en mémoire tampon.

Page 6: 8INF341

Formatage de disque (4)

• Après le formatage de bas niveau, on partitionne le disque.

• Chaque partition est l’équivalent d’un disque différent• Sur plusieurs sytèmes, le secteur 0 contient

l’enregistrement de démarrage principal (master boot record) qui contient:• Code de démarrage• Table des partitions

• Secteur de départ de chaque partition• Taille de chaque partition

• La partition contenenant le système d’exploitation est désignée comme partition active dans la table.

Page 7: 8INF341

Formatage de disque (5)

• La dernière étape est le formatage de haut niveau• Pour chaque partition

• Mis en place d’un bloc d’amorçage• Liste des espaces libres• Répertoire racine• Système de fichier vide• Un code est placé dans la table des partition pour

indiquer le type de système de fichiers utilisé

Page 8: 8INF341

Formatage de disque (6)

• Lorsque l’on active le système:• Le BIOS lit l’enregistrement de démarrage

principal (secteur 0)• Le BIOS lit le secteur de démarrage de la partition

active • Ce secteur contient un programme qui recherche le

répertoire contenant le SE ou un programme d’initialisation plus important

• Ce programme est chargé en mémoire puis exécuté

Page 9: 8INF341

Disque vs disquette

Comparaisons des paramètres d'une disquette originale IBM PC (1978) et d'un disque dur Western Digital WD 18300

Page 10: 8INF341

Temps

Le temps d'accès est déterminé par 3 facteurs

1. Recherche du premier secteur2. Délaie de rotation3. Temps de transfert

Le premier facteur domine

Page 11: 8INF341

Structure des fichiers

3 principales sortes de fichiersSéquence d'octetsSéquence d'enregistrementsArbre

Page 12: 8INF341

Types d'accèsSéquentiel

lire tous les octets/enregistrements depuis le débutNe peut faire de saut, peut revenir au débututile avec les ruban magnétique

Direct (ou aléatoire)octets/enregistrements lus dans n'importe quel ordreEssentiel pour les bases de donnéesDeux méthodes

déplacer un marqueur de fichier (seek), puis lire

Lire en indiquant le position de départ

Page 13: 8INF341

Types de fichiers• Fichiers ordinaires

• Généralement des fichiers ASCII ou binaires

• Répertoires• Fichiers spéciaux caractère:

• Servent à modéliser les périphériques d’E/S série tels que les terminaux, les imprimantes et les réseaux.

• Fichiers spéciaux bloc• Servent à modéliser les disques

Page 14: 8INF341

Exemple de fichiers binaires

a) Fichier exécutable en UNIX

b) Fichier d’archiveen UNIX

Page 15: 8INF341

Attributs

Attributs possibles pour les fichiers

Page 16: 8INF341

Opérations sur les fichiers

1.Créer2.Détruire3.Ouvrir4.Fermer5.Lire6.Écrire

7.Ajouter (append)8.Déplacer (Seek)9.Obtenir les

attributs10.Modifier les

attributs11.Renommer

Page 17: 8INF341

Appels système: Exemple (1/2)/* Programme de copie de fichiers. La vérification des erreurs et leur renvoi sont très basiques */#include <sys/types.h> /* Définitions de types */#include <fcntl.h> /* Définit des constantes O_RDONLY… */#include <stdlib.h> /* Prototypes des appels système */#include <unistd.h> /* Prototypes des appels système */

#define TAILLE_BUFFER 4096 /* Utilisation d’une mémoire de 4 096 octets */#define MODE 0700 /* Mode de protection du fichier (rw-rw-rw-) */

int main(int argc, char *argv[]) /* argc : nombre d’arguments, argv : pointeurs sur arguments */{ int df_src;  /* Descripteur du fichier source */ int df_cib;  /* Descripteur du fichier cible */ int nb_in,nb_out;  /* Valeurs lues, écrites */ char zone[TAILLE_BUFFER]; /* Zone mémoire */

if (argc != 3) exit(1);  /* Nombre de paramètres incorrect */ /* Ouvrir le fichier source et créer le fichier cible */ df_src=open(argv[1],O_RDONLY);  /* Ouverture du fichier source en lecture seule */ if (df_src<0) exit(2);  /* Impossible d’ouvrir le fichier source */

Page 18: 8INF341

Appels système: Exemple (2/2) df_cib=creat(argv[2],MODE);  /* Création du fichier cible */ if (df_cib<0) exit(3);  /* Impossible de créer le fichier cible */

/* Tout s’est bien passé, boucle de copie */ while (TRUE) { /* Boucle infinie */ /* Lecture depuis le fichier source */ nb_in=read(df_src,zone,TAILLE_BUFFER); if (nb_in<=0) break;  /* Quitter en fin de fichier */ /* Écriture dans le fichier cible */ nb_out=write(df_cib,zone,nb_in); if (nb_out<=0) exit(4);  /* Quitter en cas d’erreur */ }

close(df_src);  /* Fermeture du fichier source */ close(df_cib);  /* Fermeture du fichier cible */ if (nb_in==0) exit(0);  /* Sortie sans erreur */ else exit(5);  /* Sortie avec une erreur en lecture */}

Page 19: 8INF341

Répertoires

Un système hiérarchisé de répertoire

Page 20: 8INF341

Chemin d'accèsWindows: \usr\jim\toto.txt

UNIX: /usr/jim/toto.txt

MULTICS: >usr>jim>toto.txt

• Répertoire maîson

• Répertoire courant

• Chemin d’accèes absolu

• Chemin d’accèes relatif

Page 21: 8INF341

Opérations sur les répertoires

1. Créer

2. Détruire

3. Ouvrir

4. Fermer

5. Lire

6. Renommer

7. Link

8. Unlink

Page 22: 8INF341

Implémentation des systèmes de fichier

Une configuration possible

Superbloc: contient le type de système de fichier, le nombre de blocs,etc.

I-nodes: un I-node par fichier

Bloc: Unité d’allocation sur le disque

Master boot record

Page 23: 8INF341

Allocation contiguë

(a) Allocation contiguë de 7 fichiers sur les 40 premiers blocs(b) État du disque après que les fichiers D et E aient été enlevés

Ce système est utilisé sur les CD et les DVD

Page 24: 8INF341

Allocaion par liste chainée

Stocker un fichier comme une liste chaînée.

Page 25: 8INF341

Table d’allocation (FAT)

Allocation par liste chaînée utilisant une table en mémoire principale

• Pour être efficace, la table doit être entièrement en mémoire

• Avec un disque de 200 Go et des blocs de 1 Ko, la table contient 200 millions d’entrées.

Page 26: 8INF341

Les noeuds d’index (i-node)

FAT: Taille proportionnele à la taille du disque

Tableau des i-nodes: Taille proportionnelle au nombre maximal de fichiers qui peuvent être ouverts simultanément.

On associe un i-node à chaque fichier

Un i-node est un enregistrement qui contient les attributs et les adresses disque des blocs du fichier.

Page 27: 8INF341

Implémenter les répertoires (1)

(a) Un répertoire simpleEntrées de taille fixe comprenant l'adresses de disque et les

attributs

(b) Répertoire dans lequel chaque entrée est un i-node.

Page 28: 8INF341

Suite la semaine prochaine

Page 29: 8INF341

Implémenter les répertoires (2)

Anciennement le noms de fichiers et de répertoires étaient courts:

8 caractères sur MS DOS (plus 3 pour l’extension)

14 sur les anciennes version de UNIX

Champs de longueur fixe dans le répertoire

Aujourd’hui les noms peuvent être beaucoup plus longs

Windows, UNIX: 255 caractères

Page 30: 8INF341

Implémenter les répertoires (3)

2 façons d'implémenter les longs nom de fichiers

Page 31: 8INF341

Fichiers partagés (1)

• Dans les projets réalisés par plusieurs programmeurs, il est nécessaire de partager les fichiers• Une solution consiste à faire apparaître un même fichier dans plusieurs répertoires appartenant à différents usagers.

Page 32: 8INF341

Fichiers partagés (2)

(a) Situation avant la création du lien

(b) Après que le lien soit créé

(c) Après que le propriétaire original ait enlever le fichier

Page 33: 8INF341

Gestion de l'espace disque (1)

Comment déterminer la taille des bloc?

Conflit entre l’utilisation efficace de l’espace disque et la vitesse de transfert.

On suppose des fichiers de 2KB

Page 34: 8INF341

Gestion de l'espace disque (2)

(a) Stocker les blocs libres dans une liste

(b) Utilisation d'un bitmap

Page 35: 8INF341

Appels systèmes sur Unix

s est un code d'erreur

fd est un descripteur de fichier

position est un déplacement

Page 36: 8INF341

L'appel système lstat

Champs retournés par l'appel système lstat.

Périphérique contenant le fichier

Numéro de i-node

Mode (protection, etc.)

Nombre de liens

Propriétaire

Groupe

Taille du fichier en octets

Date de création

Dernier accès

Dernière modification

Page 37: 8INF341

Appels systèmes pour les répertoires

s est un code d'erreur

dir est un pointeur

dirent est un pointeur

Page 38: 8INF341

Exempledirp = opendir(".");while (dirp) { /* seulement si opendir a réussi */ errno = 0; if ((dp = readdir(dirp)) != NULL) { /* prochain fichier */ if (strcmp(dp->d_name, "toto") == 0) { closedir(dirp); return FOUND; } } else { /* pas de prochain fichier */ if (errno == 0) { /* fin du répertoire */ closedir(dirp); return NOT_FOUND; } closedir(dirp); /* erreur de lecture */ return READ_ERROR; }}return OPEN_ERROR;

Page 39: 8INF341

Exemple (Mac OS X)struct dirent { ino_t d_ino; /* numéro d’i-node */ __uint16_t d_reclen; /* longueur de cet enregistrement */ __uint8_t d_type; /* type de fichier */ __uint8_t d_namlen; /* longueur du nom de fichier*/ char d_name[__DARWIN_MAXNAMLEN + 1]; /* nom du fichier */};

/* * Types de fichier */ #define DT_UNKNOWN 0 #define DT_FIFO 1 #define DT_CHR 2 #define DT_DIR 4 #define DT_BLK 6 #define DT_REG 8 #define DT_LNK 10

Page 40: 8INF341

UNIX (1)

Structure d'une partition sous UNIX

Le superbloc contient de l’information critique: nombre de i-nodes, nombre de blocs sur le disque, début de la liste des blocs libres, etc.

Le noyau maintient une table des i-nodes qui contient les numéro de i-nodes des fichiers et des répertoires ouverts.

Page 41: 8INF341

UNIX (2)

Directory entry fields.

Structure d'un i-node(contient entre autres: information retourné par lstat)

Page 42: 8INF341

UNIX (3)

Relation entre la table des descripteurs de fichiers, la table des fichiers ouverts et la table des i-nodes.

Page 43: 8INF341

UNIX BSD

Permet des noms de fichier de 255 caractères

Un répertoire BSD avec 3 fichiers

Le même répertoire après que le fichier volumineux ait été enlevé

Implémenter les répertoires (1)

Page 44: 8INF341

Windows NT

Supporte plusieurs systèmes de fichiers:

• FAT-16 (partitions jusqu’à 2 Go)• FAT-32 (partitions jusqu’à 2 To )• NTSF (NT File System) (adresses 64 bits, partition jusqu’à 264 octets)

Un fichier NTSF n’est pas une simple séquence d’octets comme en UNIX

Un fichier est constitué de nombreux attributs, chacun étant représenté par un flot d’octets dont le nom est précédé par le nom du fichier et du symbole « : »

Nom_fichier:flot

Ces flots sont détruits lorsque le fichier est déplacé vers un autre système de fichiers tel que FAT-32

Les liens symbolique existent depuis Windows Vista mais est restreinte aux administrateurs.

Page 45: 8INF341

Appels système du système de fichiers sur Windows NT (1)

Page 46: 8INF341

Appels système du système de fichiers sur Windows NT (2)

Copier un fichier sur Windows XP (en pratique on utilise CopyFile):

/* ouvre les fichiers pour lecture/écriture */inhandle = CreateFile("data", GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL) ;outhandle = CreateFile("newf", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,

FILE_ATTRIBUTE_NORMAL, NULL) ;

/* copie le fichier */do { s = ReadFile(inhandle, buffer, BUF_SIZE, &count, NULL) ; if (s && count>0) WriteFile(outhandle, buffer, count, &ocnt, NULL);} while (s>0 && count>0);

/* ferme les fichiers */CloseHandle(inhandle) ;CloseHandle(outhandle) ;

Page 47: 8INF341

Appels système du système de fichiers sur Windows NT (3)

Page 48: 8INF341

Structure du sytème de fichier (0)

Structure d'un volume avec NTFS

Fichiers systèmes:Copie des trois premiers enregistrement de la MFT.

Bitmap des blocs utilisés.

Table des définition d'attributs.

Fichier de log pour la reconstruction

etc.

Bloc de boot

MFTFichiers systèmes Fichiers usagers

Contient, entre autres, l'adresse du premier bloc de la MTF

Page 49: 8INF341

Structure du sytème de fichier (1)

La MFT (master file table) de NTFS

La MFT est une suite d’enregistrement de 1 Ko

Chaque enregistrement décrit un fichier

Page 50: 8INF341

Structure du sytème de fichier (2)

Attributs utilisés dans un enregistrement MFT

Page 51: 8INF341

Recherche de nom de fichier

Exemple pour: C:maria\web.htm