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)