Unix內核中已經打開文件,經過三種數據結構表示:node
3. 每一個打開文件都有且只有一個V節點(v-node)結構linux
一個打開的文件的結構以下圖所示:數據結構
這些信息都是打開文件時從磁盤讀入內存的函數
爲何要有V節點結構呢?對在一個計算機系統上的多文件系統類型提供支持。也稱之爲虛擬文件系統(因此v-node中的v指的是virtual?)linux沒有將相關數據結構分爲i-node和v-node,而是採用了一個獨立於文件系統的i節點和一個依賴於文件系統的i節點spa
每一個進程都只有本身的進程表項,故而每一個進程都有本身的文件表項,可是文件能夠被多個進程各自打開而每一個打開文件都有且只有一個V節點表,因而會有多個文件表項指向同一個V節點表的狀況。指針
而爲何每一個進程都有本身的文件表項而不是每一個打開文件都只有一個文件表項呢?首先要知道文件表中的當前文件偏移量指的是每次write以後表示增長縮寫的字節數,因此每一個進程對應一個文件表保證了每一個進程都有本身對該文件的當前偏移量。blog