The kernel data structures are very important as they store data about the current state of the system. For example, if a new process is created in the system, a kernel data structure is created that contains the details about the process.
Most of the kernel data structures are only accessible by the kernel and its subsystems. They may contain data as well as pointers to other data structures.
The kernel stores and organizes a lot of information. So it has data about which processes are running in the system, their memory requirements, files in use etc. To handle all this, three important structures are used. These are process table, file table and v node/ i node information.
Details about these are as follows:
The process table stores information about all the processes running in the system. These include the storage information, execution status, file information etc.
When a process forks a child, its entry in the process table is duplicated including the file information and file pointers. So the parent and the child process share a file.
The file table contains entries about all the files in the system. If two or more processes use the same file, then they contain the same file information and the file descriptor number.
Each file table entry contains information about the file such as file status (file read or file write), file offset etc. The file offset specifies the position for next read or write into the file.
The file table also contains v-node and i-node pointers which point to the virtual node and index node respectively. These nodes contain information on how to read a file.
Both the v-node and i-node are references to the storage system of the file and the storage mechanisms. They connect the hardware to the software.
The v-node is an abstract concept that defines the method to access file data without worrying about the actual structure of the system. The i-node specifies file access information like file storage device, read/write procedures etc.