Unit 4 Information and File Mgmt
Unit 4 Information and File Mgmt
Field
Records
Files
Database
Field
Path name
Can have the same file name for different user
Efficient searching
Tree-Structured Directories
Tree-Structured Directories (Cont)
Absolute or relative path name
Creating a new file is done in current directory
Delete a file
rm <file-name>
Creating a new subdirectory is done in current directory
mkdir <dir-name>
Example: if in current directory /mail
mkdir count
Delete a file
Search for the file
Release the space allocated to it
Mark the space as unused or attach it to list of free
directory entries or copy the last directory entry
here.
2. Hash Table
Linear list + hash structure
Compute hash value of file names and returns
pointer to file in the linear list
Decreases search time
Collisions are to be avoided in case two file
names hash to same location
Disadvantage – hash functions are of fixed size
(0-64 or 0-128 etc)
Allocation Methods
An allocation method refers to how disk
blocks are allocated for files so that disk
space is utilized effectively and files can be
accessed quickly.
Contiguous allocation
Linked allocation
Indexed allocation
Allocation Methods
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 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.
Performance
Contiguous
Requires only 1 access to get a disk block
Linked
Requires i disk reads to read ith block
Indexed
Depends on
level of indexing
Size of file