檔案系統介面

2021-08-11 04:07:47 字數 1885 閱讀 6515

檔案系統介面

1.檔案概念

檔案是記錄在外存上的相關資訊的具有名稱的集合。通常檔案表示程式和資料。資料檔案可以是數字、字元、字元數字或二進位制。檔案可以是自由形式,如文字檔案,也可以是具有嚴格的格式。因此,檔案的概念極為廣泛。

1.1檔案屬性

檔案有一定的屬性,這根據系統而有所不同,但是通常都包括如下屬性:

1)名稱:檔案符號名稱是唯一的、按照人們容易讀取的形式儲存。

2)識別符號:標識檔案系統內檔案的唯一標誌,通常為數字;對人而言這是不可讀的檔名稱。

3)型別:被支援不同型別的檔案系統所使用。

4)位置:該資訊指向裝置和裝置上檔案位置的指標。

5)大小:檔案當前大小,該屬性也可以包括檔案允許的最大容量。

6)保護:決定讀、寫、執行等的訪問控制資訊。

7)時間、日期和使用者標識:檔案建立、上次修改和上次訪問的相關資訊。這些資料用於保護、安全和使用跟蹤。

1.2檔案操作

檔案屬於抽象資料型別。為了合適地定義檔案,需要考慮有關檔案的操作。作業系統提供系統呼叫對檔案進行建立、讀、寫、定位、刪除和截短。

1.3檔案型別

當設計檔案系統時,總是要考慮作業系統是否應該是被和支援檔案型別。如果作業系統識別檔案型別,那麼它就可以按照合理的方式對檔案進行操作。

1.4檔案結構

檔案型別也可以用來表示檔案的內部結構。原始檔和目標檔案具有一定的結構,以適應相應處理程式的要求。

1.5內部檔案結構

從內部而言,定位檔案偏移量對作業系統來是可能是比較複雜的,磁碟系統通常具有明確定義的塊大小,這是由扇區大小決定的。所有磁碟i/o是按塊來執行的,且所有塊都是同樣大小。物理記錄大小不太可能剛好與所需邏輯記錄大小一樣長,而且邏輯記錄的長度是可變的。對這個問題的常用解決辦法是先將若干個邏輯記錄打包,在放入物理記錄。

2.訪問方法

檔案用來儲存資訊。當使用時,必須訪問和將這些資訊讀入到計算機記憶體。

2.1順序訪問

最為簡單的訪問方式,檔案資訊按順序,乙個記錄接著乙個記錄地加以處理。這種訪問模式最為常用,例如編輯器和編譯器通常是按照這種方式來訪問檔案的。

2.2直接訪問

檔案由固定長度的邏輯記錄組成,以允許程式按任意順序進行快速讀和寫。直接訪問方式是基於檔案的磁碟模型,這是因為磁碟允許對任意檔案塊進行隨機讀和寫。對於直接訪問檔案,讀寫順序是沒有限制的。直接讀寫訪問檔案可立即訪問大量的資訊,所以極為有用。資料庫通常使用這種型別的檔案。

2.3其他訪問方式

這些訪問通常涉及建立檔案索引。索引包括各塊的指標。為了查詢檔案中的記錄,首先搜尋索引,再根據指標直接訪問檔案,以查詢所需要的記錄。

3.目錄結構

3.1儲存結構

磁碟可以整體地用於乙個檔案系統。但是,有時需要在乙個磁碟上裝多種檔案系統,或一部分用於檔案系統和另一部分位於其他地方,如交換空間或非格式化的磁碟空間。這些部分稱為分割槽或片,或稱為小型磁碟。每個磁碟分割槽可以建立乙個檔案系統。為簡單起見,可以將儲存檔案系統的一大塊儲存空間作為卷。卷可以存放多個作業系統,使系統啟動和執行多個作業系統。包含檔案系統的每個卷還必須包含系統上檔案的資訊。這些資訊儲存在裝置目錄或卷中。裝置目錄,簡稱目錄,記錄卷上所有檔案的資訊,如名稱、位置、大小和型別。

3.2目錄概述

目錄可以看作是符號表,它能將檔名稱轉換成目錄條目。目錄可以按照許多方式來加以組織。對目錄,需要能夠插入條目、刪除條目、搜尋給定條目、列出所在目錄條目。

3.3單層結構目錄

所有檔案都包含在同乙個目錄下,特點是便於理解和支援。

3.4雙層結構目錄

對於雙層目錄的結構,每個使用者都有自己的使用者檔案目錄。

3.5樹狀結構目錄

最為常用的結構目錄。樹有根目錄,系統內的每個檔案都有唯一路徑。

2017-11-22-lr 作業系統概念第七版

hadoop獲取檔案系統介面

hadoop提供了許多檔案系統的介面,使用者可以使用url方案選取合適的檔案系統來實現互動。fs.localfilesystem 客戶端校驗和本地檔案系統hdfs.distributionfilesystem hadoop分布式檔案系統hdfs.hftpfilesystem 支援http通過唯讀的方...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

efi的sys檔案系統介面

在driver firmware efi efi.c 中通過subsys initcall efisubsys init 來初始化efisubsys static int init efisubsys init void error generic ops register if error got...