1. 程式人生 > >Linux作業系統知識點五:作業系統的功能——檔案管理

Linux作業系統知識點五:作業系統的功能——檔案管理

  1. 檔案是具有符號名的一組相關元素的有序序列,是一段程式或資料的集合。
    檔案是儲存資訊的基本結構。
    資訊包括相關記錄或者字元流。
    檔案通過檔名標識。

  2. 檔案分類
    (1)按檔案的資料形式分:原始檔、目標檔案、可執行檔案。
    (2)按用途分:系統檔案、庫檔案、使用者檔案。
    (3)按存取許可權分:只讀檔案、讀寫檔案、可執行檔案。
    (4)按儲存時間分:臨時檔案、檔案檔案、永久檔案。
    (5)按對檔案管理方式分:普通檔案、目錄檔案、特殊檔案。

  3. 檔案結構
    邏輯結構:使用者可見(有結構檔案,即記錄式檔案。無結構檔案,即流式檔案。)
    物理結構:使用者不可見(檔案的儲存結構,在外存上的儲存)

(1)順序(連續)檔案:把邏輯上連續的檔案資訊依次存放到連續的物理塊中。檔案內容的邏輯順序與物理儲存順序一致。
(2)串聯檔案:用非連續的物理塊來存放檔案資訊,可將物理塊用鏈指標相連結。(邏輯結構與物理結構不一致)
(3)索引檔案:基於一張索引表,表中每一欄指出檔案資訊所在的邏輯塊號和與之對應的物理塊號。索引表的物理位置則由檔案說明項給出。(邏輯結構與物理結構不一致)

  1. 檔案系統:作業系統中管理磁碟或磁碟分割槽上的檔案的方法、資料結構和軟體。

  2. Linux檔案型別在這裡插入圖片描述

  3. 檔案屬性用於檔案的管理控制和安全保護。
    在這裡插入圖片描述

  4. 磁碟
    (1)碟片(Disk)
    是硬碟中承載資料儲存的介質。
    (2)磁頭(Head)
    是通過磁性原理讀取磁性介質上資料的部件。
    (3)磁軌(Track)
    當磁碟旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁碟表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁軌。
    (4)扇區(Sector)
    將一個碟片劃分為若干內角相同的扇形,稱為扇區。每個扇區中的資料作為一個單元同時讀出或寫入。扇區是硬碟資料儲存的最小單位。
    (5)簇(Clust,或者磁碟塊,Block)
    相鄰的扇區組合在一起,形成一個簇。每個簇可以包括2、4、8、16、32、64個扇區。
    簇是屬於檔案系統層面的概念(一種抽象),是檔案系統中資料儲存的基本單位。一個簇中只能放置一個檔案的內容。
    Linux中叫磁碟塊(簡稱為塊),大小通常為4KB(8個扇區)。
    (6)柱面(Cylinder)
    所有碟片上的同一磁軌構成一個圓柱,稱作柱面。資料的讀/寫按柱面從外向內進行,而不是按碟片進行。
    磁頭定位時,首先確定柱面,再確定碟片,最後確定扇區。讀寫資料時,當前柱面全部寫滿後,將磁頭移動到下一個柱面。

  5. 檔案控制塊(File Control Block)是OS用來存放描述檔案、管理檔案的檔案屬性資訊的資料結構。
    檔案 = FCB + 檔案內容(資料)。
    FCB是檔案存在的唯一標誌
    FCB中包含的內容:基本資訊 、存取控制資訊、使用資訊。
    (1)基本資訊
    ① 檔名
    ② 檔案實體地址和檔案的長度(位元組數或盤塊數)
    ③ 檔案邏輯結構
    ④檔案主識別符號和組識別符號
    ⑤ 檔案物理結構
    (2) 存取控制資訊類
    ①檔案主的許可權
    ②一般使用者的許可權
    (3) 使用資訊類
    ① 檔案建立日期及時間
    ② 檔案最近訪問日期及時間
    ③ 檔案最近修改日期及時間
    ④ 檔案連結次數

  6. 檔名是以目錄項

    的形式存在的。
    目錄項=檔名+索引節點號
    檔名和索引節點分開儲存

  7. 索引節點:是一種資料結構,該結構將目錄中的檔名和其餘屬性資訊分離存放,以便分開載入。
    OS對檔案的操作是通過索引節點(inode)而非檔名來完成的。
    索引節點與檔案一一對應,每個索引節點都有唯一的編號,稱為索引節點號。
    目錄項中存放檔名和索引節點號,而非索引節點內容。
    使用者不能直接引用inode,而是通過檔名對檔案進行使用

  8. 檔案“按名存取”的實現
    第一步,查詢目錄項,根據檔名找到檔案的inode號。(可能完成一個目錄樹的查詢過程)
    第二步,根據inode號,訪問inode,得到檔案的屬性資訊,然後根據屬性資訊對許可權進行檢查。
    第三步,驗證合法後,系統會計算出檔案的實體地址,完成對檔案的操作。

  9. 虛擬檔案系統(VFS:虛擬檔案系統轉換)
    (1)VFS支援的檔案系統
    磁碟的檔案系統
    網路檔案系統
    特殊檔案系統
    (2)理解VFS需注意以下幾點:
    VFS只存在於記憶體中,系統啟動後才建立。
    VFS對邏輯檔案(具體檔案)系統進行抽象,並沒有真正存在於磁碟分割槽中。
    VFS提供一致的介面,統一管理邏輯檔案系統。
    (3)VFS中的資料結構
    1.超級塊資料結構
    超級塊描述已安裝的整個檔案系統的資訊。
    是邏輯檔案系統在安裝時建立的,並在檔案系統解除安裝時被自動刪除,只存在於記憶體中。其資料結構是super_block 。
    所有超級塊物件以連結串列的形式連結在一起。
    2.索引節點(inode)結構
    邏輯檔案系統的索引結點是存放在磁碟上的,是一種靜態結構。要使用它,必須調入記憶體,填寫VFS的索引結點。因此,VFS索引結點是動態結點。
    VFS索引節點存放關於具體檔案的一般資訊,其資料結構為inode。
    3.目錄項(dentry)結構
    每個檔案除了有一個索引節點inode資料結構外,還有一個目錄項dentry資料結構。
    inode結構記錄的是檔案物理上的屬性,dentry結構描述的是檔案邏輯上的屬性。
    一個dentry只能和一個inode對應。但一個inode可以對應多個dentry。
    4.檔案(file)結構
    Linux所有檔案操作都基於檔案描述符(file descriptor,簡稱fd),它是一個整數。
    Linux專門定義file資料結構,儲存檔案開啟後文件讀寫位置(偏移量)等資訊。這個結構稱為開啟的檔案描述(open file description)。
    每個程序開啟檔案後都對應一個file結構。
    5.小結
    超級塊是對一個檔案系統的描述。
    索引節點是對一個檔案物理屬性的描述。
    目錄項是對一個檔案邏輯屬性的描述。
    一個程序(或使用者)開啟的檔案是由files_struct來描述。
    整個系統所開啟的檔案是由file結構來描述。