进程表项 文件表项 V节点总结

转自:https://blog.csdn.net/qq_33348709/article/details/53105726

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


  (1)、在每个进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视察为一个矢量(数组),每个描述符占用一项。与每个文件描述符相关联的是:

  (a)、文件描述符标志。

  (b)、指向一个文件表项的指针。


  (2)、内核为所有打开的文件维持一张文件表(同一个文件可以被打开多次,所以同一个文件可以在文件表中占有多项)。每个文件表项包含:

       (a)、文件状态标志(读、写、添写、同步和非阻塞等)

       (b)、当前文件偏移量(不同的进程当前的文件偏移量是不同的,你想两个不同的进程同一个文件的操作可能都不一样,那当然文件偏移量是不一样的)

       (c)、指向该文件的V节点表项的指针。

  (3)、每个打开文件(或设备)都有一个v节点(这个v节点,对于一个给定的文件只有一个v节点表项,即时不同的进程打开该文件,那么不同的v节点指针也是指向同一个v节点表项,如下图所示)结构。这个节点里面包含了文件类型和对此文件进行各种操作的指针。对于大多数文件,v节点还包含了该文件的i节点(包含了文件的所有者,文件长度,指向文件实际数据块在磁盘上所在的位置的指针等)


进程表项 文件表项 V节点总结