UNIX系统支持在不同的进程间共享打开文件。内核使用3种数据结构表示打开文件,他们之间的关系决定了在文件共享方面一个进程对另一个进程产生的影响。
(1)每个进程在进程表中都有一个记录项,记录项中包含一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项:
a.文件描述符
b.指向一个文件表项的指针
(2)内核为所有打开文件维持一张文件表,每个文件表中包含:
a.文件标志状态
b.当前文件偏移量
c.指向该文件v节点表项的指针
(3)每打开一个文件,都有唯一的一个v节点结构
如下图所示: