9.1 共享文件

发布时间 2023-08-02 16:17:35作者: C~A
内核用三个相关的数据结构来表示打开的文件:
描述符表(descriptor table)。每个进程都有它独立的描述符表,它的表项是由进程打开的文件描述符来索引的。每个打开的描述符表项指向文件表中的一个表项。
文件表(file table)。打开文件的集合是由一张文件表来表示的,所有的进程共享这张表。每个文件表的表项组成(针对我们的目的)包括当前的文件位置、引用计数(reference count)(即当前指向该表项的描述符表项数),以及一个指向v-node表中对应表项的指针。关闭一个描述符会减少相应的文件表表项中的引用计数。内核不会删除这个文件表表项,直到它的引用计数为零。
v-node表(v-node table)。同文件表一样,所有的进程共享这张v-node表。每个表
项包含stat结构中的大多数信息,包括st_mode和st_size成员。