對相關資料的整理:
1. 三個數據結構
- 描述符表:每個進程有其各自的描述符表,每個表項指向文件表中的一個表項,形如:
fd0 |
fd1 |
fd2 |
fd3 |
... |
- 文件表:表示的是打開文件的集合,每個表項包括文件的位置,引用計數,一個指向v-node表的指針。該表所有進程共享。
。。。 文件位置 引用計數 。。。 其中:文件位置指打開文件後光標所在位置;引用計數指不同進程打開該文件的次數(包括fork).
- v-node表:類似文件表,所有進程共享,指磁盤文件,表項包括了stat中大多數信息。
2. 完整關係
3. 同一個進程連續打開同一份文件(未關閉)
各自讀,不相互影響,寫相互影響。
4. fork
讀,寫相互影響,父,子進程光標交替走。