1. 程式人生 > >Unix程式設計學習筆記---檔案系統與 i節點

Unix程式設計學習筆記---檔案系統與 i節點

檔案系統:   i節點與磁碟檔案

首先提出我的一些問題:

1.      檔案描述符fd  、檔案物件、i節點、磁碟檔案之間是什麼關係???

a)        檔案物件:表示程序已經開啟的檔案在記憶體中的表示,該物件不是物理上的檔案,

b)        檔案物件在記憶體中有一段儲存內容。

c)        每一個檔案物件都包含:檔案的狀態資訊、記憶體中儲存檔案內容的緩衝區指標,以及當前檔案的讀寫位置等。在檔案物件中,存有檔案的iNode節點資訊。

d)        檔案描述符-------》檔案物件------》iNode節點-------》磁碟檔案

2.      如何將一個字串形式的路徑名,轉換為一個檔案在核心中的iNode號??

3.      iNode節點都有哪些資訊???

4.      如何才能由i節點定位到檔案在磁碟上的實體地址的???

1》  目錄檔案中存有每一個檔案的檔名和該檔名所對應的iNode號。

2》  iNode_table檔案即:iNode節點表文件,該檔案存有iNode號和該iNode號節點的結構體指標,  在iNode節點中存有該iNode節點所指向的在磁碟上的磁碟塊的指標。

3》  每一個iNode節點,都對應有一個磁碟檔案,該檔案要麼是目錄項或者是普通檔案

4》  要點:

1.      iNode節點都有哪些資訊??

a)        每一個iNode節點都有一個描述它的磁碟資料結構,在iNode節點中存有該iNode節點所對應的檔案在磁碟上的資料塊的指標和檔案的資料塊數。

2.      目錄檔案的作用:

a)        完成檔名到iNode號的對映。

b)        即:給定一個檔名找出其所對應的iNode號。

3.      每一個iNode節點都能唯一定位一個磁碟檔案。

4.      在磁碟上,儲存的有兩種檔案:

a)        1目錄檔案

b)        普通檔案

5.      我們來看一下,磁碟結構:

如何將一個字串形式的路徑名,轉換為一個檔案在核心中的iNode號?????

例項:/home/my/code/test.c

這個工作流程:

1.      首先:把這個路徑名拆分成一個個檔名序列,除了最後一項以外,所有的檔名都必定是目錄。

在這裡是:   home、 my 、 code、test.c

2.      核心會存有一個根目錄檔案,然後核心會把分析出的第一個檔名home,與根目錄中的檔名進行匹配,如果找到匹配項,則把該目錄項的iNode號提出出來,home的iNode號是2

3.      核心得到一個iNode號,便會在iNode_table 中找到該iNode 號所對應的檔案在磁碟上的資料塊地址,然後,根據資料塊的地址,把檔案內容讀取到記憶體當中。

4.      然後繼續分析下一個檔名。

5.      重複以上工作。

我們發現,home檔名的iNode號的磁碟檔案是一個目錄檔案,該目錄檔案中的iNode號指向的又是一個目錄檔案,只有路徑名中的最後一個檔名的iNode節點號所對應的磁碟檔案是一個普通檔案。因此,把此普通檔案讀取到記憶體中。