2011-01-24 5 views
0

Je passais juste en revue la section 5.3 de Operating Systems: Design and Implementation: "Implémentation du système de fichiers", et j'ai un doute sur la gestion des disques en utilisant des listes chaînées (implémentation de tables).Mise en œuvre du système de fichiers minix3

Les auteurs mentionnent que l'utilisation de l'implémentation de table prend 3 octets par entrée de table, ce qui est compréhensible. Cependant, il est également mentionné qu'une optimisation du temps peut être effectuée en utilisant 4 octets par entrée de table.

Comment cette optimisation fonctionne-t-elle?

Répondre

2

Peut-être que 4 octets est la taille des mots de l'architecture, de sorte que le processeur peut immédiatement faire de l'arithmétique avec ces valeurs? Avec des valeurs de 3 octets, vous devez probablement faire un peu de twittling pour les développer à 4 octets avant de pouvoir exploiter les valeurs. Cela dit, les processeurs sont très très rapides par rapport à la mémoire, sans parler du disque, de la bande passante, donc je ne serais pas surpris si la version 3 octets est plus rapide en pratique.

+0

J'ai examiné les systèmes de fichiers UNIX traditionnels System V (et antérieurs), et la liste des adresses conservées dans l'inode est un tableau de caractères de 40 octets, d'adresses à 3 octets. Lorsque l'inode est lu en mémoire, l'une des premières choses à faire est de l'étendre à un tableau en mémoire de valeurs de 32 bits qui peuvent être utilisées normalement. Dans le contexte d'un E/S, l'expansion est bon marché, et les économies dans l'inode valent la peine. Pas à l'âge de 6TB disques et blocs de 8k, cependant. – dbrower

Questions connexes