File Allocation Method
File Allocation Method
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.
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. For files that are very large, single index block may not be able to hold all the pointers.
Following mechanisms can be used to resolve this:
1. Linked scheme: This scheme links two or more index blocks together for holding the pointers. Every index block would then
contain a pointer or the address to the next index block.
2. Multilevel index: In this policy, a first level index block is used to point to the second level index blocks which intern points to
the disk blocks occupied by the file. This can be extended to 3 or more levels depending on the maximum file size.
3. Combined Scheme: In this scheme, a special block called the Inode (information Node) contains all the information about the
file such as the name, size, authority, etc and the remaining space of Inode is used to store the Disk Block addresses which
contain the actual file as shown in the image below. The first few of these pointers in Inode point to the direct blocks i.e the
pointers contain the addresses of the disk blocks that contain data of the file. The next few pointers point to indirect blocks.
Indirect blocks may be single indirect, double indirect or triple indirect. Single Indirect block is the disk block that does not
contain the file data but the disk address of the blocks that contain the file data. Similarly, double indirect blocks do not
contain the file data but the disk address of the blocks that contain the address of the blocks containing the file data.