对相关资料的整理:
1. 三个数据结构
- 描述符表:每个进程有其各自的描述符表,每个表项指向文件表中的一个表项,形如:
fd0 |
fd1 |
fd2 |
fd3 |
... |
- 文件表:表示的是打开文件的集合,每个表项包括文件的位置,引用计数,一个指向v-node表的指针。该表所有进程共享。
。。。 文件位置 引用计数 。。。 其中:文件位置指打开文件后光标所在位置;引用计数指不同进程打开该文件的次数(包括fork).
- v-node表:类似文件表,所有进程共享,指磁盘文件,表项包括了stat中大多数信息。
2. 完整关系
3. 同一个进程连续打开同一份文件(未关闭)
各自读,不相互影响,写相互影响。
4. fork
读,写相互影响,父,子进程光标交替走。