2010-11-20 12 views
0

J'essaie de comprendre comment les répertoires et les fichiers sont reliés les uns aux autres au niveau du système de fichiers, en particulier les systèmes de fichiers * nix comme FFS ou EXT.inodes gestion des répertoires

Je comprends conceptuellement qu'un inode a des métadonnées et des pointeurs vers un emplacement de fichier, mais comment conserve-t-il les informations du répertoire et sait également quels sont les fichiers dans quel répertoire?

Répondre

2

Un répertoire a également un inode. Cependant, il ne contient pas de pointeurs vers les emplacements du contenu du fichier (car ce n'est pas un fichier) mais des pointeurs vers les inodes des fichiers/sous-répertoires du répertoire (donc c'est un fichier, buth avec des drapeaux spéciaux) . De plus, il contient des pointeurs vers le répertoire parent et lui-même.

Pour atteindre un certain fichier la structure de répertoire est simplement traversé, un peu comme lors de la traversée d'un arbre - pour découvrir le chemin complet d'un fichier, le pseudo-code ressemble à ça:

parts = [] 
inode = inode_of(file); 
parts.add(inode.name); 
while(inode.parent): 
    parts.add(inode.parent.name) 
    inode = inode.parent 
path = parts.reverse.join('/') 
0

Un répertoire est juste un type spécial de fichier. Son inode a le bit S_IFDIR défini dans le champ de mode. Son contenu est une structure de données qui contient des noms de fichiers et des numéros d'inodes.