歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> UNIX中的文件和目錄

UNIX中的文件和目錄

日期:2017/2/28 14:51:18   编辑:Linux教程

文件--索引節點

POSIX沒有強制磁盤上的文件采取任何特定的表示方法,但是傳統的UNIX文件都是按照改進的樹狀結構來實現的。目錄項中包含一個文件名 和一個定長結構的引用(索引節點)。索引節點包含與文件長度、文件位置、文件所有者、創建時間、最後訪問時間、最後修改時間、文件權限有關的信息。如圖1所示:

圖 1

除了基本信息,還包含指向文件中前幾個數據塊的指針。如果文件很大,就需要使用到間接指針了。

單級間接指針是一個指向指針塊的指針,而指針塊中的指針是指向附加數據塊的;

二級間接指針是一個執行間接知真塊的指針;

三級間接指針塊包含了一個指向二級間接指針塊的指針。

文件系統在磁盤中存儲形式如圖1所示:

圖1. 磁盤中文件系統存儲形式

其中,文件屬性及指向文件中所存儲數據的指針存儲於i-nodes中,文件名、文件中所存儲的數據、該文件所對應的i-node編號存儲於data blocks中,數據單獨存儲。如圖2所示:

圖2. 磁盤中文件存儲形式

i-node中包含文件類型、文件訪問權限、文件大小、指向文件中所存儲數據的指針、文件鏈接數等信息。當使用link函數使得一個文件指向鏈接至該文件(即兩個文件具有相同的i-node值)時,我們稱之為硬鏈接,此時i-node中文件鏈接數被加1。需要刪除文件時,可使用unlink函數將目標路徑與文件的鏈接中斷(使該路徑文件的i-node值被清空,文件被刪除),注意,此時僅有目標路徑文件被刪除,該文件所對應的i-node中若鏈接數不為0,則代表有其他文件仍指向該文件,i-node中鏈接數將減1,其余信息保持不變。當使用symlink函數為目標文件建立符號鏈接時,將新建一個i-node,文件類型為symbolic link file,文件長度為目標文件名長度,文件數據指針與目標文件i-node中數據指針相同。

目錄

目錄文件在文件系統中的存儲形式與常規文件類似。目錄中所包含的文件名及其i-node值存儲在目錄文件塊中。其存儲形式如圖3所示:

圖3. 磁盤中目錄文件存儲形式

Copyright © Linux教程網 All Rights Reserved