Block devices (disks, SSDs) transfer data in fixed-size blocks and support seeking to arbitrary positions. The OS needs a driver type that understands block addressing and buffering.
A block driver handles block-oriented devices, managing block-sized data transfers (typically 512B or 4KB), supporting random access and buffering.
- OS sends block read/write request (block number, count)
- Driver translates block number to disk address (cylinder, head, sector)
- Driver sets up DMA for bulk data transfer
- Driver handles completion interrupt
- Driver may do elevator sorting (disk scheduling) for multiple requests
- Transfers fixed-size blocks (512B, 4KB typical)
- Supports random access (seek to any block)
- Uses buffering/caching heavily (buffers are block-sized)
- Examples: hard disk driver, SSD driver, USB mass storage
- Built from: Device Driver, O Devices
- Builds into: Disk Structure, Disk Scheduling
- Related: Character Driver, DMA, Buffering
- Contrasts with: Network Driver (packet-based, not block-based)
- Block size must match device’s physical block size (or be properly translated)
- Misaligned block accesses hurt performance on some devices
- Some “block” devices are actually flash-backed and have different characteristics