在電腦科學和作業系統中,檔案控制塊(FCB)和檔案描述符(File Descriptor)是兩種關鍵的資料結構,用於管理和操作檔案。它們在不同的作業系統和檔案系統中可能有些許差異,但通常具有以下基本特徵:
檔案控制塊(FCB)
-
檔名(File Name):檔案的名稱,用於標識檔案。
-
檔案型別(File Type):檔案的型別,如普通檔案、目錄、裝置檔案等。
-
檔案位置(File Position):檔案當前讀寫位置的指標或索引。
-
檔案大小(File Size):檔案所佔用的空間大小。
-
檔案訪問許可權(File Permissions):定義了哪些使用者或程序可以對檔案進行讀寫操作的許可權。
-
時間戳(Timestamps):記錄檔案的建立時間、修改時間和訪問時間等。
-
檔案屬性(File Attributes):包括檔案的擴充套件屬性,如所有者、檔案系統相關資訊等。
-
檔案指標(File Pointers):用於跟蹤檔案的物理位置或邏輯位置,以便於檔案的讀寫操作。
檔案描述符(File Descriptor)
-
檔案表索引(File Table Index):指向作業系統維護的檔案表中檔案控制塊(FCB)的索引。
-
檔案訪問模式(File Access Mode):記錄檔案當前的訪問模式,如讀、寫、追加等。
-
檔案狀態標誌(File Status Flags):記錄檔案的狀態,如是否已開啟、是否處於阻塞模式等。
-
檔案位置偏移量(File Offset):記錄檔案當前的讀寫位置。
在不同的作業系統和程式設計環境中,這些資料結構可能會有所不同的具體實現細節,但它們的基本功能和作用是相似的:管理檔案的屬性、狀態和位置資訊,使得作業系統和應用程式能夠有效地對檔案進行讀寫和管理操作。
目錄條目(Directory Entry)作為檔案系統中的基本資料結構,具有以下基本特徵和屬性:
-
檔名(File Name):
- 目錄條目包含了檔案或子目錄的名稱。這是唯一標識檔案或目錄的名稱部分。
-
檔案型別(File Type):
- 指示該條目是檔案、目錄還是特殊檔案(如裝置檔案)的標誌。檔案型別通常用於區分不同型別的檔案物件。
-
索引節點號(Inode Number):
- 每個目錄條目關聯一個索引節點號(Inode Number),用於標識檔案或目錄在檔案系統中的唯一索引節點。索引節點包含了檔案的詳細後設資料資訊,如檔案大小、許可權、時間戳等。
-
其他後設資料:
- 目錄條目可能包含其他後設資料,例如檔案的建立時間、修改時間、訪問時間等。這些後設資料通常是與檔案或目錄相關的附加資訊。
-
儲存位置:
- 目錄條目儲存在檔案系統的目錄中,通常由目錄檔案管理。每個目錄條目在目錄檔案中佔據固定或可變長度的空間,以便儲存其各部分資訊。
-
許可權資訊:
- 可能包括檔案的許可權、所有者、群組等安全相關資訊,這些資訊是檔案系統用於控制訪問許可權的重要組成部分。
-
檔案大小和資料塊資訊:
- 對於檔案條目,還可能包含檔案的大小和指向檔案資料塊的指標或索引,這些資訊指導檔案系統如何讀取和寫入檔案的實際資料。
目錄條目的設計和功能使其能夠有效地組織和管理檔案系統中的檔案和目錄結構,提供檔案系統中檔案物件的基本資訊和位置資訊,以便於作業系統進行檔案的查詢、訪問和管理。
檔案系統和作業系統相關的其他重要資料結構包括:
-
索引節點(Inode):
- 索引節點是在類Unix檔案系統中常見的資料結構,用於儲存檔案的後設資料資訊。每個檔案和目錄都有一個對應的索引節點,它包含了檔案的許可權、大小、資料塊指標等重要資訊。
-
超級塊(Superblock):
- 超級塊是檔案系統中的一個關鍵資料結構,它儲存了整個檔案系統的後設資料資訊,包括檔案系統的型別、大小、塊大小、空閒塊列表等。超級塊通常位於檔案系統的起始部分。
-
點陣圖(Bitmap):
- 點陣圖是一種資料結構,用於跟蹤儲存介質上的空閒和已用塊。對於磁碟或其他塊裝置,點陣圖記錄了每個塊的使用情況,使檔案系統能夠有效地管理空間分配和回收。
-
檔案系統表(File System Table):
- 檔案系統表是作業系統中維護的一個資料結構,它記錄了當前系統中已掛載的所有檔案系統的資訊,包括檔案系統的型別、掛載點、超級塊位置等。
-
塊描述符(Block Descriptor):
- 塊描述符用於描述儲存介質上的資料塊的位置和大小,它通常與檔案系統中的塊大小密切相關。
-
檔案目錄樹(File Directory Tree):
- 檔案目錄樹是檔案系統中的一個重要結構,它由目錄條目和檔案控制塊組成,用於組織和管理檔案和子目錄之間的層次結構關係。
-
檔案授權資訊(File Access Control Information):
- 這些資訊包括檔案的訪問許可權、所有者、群組以及與檔案相關的安全屬性。
這些資料結構共同構成了作業系統和檔案系統在管理檔案儲存和訪問時所需的基礎資訊。不同的檔案系統和作業系統可能會有不同的實現方式和具體的資料結構設計,但它們的功能和作用通常是類似的。
不同型別的檔案確實有各自不同的檔案頭特徵,這些特徵通常以十六進位制形式表示。以下是一些常見檔案型別及其檔案頭特徵的示例:
-
JPEG 影像檔案:
- 檔案頭特徵:FF D8 FF
-
PNG 影像檔案:
- 檔案頭特徵:89 50 4E 47 0D 0A 1A 0A
-
GIF 影像檔案:
- 檔案頭特徵:47 49 46 38 (對應ASCII:"GIF8")
-
PDF 文件:
- 檔案頭特徵:25 50 44 46 (對應ASCII:"%PDF")
-
ZIP 壓縮檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
MP3 音訊檔案:
- 檔案頭特徵:49 44 33 (對應ASCII:"ID3")
-
MP4 影片檔案:
- 檔案頭特徵:66 74 79 70 (對應ASCII:"ftyp")
-
Microsoft Word 文件(DOCX):
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
Microsoft Excel 文件(XLSX):
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
Microsoft PowerPoint 文件(PPTX):
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
Windows可執行檔案(EXE):
- 檔案頭特徵:4D 5A (對應ASCII:"MZ")
-
Unix/Linux可執行檔案:
- ELF 檔案頭特徵:7F 45 4C 46 (對應ASCII:"\x7FELF")
-
ZIP 壓縮檔案(另一種常見格式):
- 檔案頭特徵:50 4B 05 06 (對應ASCII:"PK\x05\x06")
-
RAR 壓縮檔案:
- 檔案頭特徵:52 61 72 21 1A 07 00
-
TAR 歸檔檔案:
- 檔案頭特徵:75 73 74 61 72 (對應ASCII:"ustar")
-
BMP 影像檔案:
- 檔案頭特徵:42 4D (對應ASCII:"BM")
-
AVI 影片檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
WAV 音訊檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
MPEG 影片檔案:
- 檔案頭特徵:00 00 01 BA (對應ASCII:"\x00\x00\x01\xBA")
-
FLV 影片檔案:
- 檔案頭特徵:46 4C 56 01 (對應ASCII:"FLV\x01")
-
OGG 音訊檔案:
- 檔案頭特徵:4F 67 67 53 (對應ASCII:"OggS")
-
3GP 影片檔案:
- 檔案頭特徵:66 74 79 70 33 67 (對應ASCII:"ftyp3g")
-
Windows Registry 檔案:
- 檔案頭特徵:72 65 67 66 (對應ASCII:"regf")
-
SQLite 資料庫檔案:
- 檔案頭特徵:53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 (對應ASCII:"SQLite format 3\x00")
-
Java 類檔案:
- 檔案頭特徵:CA FE BA BE
-
HTML 檔案:
- 檔案頭特徵(通常):3C 21 44 4F 43 54 59 (對應ASCII:"<!DOCTY")
-
XML 檔案:
- 檔案頭特徵(通常):3C 3F 78 6D 6C 20 (對應ASCII:"<?xml ")
-
PDF 檔案:
- 檔案頭特徵:25 50 44 46 2D (對應ASCII:"%PDF-")
-
PNG 影像檔案:
- 檔案頭特徵:89 50 4E 47 0D 0A 1A 0A
-
JPEG 影像檔案:
- 檔案頭特徵(常見):FF D8 FF E0 (JPEG 檔案的起始)
-
GIF 影像檔案:
- 檔案頭特徵:47 49 46 38 39 61 (對應ASCII:"GIF89a")
-
MP3 音訊檔案:
- 檔案頭特徵(常見):49 44 33
-
MP4 影片檔案:
- 檔案頭特徵:66 74 79 70 69 73 6F 6D (對應ASCII:"ftypisom")
-
Excel 電子表格檔案(XLSX 格式):
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
Word 文件檔案(DOCX 格式):
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
ZIP 壓縮檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
RAR 壓縮檔案:
- 檔案頭特徵:52 61 72 21 1A 07 00
-
TAR 存檔檔案:
- 檔案頭特徵:75 73 74 61 72 00 30 30
-
GZIP 壓縮檔案:
- 檔案頭特徵:1F 8B 08
-
BMP 影像檔案:
- 檔案頭特徵:42 4D (對應ASCII:"BM")
-
TIFF 影像檔案:
- 檔案頭特徵(小端序):49 49 2A 00 (對應ASCII:"II*\x00")
- 檔案頭特徵(大端序):4D 4D 00 2A (對應ASCII:"MM\x00*")
-
AVI 影片檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
WAV 音訊檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
Windows 可執行檔案(EXE):
- 檔案頭特徵(常見):4D 5A (對應ASCII:"MZ")
-
JSON 檔案:
- 檔案頭特徵:7B 22 66 69 6C 65 22 3A (對應ASCII:"{"file":")
-
XML 檔案:
- 檔案頭特徵(UTF-8 編碼):3C 3F 78 6D 6C 20 (對應ASCII:"<?xml ")
- 檔案頭特徵(UTF-16 小端序編碼):3C 00 3F 00 78 00 6D 00 (對應ASCII:"<?x")
- 檔案頭特徵(UTF-16 大端序編碼):00 3C 00 3F 00 78 00 6D (對應ASCII:"<?xm")
-
YAML 檔案:
- 檔案頭特徵:2D 2D 2D 0A (對應ASCII:"---\n")
-
CSV 檔案:
- CSV 檔案沒有明確的檔案頭特徵,通常根據副檔名來識別(.csv)。
-
SQLite 資料庫檔案:
- 檔案頭特徵:53 51 4C 69 74 65 20 66 (對應ASCII:"SQLite f")
-
JSON Web Token (JWT):
- JWT 是一種使用點分隔的三部分結構,但沒有明確的固定檔案頭特徵,通常識別透過檢查格式和編碼規範。
-
MP3 音訊檔案:
- 檔案頭特徵:49 44 33 (對應ASCII:"ID3")
-
MP4 影片檔案:
- 檔案頭特徵:66 74 79 70 33 67 70 (對應ASCII:"ftyp3gp")
-
PDF 檔案:
- 檔案頭特徵:25 50 44 46 2D (對應ASCII:"%PDF-")
-
DOCX 文件檔案:
- 檔案頭特徵:50 4B 03 04 14 00 06 00 (對應ASCII:"PK\x03\x04\x14\x00\x06\x00")
-
XLSX 電子表格檔案:
- 檔案頭特徵:50 4B 03 04 14 00 06 00 (對應ASCII:"PK\x03\x04\x14\x00\x06\x00")
-
PPTX 幻燈片檔案:
- 檔案頭特徵:50 4B 03 04 14 00 06 00 (對應ASCII:"PK\x03\x04\x14\x00\x06\x00")
-
JPEG 影像檔案:
- 檔案頭特徵(常見SOI標記):FF D8 FF E0 00 10 4A 46 49 46 00 01 (對應ASCII:"ÿØÿà\x00\x10JFIF\x00\x01")
-
PNG 影像檔案:
- 檔案頭特徵:89 50 4E 47 0D 0A 1A 0A (對應ASCII:"‰PNG\r\n\x1A\n")
-
GIF 影像檔案:
- 檔案頭特徵:47 49 46 38 37 61 (對應ASCII:"GIF87a") 或 47 49 46 38 39 61 (對應ASCII:"GIF89a")
-
Java 類檔案:
- 檔案頭特徵:CA FE BA BE (魔數)
-
BMP 影像檔案:
- 檔案頭特徵:42 4D (對應ASCII:"BM")
-
TIFF 影像檔案:
- 檔案頭特徵(小端序):49 49 2A 00 (對應ASCII:"II*")
- 檔案頭特徵(大端序):4D 4D 00 2A (對應ASCII:"MM\x00*")
-
ZIP 壓縮檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
RAR 壓縮檔案:
- 檔案頭特徵:52 61 72 21 1A 07 00 (對應ASCII:"Rar!..")
-
7Z 壓縮檔案:
- 檔案頭特徵:37 7A BC AF 27 1C (對應ASCII:"7z¼¯'.")
-
TAR 存檔檔案:
- 檔案頭特徵:75 73 74 61 72 00 30 30 (對應ASCII:"ustar\x00\x30\x30")
-
GZIP 壓縮檔案:
- 檔案頭特徵:1F 8B 08 (對應ASCII:"..")
-
FLAC 音訊檔案:
- 檔案頭特徵:66 4C 61 43 (對應ASCII:"fLaC")
-
WAV 音訊檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
OGG 音訊檔案:
- 檔案頭特徵:4F 67 67 53 (對應ASCII:"OggS")
-
MPEG 影片檔案:
- 檔案頭特徵:00 00 01 BA (對應ASCII:"\x00\x00\x01\xBA")
-
AVI 影片檔案:
- 檔案頭特徵:52 49 46 46 (對應ASCII:"RIFF")
-
MKV 影片檔案:
- 檔案頭特徵:1A 45 DF A3 (對應ASCII:"ÿØ")
-
MPG/MPEG 影片檔案:
- 檔案頭特徵:00 00 01 B3 (對應ASCII:"\x00\x00\x01\xB3")
-
FLV 影片檔案:
- 檔案頭特徵:46 4C 56 01 (對應ASCII:"FLV\x01")
-
MOV 影片檔案:
- 檔案頭特徵:6D 6F 6F 76 (對應ASCII:"moov")
-
ASF 影片檔案:
- 檔案頭特徵:30 26 B2 75 (對應ASCII:"0&²u")
-
WebM 影片檔案:
- 檔案頭特徵:1A 45 DF A3 (對應ASCII:"ÿØ")
-
MP3 檔案:
- 檔案頭特徵:49 44 33 (對應ASCII:"ID3")
-
AAC 檔案:
- 檔案頭特徵:FF F1 (對應ASCII:"ÿñ")
-
PDF 檔案:
- 檔案頭特徵:25 50 44 46 (對應ASCII:"%PDF")
-
DOCX 檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
XLSX 檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
PPTX 檔案:
- 檔案頭特徵:50 4B 03 04 (對應ASCII:"PK\x03\x04")
-
TXT 檔案:
- 檔案頭特徵:EF BB BF (UTF-8 BOM)
-
CSV 檔案:
- 檔案頭特徵:(通常是純文字格式,沒有固定的二進位制檔案頭)
-
HTML 檔案:
- 檔案頭特徵:3C 68 74 6D 6C (對應ASCII:"<html")
-
XML 檔案:
- 檔案頭特徵:3C 3F 78 6D 6C (對應ASCII:"<?xml")
-
JSON 檔案:
- 檔案頭特徵:7B (對應ASCII:"{")
-
CSS 檔案:
- 檔案頭特徵:2F 2A (對應ASCII:"/*")
這些檔案頭特徵通常是在檔案的開始幾個位元組中出現的固定值,用於幫助作業系統和應用程式快速識別檔案的型別和格式。不同的檔案型別可能有不同長度的檔案頭,但它們的主要作用是提供檔案型別標識和後設資料資訊,以便於正確解析和處理檔案內容。