La table de fichiers est-elle dans le système de fichiers ou en mémoire?

9

Dans le contexte des tables de contrôle du système d'exploitation, le terme "tables de fichiers" se réfère-t-il à une structure de données qui fait partie du système de fichiers, ou qui est dans la mémoire principale (et dans ce cas, je suppose qu'il n'aurait que des références aux fichiers ouverts) ? Mon manuel 1 dit:

Les tableaux fournissent des informations sur l'existence de fichiers, leur emplacement sur la mémoire secondaire, leur état actuel et d'autres attributs. Une grande partie, sinon la totalité, de ces informations peut être conservée et utilisée par un système de gestion de fichiers, auquel cas le système d'exploitation a peu ou pas de connaissance des fichiers.

En outre, qu'est-ce qu'un système de gestion de fichiers? Est-ce à dire le système de fichiers?

1 Stallings, Operating Systems , 7 e éd., P. 127

Kazark
la source

Réponses:

22

Il n'est pas clair sans autre contexte de déterminer si Stalling parle de la table d'inode en mémoire ou des tables avec dans le système de fichiers. J'ai prêté une édition du livre bien antérieure à quelqu'un, mais je ne l'ai jamais récupérée; donc je ne peux pas rechercher le contexte moi-même.

Il existe trois "tables de fichiers", mais celle dont il est question ici est plus communément appelée " table d'inodes en mémoire "; la seconde est communément appelée « table de fichiers ouverts » et existe par processus. Les deux tables sont dans la mémoire du noyau et ne sont pas accessibles à un programme. La troisième "table" est en réalité deux ensembles de tables au sein du système de fichiers (sur disque), la première est la table des inodes sur le disque et la seconde sont les blocs de données eux-mêmes (note: cette discussion concerne la gestion traditionnelle du système de fichiers UNIX, les systèmes plus récents peuvent ont différentes organisations). Les entrées de la table inode ont des séquences de références dans des blocs de données qui contiennent des blocs de référence indirects ou des données réelles. La clé d'un fichiersur le système de fichiers est l'inode, pas les blocs de données eux-mêmes. Lorsque Stalling parle d'une "table de fichiers" sur disque, ce sera généralement la "plus petite" table sur disque qui désigne des fichiers, tels que la table inode ou la table de définition de bloc dans les systèmes FAT.

En termes de table d'inode en mémoire, l'inode est chargé à partir du système de fichiers, sa valeur st_nlink est incrémentée puis rendue accessible au reste du système, lorsque les données d'inode sont écrites sur le disque, le st_ctime est mis à jour. Si l'inode n'est plus nécessaire en mémoire, la valeur st_nlink est décrémentée et l'entrée dans le tableau est marquée comme libre. Chaque processus commencera par des références à trois ou cinq entrées dans la table des inodes en mémoire: les inodes de stdin, stdout, stderr- ce sont souvent un fichier de l' appareil (TTY) - et des références dans le répertoire courant et le répertoire racine. Un inode ne résidera dans la table qu'une seule fois, il peut donc y avoir plusieurs références à un seul inode dans la table.

La table des fichiers ouverts est conservée par processus et contient des références dans la table des inodes en mémoire ainsi que des pointeurs vers les tampons et des informations d'état (comme la fseek(2)valeur et les drapeaux de open(2). Le descripteur de fichier est littéralement un index dans la table des fichiers ouverts; mais la plupart les gens se réfèrent à l'entrée dans la table des fichiers ouverts lorsqu'ils parlent du "descripteur de fichiers".

Lorsqu'un fichier est ouvert à l'aide d' open(2)une, une entrée disponible dans la table des fichiers ouverts est trouvée, l'inode de la référence de fichier par le nom de chemin est déterminé, cet inode est chargé dans la table d'inode en mémoire, s'il n'est pas déjà chargé, le nombre de st_nlink est augmentée et l'entrée d'inode est référencée dans le descripteur de fichier, des indicateurs sont définis et des tampons sont alloués. Lorsqu'il est fermé, l'inverse se produit.

Les routines au sein du noyau sont appelées le " système de gestion de fichiers " et le " système de fichiers " est l'organisation sur le disque. De nos jours, il existe un certain nombre de modules «enfichables» qui peuvent être chargés ( modprobe(8)) dans le système de gestion de fichiers pour différentes organisations sur disque. Par exemple, il existe des types de système de fichiers ext2 / ext3 / ext4, et chacun d'eux a un module différent dans le système de gestion de fichiers du noyau; la même chose avec ntfs, sbfs, nfs, vfat, jfs, etc.

C'est un peu plus long que prévu à l'origine, alors je m'arrête ici.

Arcege
la source
C'est une réponse incroyablement bonne.
Kazark
Oui, ne vous arrêtez pas lorsque vous fournissez une réponse aussi bonne et complète.
Lizardx