8. Le système de fichiers hiérarchique du Macintosh - HFS

Tous les systèmes de stockage du Macintosh, hormis les disquettes, sont partitionnés en un ou plusieurs volumes. Les volumes contiennent quatre types d'éléments : les fichiers, les répertoires, les files (threads) de répertoires et les files (threads) de fichiers. Chaque élément est décrit par une entrée dans un catalogue qui est similaire à un i-noeud Unix. Les enregistrements de catalogue sont organisés sur le disque en catalogue d'arbres équilibrés . Les répertoires sont dérivés de la recherche dans le catalogue. Seul un fichier peut occuper de la place en dehors de son catalogue d'enregistrement.

Un « fichier » Macintosh contient deux composants, ou branches. La branche ressource est un fichier indexé contenant des segments de code, des éléments de menu, des boîtes de dialogue, etc. La branche de données possède la sémantique « flux d'octet » du contenu d'un fichier Unix. Chaque branche est composée d'un ou plusieurs « extent[4] » ou un ensemble de blocs contigu. Un descripteur d'extent code un bloc de départ d'extent et une longueur comprise dans une quantité multiple de 32 bits. Le premier enregistrement d'extent (un descripteur de trois extents) de chaque branche fait partie de l'enregistrement catalogue. Tous les enregistrements d'extent suivants sont conservés dans les extents dépassant de l'arbre équilibré.

En plus des extents de fichier et d'arbre équilibré, un volume contient deux blocs d'amorce, un bloc d'information sur le volume, et un champ de bit libre. Il y a une quantité remarquable de redondances dans les structures de données sur disque. Cela améliore la récupération après un incident. Bien que ne faisant pas strictement partie du système de fichiers, il peut être noté que plusieurs champs d'enregistrement du catalogue sont exclusivement réservés pour le Finder, un programme qui prend en charge les accès utilisateur au système de fichiers et maintient automatiquement les associations entre applications et fichiers de données. Du coup, HFS doit aussi maintenir ces informations pour le Finder.

Chaque fichier et répertoire d'un volume HFS possède un numéro d'identification, semblable à un numéro d'i-noeud pour le système de fichier Unix. Néanmoins un fichier ou répertoire est désigné par l'identifiant de son père et son propre nom, qui est de 32 caractères y compris des caractères nuls. Cette combinaison est la clef de recherche du catalogue en arbre équilibré du volume. Ce catalogue diffère de la structure d'un arbre balancé classique en cela que tous les noeuds, à chaque niveau, sont chaînés ensemble pour former une liste doublement chaînée dont tous les enregistrements sont dans les noeuds feuilles. Ces variations permettent l'accès à de nombreux éléments dans le même répertoire en parcourant les feuilles grâce à la liste chaînée. A proprement parler, les arbres équilibrés de HFS sont une variante des arbres B+ bien que la documentation technique d'Apple les appelle arbres-B*.

Chaque répertoire, y compris la racine, contient sa file de répertoire qui possède le nom de fichier vide. L'enregistrement file de répertoire contient le même nom que le répertoire et l'identifiant de son père. De la même manière, la file de fichier contient le nom du fichier et l'identifiant du répertoire où il se trouve. Alors que chaque répertoire doit contenir une file de répertoire, les files de fichier sont peu communes. En fait, les deux sont des exemples de la redondance de HFS - pour les arbres non endommagés, les files ne sont pas vraiment nécessaires. Les enregistrements de fichiers et de répertoires contiennent 32 octets d'information utilisés par le Finder. Les trois premiers descripteurs d'extents pour le catalogue des arbres balancés sont conservés dans le bloc d'information sur les volumes. Si le catalogue dépasse ces trois extents, les descripteurs d'extents restants sont enregistrés dans les extents de dépassement de capacité.

Les systèmes de fichiers HFS et HFS+ (aussi appelé Séquoia) sont très bien documentés. La meilleure source d'information technique sur HFS peut être trouvée dans la série de livres Inside Macintosh. Voyez http://developer.apple.com/techpubs/mac/Files/Files-99.html. Le système de fichiers HFS+ est décrit dans le document Technote 1150, disponible en ligne à http://developer.apple.com/technotes/tn/tn1150.html. Beaucoup d'autres informations sont disponibles dans d'autres notes techniques. Ces liens ont été rassemblés par Paul H. Hargrove :

8.1. Accéder à HFS depuis Linux

8.2. Accéder à HFS depuis OS/2 (HFS/2)

HFS/2 laisse l'utilisateur d'OS/2 lire et écrire de manière transparente des fichiers sur des disquettes formatées avec le système de fichiers hiérarchique, le système de fichiers utilisé par les Macintosh. Avec HFS/2, les disquettes Macintosh peuvent être utilisées comme si elles étaient des disquettes normales.

Ce programme n'est plus maintenu, car l'auteur n'utilise plus OS/2. Si vous êtes intéressé par la maintenance de ce programme, faites-lui savoir.

8.3. Accéder à HFS depuis Windows 95/98/NT (HFV Explorer)

Un navigateur de volume HFS pour Windows NT et Windows 9x basé sur hfsutils™. Support du Launch Pad pour tous les émulateurs Macintosh majeurs tournant sous Windows™.

8.4. Accéder à HFS depuis DOS (MAC-ETTE)

Mac-ette™ est un utilitaire PC qui peut lire, écrire, formater et dupliquer des disquettes Macintosh HFS au format 1.44 Mo sur un PC équipé d'un lecteur de disquette 3,5 pouces haute densité.

8.5. Les utilitaires HFS

Le paquetage hfsutils™ contient un ensemble d'utilitaires en ligne de commande tels que hformat, hmount, hdir, hcopy, etc. Ils permettent l'accès en lecture / écriture des fichiers et répertoires sur les volumes HFS.

8.6. Une librairie portable du système de fichiers Macintosh : MacFs

Ceci est une librairie du système de fichiers Macintosh qui est portable sur une variété de systèmes et de plates-formes. Il fournit une interface de programmation suffisante aussi bien pour la création d'une API au niveau utilisateur que pour un pilote de système de fichiers pour les systèmes d'exploitation qui le supportent. Les auteurs ont développé et testé une telle API au niveau utilisateur et des programmes utilitaires basé dessus, de même qu'un système de fichier virtuel expérimental pour Unix. Ils ont aussi décrit le système de fichiers hiérarchique du Macintosh et sa mise en oeuvre, et noté que la conception n'est pas très bien adaptée à la ré-entrance et que ses structures de données complexes peuvent conduire à des implémentations lentes dans des environnements multitâches. Les mesures de performances montrent que notre implémentation est plus rapide que l'implémentation Macintosh native pour la création, l'effacement, la lecture et l'écriture de fichiers avec des requêtes de petite taille, mais plus lente que le système de fichier rapide de Berkeley (FFS). Néanmoins, l'implémentation native du Macintosh peut effectuer des opérations de lecture et d'écriture de plus grande taille plus vite que notre implémentation ou FFS.



[4] NdT : unité d'allocation d'espace disque de taille variable - merci à Jérôme Fenal

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:27