File-System Structure
File system 分層把「使用者看到的 file 抽象」與「device 的 block I/O」解耦,讓各層可以獨立替換或共用。
graph TD A[application programs] B[logical file system] C[file-organization module] D[basic file system] E[I/O control] F[devices] A --> B --> C --> D --> E --> F
Logical File System
管理所有 metadata(非資料內容本身):directory lookup、permission check、FCB(FCB / inode)。給下層提供的是 symbolic name → FCB 的解析結果,而非實際 block。
File-Organization Module
把 file-relative logical block(0 ~ N)映射到 volume LBA(logical block address);負責 allocation policy,並向 free-space manager 要 free blocks。logical → physical 的第一段轉換發生在這裡。
Basic File System
Linux 稱為 block I/O subsystem。以 LBA 為單位向 device driver 發 generic read/write,不關心 block 屬於哪個 file。同時管理 memory buffers / page cache,以及 I/O request scheduling。
I/O Control
Device driver + interrupt handler。把 block request(LBA-level)翻譯成 controller 能執行的 hardware-specific command,並處理 DMA 與 interrupt。LBA → physical sector 的映射由硬體 firmware 完成(HDD: CHS;SSD: NAND page)。
Block 轉換流程小結
file logical block (0~N)
↓ file-organization module(inode / FAT / extent)
volume LBA
↓ basic file system 下傳
↓ I/O control + 硬體 firmware
physical location(磁軌 / NAND page)