1 / 51

8INF341

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

aldan
Download Presentation

8INF341

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8INF341 Les systèmes de fichiers

  2. Disque • Géométrie physique à deux zones d'un disque • Géométrie virtuelle du même disque

  3. 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%

  4. Formatage de disque (2) Les cylindres sont décalés afin d’améliorer la performance Une illustration du décalage des cylindres

  5. Formatage de disque (3) Absence d’entrelacement Entrelacement simple Entrelacement double Pour éviter l’entrelacement, le contrôleur de disque doit pouvoir mettre une piste complète en mémoire tampon.

  6. 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.

  7. 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é

  8. 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é

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

  10. Temps • Le temps d'accès est déterminé par 3 facteurs • Recherche du premier secteur • Délaie de rotation • Temps de transfert • Le premier facteur domine

  11. Structure des fichiers • 3 principales sortes de fichiers • Séquence d'octets • Séquence d'enregistrements • Arbre

  12. Types d'accès • Séquentiel • lire tous les octets/enregistrements depuis le début • Ne peut faire de saut, peut revenir au début • utile avec les ruban magnétique • Direct (ou aléatoire) • octets/enregistrements lus dans n'importe quel ordre • Essentiel pour les bases de données • Deux méthodes • déplacer un marqueur de fichier (seek), puis lire • Lire en indiquant le position de départ

  13. 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

  14. Exemple de fichiers binaires a) Fichier exécutable en UNIX b) Fichier d’archive en UNIX

  15. Attributs Attributs possibles pour les fichiers

  16. Opérations sur les fichiers • Créer • Détruire • Ouvrir • Fermer • Lire • Écrire • Ajouter (append) • Déplacer (Seek) • Obtenir les attributs • Modifier les attributs • Renommer

  17. 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 */

  18. 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 */ }

  19. Répertoires Un système hiérarchisé de répertoire

  20. Chemin d'accès Windows: \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

  21. Opérations sur les répertoires • Créer • Détruire • Ouvrir • Fermer • Lire • Renommer • Link • Unlink

  22. 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

  23. 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

  24. Allocaion par liste chainée Stocker un fichier comme une liste chaînée.

  25. 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.

  26. 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.

  27. Implémenter les répertoires (1) (a) Un répertoire simple Entrées de taille fixe comprenant l'adresses de disque et les attributs (b) Répertoire dans lequel chaque entrée est un i-node.

  28. Suite la semaine prochaine

  29. 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

  30. Implémenter les répertoires (3) • 2 façons d'implémenter les longs nom de fichiers

  31. 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.

  32. 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

  33. 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

  34. Gestion de l'espace disque (2) (a) Stocker les blocs libres dans une liste (b) Utilisation d'un bitmap

  35. Appels systèmes sur Unix • s est un code d'erreur • fd est un descripteur de fichier • position est un déplacement

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

  37. Appels systèmes pour les répertoires • s est un code d'erreur • dir est un pointeur • dirent est un pointeur

  38. Exemple dirp = 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;

  39. 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

  40. 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.

  41. UNIX (2) Directory entry fields. Structure d'un i-node (contient entre autres: information retourné par lstat)

  42. UNIX (3) Relation entre la table des descripteurs de fichiers, la table des fichiers ouverts et la table des i-nodes.

  43. 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)

  44. 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.

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

  46. 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) ;

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

  48. Structure du sytème de fichier (0) Contient, entre autres, l'adresse du premier bloc de la MTF 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. Fichiers systèmes Bloc de boot MFT Fichiers usagers

  49. 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

  50. Structure du sytème de fichier (2) Attributs utilisés dans un enregistrement MFT

More Related