The Linux includes a versatile and a powerful file handling facility, designed to support a wide variety of file management systems and file structures.
The Linux kernel handles all the various types of files by hiding the implementation details of a file behind a layer of software called as Virtual File system (VFS).
The VFS defines a common file model that is capable of representing any conceivable file systems general feature and behaviour.
Here the VFS assumes that files are objects in computers memory. The hardware specifications or target file system has no effect on it.
The VFS defines four main object types:
A superblock object representing an entire file system.
A dentry object an individual directory entry
An inode object representing and individual file.
A file object representing and open file
Every object of the above type has a pointer associated with it which points to the function table. The function table contains the address of the function that actually implements the process.
There is a set of operations prescribed for each of the four object types.
The VFS software is able to perform an operation on one of the file-system objects by calling the appropriate function from the object’s function table without having to know what kind of object it is dealing with.