內核使用3種數據結構表示打開的文件,他們之間的關系決定了在文件共享方面一個進程對另一個進程的影響。
(1) 每個進程在進程表中都有一個紀錄項,紀錄項中包含一張打開文件描述符表,每個文件描述符各占一項,與每個文件描述符相關的是
a. 文件描述符標志
b. 指向一個文件表項的指針
(2) 內核為所有打開文件維護一張文件表項,每個文件表項包含:
a. 文件狀態(讀 寫 同步 非阻塞等)
b. 當前文件偏移量
c. 指向改文件V節點(i節點)的指針
(3) 沒打開一個文件或設備,都有一個V節點結構,V節點包含了文件類型和對此文件進行操作函數的指針,對於大多數文件,v節點還包含了文件的i節點索引節點,這些信息是在打開文件時從磁盤讀入內存的,所以,文件的所有文件信息都是隨時可用的。i節點包含了文件的所有者,文件長度,指向文件實際數據塊在磁盤上位置的指針等。
以上總結大部分來自 《APUE》
用圖來表示如下:
講的比較好的博客: