File Management System
File Management System
Author C Append
Close
Usual
File type extension Function
TWO-LEVEL DIRECTORY
In this separate directories for each user is maintained.
Path name:Due to two levels there is a path name for every file to
locate that file.
Now,we can have same file name for different user.
Searching is efficient in this method.
TREE-STRUCTURED DIRECTORY :
Directory is maintained in the form of a tree. Searching is efficient and also
there is grouping capability. We have absolute or relative path name for a file.
Disadvantage –
External fragmentation will occur, making it difficult to find contiguous
blocks of space of sufficient length. Compaction algorithm will be
necessary to free up additional space on disk.
Also, with pre-allocation, it is necessary to declare the size of the file
at the time of creation.
2. Linked Allocation(Non-contiguous allocation) –
Allocation is on an individual block basis. Each block contains a pointer to the
next block in the chain. Again the file table needs just a single entry for each
file, showing the starting block and the length of the file. Although pre-
allocation is possible, it is more common simply to allocate blocks as needed.
Any free block can be added to the chain. The blocks need not be continuous.
Increase in file size is always possible if free disk block is available. There is
no external fragmentation because only one block at a time is needed but
there can be internal fragmentation but it exists only in the last disk block of
file.
Disadvantage –
Internal fragmentation exists in last disk block of file.
There is an overhead of maintaining the pointer in every disk block.
If the pointer of any disk block is lost, the file will be truncated.
It supports only the sequential access of files.
3. Indexed Allocation –
It addresses many of the problems of contiguous and chained allocation. In
this case, the file allocation table contains a separate one-level index for each
file: The index has one entry for each block allocated to the file. Allocation
may be on the basis of fixed-size blocks or variable-sized blocks. Allocation by
blocks eliminates external fragmentation, whereas allocation by variable-size
blocks improves locality. This allocation technique supports both sequential
and direct access to the file and thus is the most popular form of file
allocation.
1. Bit Tables : This method uses a vector containing one bit for each
block on the disk. Each entry for a 0 corresponds to a free block and
each 1 corresponds to a block in use.
For example: 00011010111100110001
In this vector every bit correspond to a particular block and 0 implies
that, that particular block is free and 1 implies that the block is
already occupied. A bit table has the advantage that it is relatively
easy to find one or a contiguous group of free blocks. Thus, a bit
table works well with any of the file allocation methods. Another
advantage is that it is as small as possible.
2. Free Block List : In this method, each block is assigned a number
sequentially and the list of the numbers of all free blocks is
maintained in a reserved block of the disk.
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.
2. 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.
3. 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.
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 inturn 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.