A hard disk is viewed by the operating system as a massive, 1-dimensional array of fixed-size disk blocks (usually 512 bytes or 4KB each). When you save a 20MB video file, the OS must find 5,000 free blocks on the disk to store it.
The main problem is how to allocate these blocks to files so that disk space is utilized effectively and files can be accessed quickly. There are three major methods of allocating disk space.
Contiguous allocation requires that each file occupy a set of contiguous blocks on the disk.
Linked allocation solves all problems of contiguous allocation. With linked allocation, each file is a linked list of disk blocks; the disk blocks may be scattered anywhere on the disk.
An important variation of linked allocation is the FAT file system (used by MS-DOS and older USB thumb drives). Instead of storing the pointers inside the data blocks, a massive table (the FAT) is stored at the beginning of the volume. The table contains one entry for each disk block, and functions identically to a linked list, but allows faster traversal because the table is cached in RAM.
Indexed allocation solves the direct-access problem of linked allocation by bringing all the pointers together into one location: the Index Block.