Windows 檔案系統(1)

來源:互聯網
上載者:User

在現代作業系統中,檔案系統為存放裝置提供了流方式的資料管理,允許應用程式共用卷的儲存空間,同時又可以獨享不同的資料流。在Windows中,檔案系統提供了一個層次狀的名字空間,並整合了系統的全域名字空間中;檔案對象既是裝置對象的已開啟執行個體的抽象,也代表了檔案系統中一個已開啟的資料流執行個體。Windows 的檔案系統以卷裝置對象為儲存基礎,不同種類的檔案系統定義了不同的儲存格式。檔案系統格式的描述能力也決定了它的資料管理能力,比如檔案的存取權限管理、是否壓縮、單個檔案的最大尺寸,等等。檔案系統在windows的儲存管理結構中只是一個環節,其驅動程式位於儲存棧的上部,它們通常依賴於緩衝管理器來實現檔案資料的緩衝。

    Windows支援的原生檔案系統式NTFS (NT File System), 其驅動程式為ntfs.sys;另一種常用的檔案系統是FAT(FileAllocation Table), 這是從DOS時代遺留下來的,它的格式相對比較簡單,目前仍被廣泛用於移動介質,以方便資料交換,除了NTFS和FAT檔案系統,Microsoft還為windows提供了其他一些檔案系統驅動程式,包括CDFS和UDFS。CDFS即CD-ROM檔案系統,這是一種唯讀檔案系統,其驅動程式為cdfs.sys;UDFS即UDF檔案系統,主要針對DVD-ROM,
它比CDFS更靈活,其驅動程式為udfs.sys。

在Windows的全域名字空間中,檔案系統驅動程式對象被指定存放在“\Filesystem”目錄下,例如,“\FileSystem\ntfs”和“\FileSystem\cdfs”等。當windows載入這些驅動程式時,如果看到在驅動程式的註冊表鍵(HKLM\SYSTEM\CurrentControlSet\Service\<DriverName>)中,type值為2(宏SERVICE_FILE_SYSTEM_DRIVER)或8(宏SERVICE_RECOGNIZER_DRIVER),那麼,IopGetDriverNameFromKeyNode函數將返回以“\FileSystem”為首碼的名稱,否則返回以“\Driver”為首碼的名稱。IopLoadDriver函數調用lopGetDriverNameFromKeyNode函數來決定驅動程式對象的名稱。

(註:lopLoadDriver與lopGetDriverNameFromKeyNode都是NTDLL中未公開的函數)。

Windows DDK提供了CDFS和FAT檔案系統的原始碼,讀者可以編譯這兩個驅動程式,然後替換原檔案,利用這種方法可以跟蹤和觀察windows檔案系統的運行。

從驅動程式的結構來看,檔案系統驅動程式除了提供標準的分發常式,更傾向於提供快速I/O入口,因為經過快速I/O入口可避免“構造IRP”的開銷。其次,檔案系統驅動程式通常使用緩衝管理器來提供檔案一級的緩衝能力,雖然這不是必需的,但是緩衝管理器本質上為檔案系統提供了一套公用的緩衝機制。只要檔案系統驅動程式恰當地使用緩衝管理器的緩衝功能,就可以以相對較小的代價獲得效能、記憶體使用量效率等方面的優勢。檔案系統驅動程式除了為每個開啟的檔案使用緩衝管理器的緩衝能力,還可以利用緩衝管理器的CcMapData, CcPinRead,
CcPreparePinWrite等介面函數,將卷上的中繼資料映射或鎖定到系統地址空間,然後方便地操作這些資料。顯示了一個檔案系統驅動程式的結構,以及它與I/O管理器和緩衝管理器之間的緊密關係。

為了有效地管理一個卷,檔案系統驅動程式通常使用一些內部資料結構來維護卷,目錄和檔案的狀態。一個最基本的資料結構師VCB ( Volume Control Block), VCB通常包含了一個檔案系統執行個體所對應的卷裝置對象。

在檔案系統中,通常有兩種類型的對象:目錄(directory)和檔案(file)。檔案代表了一個資料流,應用程式可以從檔案中讀寫資料。目錄是檔案系統中用於將多個檔案有效組織起來的容器物件,其本身並不包含使用者資料流。目錄和檔案既有卷上的資料結構表示,稱為磁碟上的表示(on-disk representation),也可能在記憶體中的表示(in-memory representation)。在磁碟上,最基本的管理資料單元是扇區,支援Intel x86系統的磁碟的扇區大小通常為512位元組,而檔案系統可以以更大的粒度來管理磁碟上的資料,此粒度稱為簇(cluster),是扇區的整數倍的大小。因此,從檔案系統的管理角度,一個檔案是由一組簇構成的,這些簇形成了檔案資料流的儲存空間,目錄也包含了一個或多個簇,這些簇中的資料描述了該目錄中的檔案,包括了他們的檔案屬性和所屬的簇的位置資訊。不同的檔案系統可以定義不同的磁碟結構。對於再系統運行過程中被引用的檔案或目錄,檔案系統驅動程式必須使用恰當的記憶體資料結構來描述他們。分別稱為FCB(File
Control Block)和DCB(Directroy Control Block)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.