For each file on disk, there is an inode for that file (also stored on the disk) is a struct containing file information including
- creation, last modification times
- file owner
- file type (ordinary file, directory, named pipe)
- file access permissions
- location of data blocks on disk
When a file is opened its inode is read into an available slot in the inode table in memory. The in memory inode table contains a few more members including
- reference count - how many different file opens reference this file.
- device (disk) where the inode is located.
Even if more than one process has a file open, there will only be one entry in the inode table for that file, but the reference count will reflect the number of uses of that inode.