File System Implementation
A file is a collection of related information. The file system resides on secondary storage and provides efficient and convenient access to the disk by allowing data to be stored, located, and retrieved.
File system organized in many layers :

- I/O Control level βDevice drivers acts as interface between devices and Os, they help to transfer data between disk and main memory. It takes block number a input and as output it gives low level hardware specific instruction./li>
- Basic file system βIt Issues general commands to device driver to read and write physical blocks on disk.It manages the memory buffers and caches. A block in buffer can hold the contents of the disk block and cache stores frequently used file system metadata.
- File organization Module βIt has information about files, location of files and their logical and physical blocks.Physical blocks do not match with logical numbers of logical block numbered from 0 to N. It also has a free space which tracks unallocated blocks.
- Logical file system βIt manages metadata information about a file i.e includes all details about a file except the actual contents of file. It also maintains via file control blocks. File control block (FCB) has information about a file β owner, size, permissions, location of file contents.
Advantages :
- Duplication of code is minimized.
- Each file system can have its own logical file system.
We can implement file system by using two types data structures :
- Boot Control Block βIt is usually the first block of volume and it contains information needed to boot an operating system.In UNIX it is called boot block and in NTFS it is called as partition boot sector.
- Volume Control Block βIt has information about a particular partition ex:- free block count, block size and block pointers etc.In UNIX it is called super block and in NTFS it is stored in master file table.
- Directory Structure βThey store file names and associated inode numbers.In UNIX, includes file names and associated file names and in NTFS, it is stored in master file table.
- Per-File FCB βIt contains details about files and it has a unique identifier number to allow association with directory entry. In NTFS it is stored in master file table.
- Mount Table βIt contains information about each mounted volume.
- Directory-Structure cache βThis cache holds the directory information of recently accessed directories.
- System wide open-file table βIt contains the copy of FCB of each open file.
- Per-process open-file table βIt contains information opened by that particular process and it maps with appropriate system wide open-file.
- Linear List βIt maintains a linear list of filenames with pointers to the data blocks.It is time-consuming also.To create a new file, we must first search the directory to be sure that no existing file has the same name then we add a file at end of the directory.To delete a file, we search the directory for the named file and release the space.To reuse the directory entry either we can mark the entry as unused or we can attach it to a list of free directories.
- Hash Table βThe hash table takes a value computed from the file name and returns a pointer to the file. It decreases the directory search time. The insertion and deletion process of files is easy. The major difficulty is hash tables are its generally fixed size and hash tables are dependent on hash function on that size.

Directory Implementation :
Labels: Operating System, Operating System Unit-5
Discussion & Queries (<$I18NNumComments$>):
<$CommentPager$>
- <$I18NAtCommentTimeWithPermalink$>, <$I18NCommentAuthorSaid$>
<$CommentPager$>
<$BlogCommentBody$>
<$BlogCommentDeleteIcon$>