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