HPFS: Illustrations

[Fig. 1]

FIGURE 1: This figure shows the overall structure of an HPFS volume. The most important fixed objects in such a volume are the Bootblock the Super Block, and the Spare Block. The remainder of the volume is divided into 8Mb bands. There is a freespace bitmap for each band and the bitmaps are located between alternate bands consequently, the maximum contiguous space which can be allocated to a file is 16Mb.

  • HPFS Volume Structure

    [Fig. 2]

    FIGURE 2: This figure shows the overall structure of an Fnode. The Fnode is the fundamental object in an HPFS volume and is the first sector allocated to a file or directory. it contains control and access history information used by the file system, cached EAs and ACLs or pointers to same, a truncated copy of the file or directory name (to aid disk repair programs, and an allocation structure which defines the size and location of the file's storage.

  • Files and FNodes

    [Fig. 3]

    FIGURE 3: The simplest form of tracking for the sectors owned by a file is shown. The Fnode s allocation structure points directly to as many as eight sector runs. Each run pointer consists of a pair of 32-bit doublewords: a starting sector number and a length !n sectors.

  • Files and FNodes

    [Fig. 4]

    FIGURE 4: This figure demonstrates the technique used to track the sectors owned by a file with 9-480 sector runs. The allocation structure in the Fnode holds the roots for a B+ Tree of allocation sectors. Each allocation sector can describe as many as 40 sector runs. lf the file requires more than 480 sector runs, additional intermediate levels are added to the B+ Tree, which increases the number of possible sector runs by a factor of sixty for each new !evel.

  • Files and FNodes

    [Fig. 5]

    FIGURE 5: Here directories are anchored on an Fnode and are built up from 2Kb directory blocks. The number of entries in a directory block varies because the length of the entries depends on the filename. When a directory requires more than one block the blocks are organized as a B-Tree. This allows a filename to be located very quickly with a small number of disk accesses even when the directory grows very large.

  • Directories

    [Fig. 6]

    FIGURE 6: A simplified sketch of the relationship between an application program, the OS/2 kernel, an installable file system, a disk drlver, and the physical disk device. The applicatIon issues logical file requests to the OS/2 kernel by calling the entry points for DosOpen, DosRead, DosWrlte, DosChgFilePtr, and so on. The kernel passes these requests to the appropriate installable file system for the volume holding the file. The installable file system translates the logical file requests into requests for reads or writes of logical sectors and calls a kernel File System Helper (FsHlp) to pass these requests to the appropriate disk drlver. The disk driver transforms the logical sector requests into requests for specific physical units, cylinders heads, and sectors, and issues commands to the disk adapter to transfer data between the disk and memory.

  • Installable File Systems

    [Fig. A]

    FIGURE A: To find a piece of data, the binary tree is traversed from the root until the data is found or an empty subtree is encountered.

  • Summary

    [Fig. B]

    FIGURE B: In a balanced B-Tree, data is stored in nodes, more than one data item can be stored in a node, and all branches of the tree are the same length.

  • Summary

    [Fig. C]

    FIGURE C: A B+ Tree has internal nodes that point to other nodes and external nodes that contain actual data.

  • Summary

    [HPFS Home]
    Html'ed by Hartmut Frommert