Contiguous and linked list allocation are two common techniques for implementing file systems in operating systems. Both techniques are used to allocate disk space for files, but they differ in their approach to how the disk space is allocated.
In contiguous allocation, each file is stored in a contiguous block of disk space. When a file is created, the operating system searches for a block of free space that is large enough to hold the entire file. The starting location and size of the file are recorded in the file allocation table. The advantage of contiguous allocation is that it is simple and efficient in terms of file access, as files can be accessed quickly without the need to traverse pointers. However, it suffers from fragmentation as free blocks may become scattered, making it difficult to allocate large files.
Linked List Allocation
In linked list allocation, each file is stored as a linked list of blocks. Each block contains a pointer to the next block in the file. When a file is created, the operating system searches for a free block of disk space and links it to the previous block in the file. The starting location of the file is recorded in the file allocation table, along with the number of blocks allocated to the file. The advantage of linked list allocation is that it can handle fragmented disk space, as files can be allocated to any free block of disk space. However, it suffers from poor performance in file access, as each block of the file must be accessed sequentially by traversing the pointers.