File Allocation Methods
File Allocation Methods
The allocation methods define how the files are stored in the disk blocks. There are
three main disk space or file allocation methods.
Contiguous Allocation
Linked Allocation
Indexed Allocation
The main idea behind these methods is to provide:
Efficient disk space utilization.
Fast access to the file blocks.
All the three methods have their own advantages and disadvantages as discussed
below:
1. Contiguous Allocation
In this scheme, each file occupies a contiguous set of blocks on the disk.
For example, if a file requires n blocks and is given a block b as the starting location,
then the blocks assigned to the file will be: b, b+1, b+2,……b+n-1. This means that given the
starting block address and the length of the file (in terms of blocks required), we can determine the blocks
occupied by the file.
The directory entry for a file with contiguous allocation contains
•Address of starting block
•Length of the allocated portion.
The file ‘mail’ in the following figure starts from the block 19 with length = 6 blocks.
Therefore, it occupies 19, 20, 21, 22, 23, 24 blocks.
• Advantages:
• Both the Sequential and Direct Accesses are supported by this. For direct
access, the address of the kth block of the file which starts at block b can
easily be obtained as (b+k).
• This is extremely fast since the number of seeks are minimal because of
contiguous allocation of file blocks.
• Disadvantages:
• This method suffers from both internal and external fragmentation. This
makes it inefficient in terms of memory utilization.
• Increasing file size is difficult because it depends on the availability of
contiguous memory at a particular instance.
• Linked List Allocation
• In this scheme, each file is a linked list of disk blocks which need not
be contiguous. The disk blocks can be scattered anywhere on the
disk.
The directory entry contains a pointer to the starting and the ending
file block. Each block contains a pointer to the next block occupied by
the file.
• The file ‘jeep’ in following image shows how the blocks are randomly
distributed. The last block (25) contains -1 indicating a null pointer
and does not point to any other block.
• Advantages:
• This is very flexible in terms of file size. File size can be increased easily since the system
does not have to look for a contiguous chunk of memory.
• This method does not suffer from external fragmentation. This makes it relatively better
in terms of memory utilization.
• Disadvantages:
• Because the file blocks are distributed randomly on the disk, a large number of seeks are
needed to access every block individually. This makes linked allocation slower.
• It does not support random or direct access. We can not directly access the blocks of a
file. A block k of a file can be accessed by traversing k blocks sequentially (sequential
access ) from the starting block of the file via block pointers.
• Pointers required in the linked allocation incur some extra overhead.
• . Indexed Allocation
• In this scheme, a special block known as the Index block contains the
pointers to all the blocks occupied by a file. Each file has its own index
block. The ith entry in the index block contains the disk address of the
ith file block. The directory entry contains the address of the index
block as shown in the image:
• Advantages:
• This supports direct access to the blocks occupied by the file and therefore
provides fast access to the file blocks.
• It overcomes the problem of external fragmentation.
• Disadvantages:
• The pointer overhead for indexed allocation is greater than linked
allocation.
• For very small files, say files that expand only 2-3 blocks, the indexed
allocation would keep one entire block (index block) for the pointers which
is inefficient in terms of memory utilization. However, in linked allocation
we lose the space of only 1 pointer per block.