UNIX系统支持在不同进程间共享打开文件。
内核使用3种数据结构标识打开文件,它们之间的关系决定了在文件共享方面一个进程可能对另一个进程产生的影响。
1)每个进程在进程表种都有一个记录项,记录项中包含一张打开文件描述符表,每个描述符占用一项。与每个文件描述符项关联的是:a. 文件描述符标志; b. 指向一个文件表项的指针。
2)内核为所有打开文件维持一张文件表,每个文件表项包括:
a. 文件状态标志(读、写、添写、同步)
b. 当前文件偏移量
c. 指向该文件v节点表项得指针
3)每个打开文件都有一个v节点(v-node)结构。v节点包含了文件类型和对文件进行各种操作函数的指针。对于多数文件,v节点还包含了该文件的i节点。
创建v节点的结构的目的是对一个计算机系统上的多个文件系统类型提供支持。
Linux没有将相关数据结构分为v节点和i节点,而是采用了一个与文件系统相关的i节点和一个与文件系统无关的i节点。
如果两个独立进程各自打开了同一文件,关系如下:
第一个进程在文件描述符3上打开该文件,另一个进程在文件描述符4上打开该文件。
之所以每个进程都获得自己的文件表项,因为每个进程都有它自己的对该文件的当前偏移量。
原子操作指的是由多步组成的一个操作,如果该操作原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。
本文发布于:2024-02-01 09:18:01,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675028335609.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |