国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

文件和目錄之文件系統

2024-06-28 13:28:47
字體:
來源:轉載
供稿:網友
文件和目錄之文件系統

我們可以把一個磁盤分成一個或多個分區。每個分區可以包含一個文件系統(見圖4-1)。

28894229_1379425369RO8G

圖4-1 磁盤、分區和文件系統

i節點(i-node)是固定長度的記錄項,它包含有關文件的大部分信息。

如果更仔細地觀察一個柱面組的i節點和數據塊部分,則可以看到圖4-2中所示的情況。

bdfde55e-4d8f-31ac-9716-935cc185f27e

注意圖4-2中的下列各點:

  • 在圖中有兩個目錄項指向同一i節點。每個i節點中都有一個鏈接計數,其值是指向該i節點的目錄項數。只有當鏈接計數減少至0時,才可刪除該文件(也就是說可以釋放該文件占用的數據塊)。這就是為什么“解除對一個文件的鏈接”操作并不總是意味著“釋放該文件占用的磁盤塊”的原因。這也是為什么刪除一個目錄項的函數被稱為unlink而不是delete的原因。在stat結構中,鏈接計數包含在st_nlink成員中,其基本數據類型是nlink_t。這種鏈接類型稱為硬鏈接。其中,POSIX.1常量LINK_MAX指定了一個文件鏈接數的最大值。
  • 另外一種鏈接類型稱為符號鏈接(symbolic link)。對于這種鏈接,該文件的實際內容(在數據塊中)包含了該符號鏈接所指向的文件的名字。在下例中:
lrwxrwxrwx 1 root root 8 01-02 05:56 lib -> /usr/lib

該目錄項中的文件名是3個字符的字符串lib,而在該文件中包含了8個數據字節/usr/lib。該i節點中的文件類型是S_IFLNK,于是系統知道這是一個符號鏈接。

  • i節點包含了大多數與文件有關的信息:文件類型、文件訪問權限位、文件長度和指向該文件所占用的數據塊的指針等等。stat結構中的大多數信息都取自i節點。只有兩項數據存放在目錄項中:文件名和i節點編號。i節點編號的數據類型是ino_t。
  • 每個文件系統各自對它們的i節點進行編號,因此目錄項中的i節點編號數指向同一個文件系統中的相應i節點,不能使一個目錄項指向另一個文件系統的i節點。這就是為什么ln(1)命令(構造一個指向一個現有文件的新目錄項)不能跨越文件系統的原因。
  • 當在不更換文件系統情況下為一個文件更名時,該文件的實際內容 并未移動,只需構造一個指向現有i節點的新目錄項,并解除與舊目錄項的鏈接。例如,為將文件/usr/lib/foo更名為/usr/foo,如果目錄/urs/lib和/usr在同一文件系統中,則文件foo的內容無需移動。這就是mv(1)命令的通常操作方式。

我們說明了普通文件的鏈接計數概念,但是對于目錄文件的鏈接計數字段又如何呢?假定我們在工作目錄中構造了一個新目錄:

$ mkdir testdir

圖4-3顯示了其結果。注意,該圖顯式地顯示了.和..目錄項。

1991484_1329896633t0Bm

圖4-3 創建了目錄testdir后的示例柱形組

對于編號為2549的i節點,其類型字段表示它是一個目錄,而鏈接計數為2。任何一個葉目錄(不包含任何其他目錄的目錄)的鏈接計數總是2,數值2來自于命名該目錄(testdir)的目錄項以及在該目錄中的.項。對于編號為1267的節點,其類型字段表示它是一個目錄,而其鏈接計數則大于或等于3。它大于或等于3的原因是,至少有三個目錄項指向它:一個是命名它的目錄項(在圖4-3中沒有表示出來),第二個是在該目錄中的.項,第三個是在其子目錄testdir中的..項。注意,父目錄中的每一個子目錄都會使該父目錄的鏈接計數增1。

這種格式與UNIX文件系統的經典格式類似。

本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 称多县| 襄垣县| 桂阳县| 黄大仙区| 靖西县| 乐东| 佳木斯市| 富顺县| 深圳市| 德安县| 特克斯县| 获嘉县| 贞丰县| 湖州市| 荥经县| 布尔津县| 巴林右旗| 潮州市| 宝兴县| 肇庆市| 黄冈市| 南雄市| 六安市| 云和县| 抚顺县| 佛坪县| 安康市| 高安市| 咸阳市| 利津县| 佛学| 镇康县| 乐平市| 柳江县| 新绛县| 辉县市| 安义县| 延津县| 鄱阳县| 依兰县| 大名县|