8inf341
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 PresentationTRANSCRIPT
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
• 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%
Formatage de disque (2)
Une illustration du décalage des cylindres
Les cylindres sont décalés afin d’améliorer la performance
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.
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.
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é
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é
Disque vs disquette
Comparaisons des paramètres d'une disquette originale IBM PC (1978) et d'un disque dur Western Digital WD 18300
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
Structure des fichiers
3 principales sortes de fichiersSéquence d'octetsSéquence d'enregistrementsArbre
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
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
Exemple de fichiers binaires
a) Fichier exécutable en UNIX
b) Fichier d’archiveen UNIX
Attributs
Attributs possibles pour les fichiers
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
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 */
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 */}
Répertoires
Un système hiérarchisé de répertoire
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
Opérations sur les répertoires
1. Créer
2. Détruire
3. Ouvrir
4. Fermer
5. Lire
6. Renommer
7. Link
8. Unlink
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
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
Allocaion par liste chainée
Stocker un fichier comme une liste chaînée.
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.
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.
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.
Suite la semaine prochaine
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
Implémenter les répertoires (3)
2 façons d'implémenter les longs nom de fichiers
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.
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
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
Gestion de l'espace disque (2)
(a) Stocker les blocs libres dans une liste
(b) Utilisation d'un bitmap
Appels systèmes sur Unix
s est un code d'erreur
fd est un descripteur de fichier
position est un déplacement
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
Appels systèmes pour les répertoires
s est un code d'erreur
dir est un pointeur
dirent est un pointeur
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;
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
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.
UNIX (2)
Directory entry fields.
Structure d'un i-node(contient entre autres: information retourné par lstat)
UNIX (3)
Relation entre la table des descripteurs de fichiers, la table des fichiers ouverts et la table des i-nodes.
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)
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.
Appels système du système de fichiers sur Windows NT (1)
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) ;
Appels système du système de fichiers sur Windows NT (3)
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
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
Structure du sytème de fichier (2)
Attributs utilisés dans un enregistrement MFT
Recherche de nom de fichier
Exemple pour: C:maria\web.htm