RFC FTP : appendice I- structure paginée
Le besoin de FTP de supporter la structure en pages de certains fichiers est motivée par le besoin de transferts de fichiers fiables entre des systèmes TOPS-20, et en particulier les fichiers utilisés par NLS.
Le système de fichiers d'un TOPS-20 est basé sur le concept de pages. Le système d'exploitation de cette plate-forme est bien plus performant lorsqu'il manipule les fichiers sous cette forme. Le système d'exploitation fournit en général une interface vers le système de fichiers afin que des applicatifs puissent voir les fichiers comme des flux continus d'octets conformément à l'usage le plus répandu. Cependant, certaines applications utilisent directement la structure sous-jacente en pages.
Un fichier disque d'un TOPS-20 est composé de quatre éléments: un chemin d'accès, un table de pages, un ensemble de pages (peut être vide), et un ensemble d'attributs.
Le chemin d'accès est celui spécifié dans les commandes RETR ou STOR. Il inclut le nom du répertoire, le nom du fichier, l'extension de fichier, et un numéro de génération.
La table de pages peut contenir jusqu'à 2**18 entrées. Chaque entrée peut être marquée EMPTY (vide), ou peut "pointer" sur une page. Si elle est non vide, elle contiendra de plus quelques bits de marquage propres à la page; les protections d'accès sur les fichiers et sur chacune des pages peuvent être gérées indépendamment.
Une page est un ensemble de 512 mots de 36 bits chacun contigus.
Les attributs du fichier, dans le descripteur de fichier (File Descriptor Block, ou FDB), contiennent des informations telles que la date de création, la date de dernière écriture, la date de dernière lecture, la taille d'octets logique de l'auteur, le pointeur de fin de fichier, un décompte des accès en lecture et en écriture, numérotation de sauvegarde, etc.
Notez qu'il n'est pas obligatoire que les entrées soient contiguës dans la table. On pourra trouver des pointeurs de page vides entre deux pointeurs de pages réelles. De plus, la fin de fichier est simplement marquée comme un nombre. Il n'est pas obligatoire que cette fin de fichier pointe sur la dernière donnée du fichier. Des appels d'I/O séquentiels basiques sur un TOPS-20 laissera le pointeur de fin de fichier effectivement positionné après la dernière donnée inscrite, mais d'autres opérations peuvent très bien ne pas laisser le pointeur à cet endroit, si un programme particulier le souhaite.
En fait, les deux cas particuliers d'un fichier discontinu (pages vides insérées entre des pages non vides) et d'un pointeur de fin-de-fichier n'indiquant pas la dernière page du fichier, peuvent survenir dans un système géré sous NLS.
Les fichiers paginés d'un TOPS-20 peuvent être émis sous FTP en marquant les paramètres de transfert ainsi : TYPE L 36, STRU P, et MODE S (en fait, tout mode peut être utilisé).
Chaque page d'information dispose d'une en-tête. Chaque champ d'en-tête, constitué d'un mot logique, est un mot du système TOPS-20, dans la mesure où le TYPE est L 36.
Ces champs d'en-tête sont :
Mot 0: Header Length
Longueur d'en-tête
La longueur d'en-tête vaut 5.
Mot 1: Page Index.
Index de page
Si les données représentent une page d'un fichier sur disque, il s'agit du numéro de la page reportée dans la table de pages. Les pages vides (trous) d'un fichier ne sont tout simplement pas transférées. Notez qu'un trou n'est pas la même chose qu'une page pleine de zéros.
Mot 2: Data Length.
Longueur des données
La longueur des données situées dans la page et après l'en-tête, exprimée en mots logiques. De ce fait, la longueur totale transmise est la somme de la longueur d'en-tête et de la longueur des données.
Mot 3: Page Type.
Type de page
Un code pour indiquer de quel type est le segment de données. Une page de données a pour type 3, la page FDB a pour type 2.
Mot 4: Page Access Control.
Contrôle d'accès de page
Les bits de contrôle d'accès associés à cette page de la table de pages. (Le mot complet est mis dans l'AC2 d'un SPACS par le programme lisant depuis le réseau vers le disque).
Juste après l'en-tête, on trouvera Data Length mots de données. Cette longueur est couramment de 512 pour une page de données, et de 31 pour la FDB. Les zéros de bourrage d'une page peuvent être omis, donnant ainsi une longueur de données inférieure à 512 si tel est le cas.
|