linux 共享文件-內核如何表示打開的文件

對相關資料的整理:

1. 三個數據結構

  •  描述符表:每個進程有其各自的描述符表,每個表項指向文件表中的一個表項,形如:       
fd0
fd1
fd2
fd3
...
  • 文件表:表示的是打開文件的集合,每個表項包括文件的位置,引用計數,一個指向v-node表的指針。該表所有進程共享。
    。。。
    文件位置
    引用計數
    。。。
     

    其中:文件位置指打開文件後光標所在位置;引用計數指不同進程打開該文件的次數(包括fork).

  • v-node表:類似文件表,所有進程共享,指磁盤文件,表項包括了stat中大多數信息。

2. 完整關係

                           

3. 同一個進程連續打開同一份文件(未關閉)

                          

各自讀,不相互影響,寫相互影響。

4. fork

                         

讀,寫相互影響,父,子進程光標交替走。

發佈了14 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章