Unix内核中的文件数据结构

打开文件的内核数据结构

两个独立进程各自打开同一个文件

内核使用3种数据结构表示打开文件,它们的关系决定了在文件共享方面一个进程对另一个进程的可能产生的影响。

进程表项

每个进程在进程表中都有一个记录项,记录项中包含一张打开的文件描述表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符关联的是:
a.文件描述符标志
b.指向一个文件表项的指针

文件表项

内核为所有打开文件维持一张文件表。每个文件表项包含:
a.文件状态标志(读、写、添写、同步和非阻塞等)
b.当前文件偏移量
c.指向该文件v节点表项的指针

v节点项

每个打开文件都有一个v节点结构。v节点包含了文件类型和对此文件进行各种操作函数的指针。