File Allocation Algorithms
File allocation methods determine how files are physically stored on disk. Each strategy offers unique tradeoffs between performance, efficiency, and complexity.
Contiguous Allocation
Files are stored in consecutive blocks on disk, requiring a starting block address and length.
Advantages
- Simple implementation
- Fast direct access
- Excellent sequential read performance
- Minimal disk seek time
Disadvantages
- External fragmentation
- Difficult file growth
- Requires pre-allocation of space
- Need for compaction
Linked Allocation
Each block contains a pointer to the next block in the file chain, forming a linked list structure.
Advantages
- No external fragmentation
- Files can grow dynamically
- No need for compaction
- Efficient use of disk space
Disadvantages
- Slower random access
- Pointer overhead in each block
- Reliability issues (pointer corruption)
- Not suitable for applications requiring direct access
Indexed Allocation
Uses a dedicated index block containing pointers to all data blocks of the file.
Advantages
- Supports direct access
- No external fragmentation
- Dynamic file growth
- Better for random access than linked allocation
Disadvantages
- Index block overhead
- Potential index size limitations
- Multiple index blocks needed for large files
- Slightly more complex implementation
Extents-based Allocation
Uses multiple contiguous segments (extents) for a single file, with each extent defined by a starting block and length.
Advantages
- Efficient space utilization
- Good sequential access within extents
- Less external fragmentation than pure contiguous
- Simpler than index-based approaches
Disadvantages
- More complex than single contiguous allocation
- Some metadata overhead for extent mapping
- Direct access performance varies by extent
- File growth may require new extents