1.3.1 字符设备与块设备 在 Linux 内核的设备驱动世界里,字符设备与块设备不是两张并列的分类标签,而是一组深刻影响数据通路设计、内存管理策略、并发模型乃至整个 I/O 栈性能边界的底层契约。它们不是“看起来不同”,而是“行为上根本不可互换”——就像 TCP 之于 UDP,不是接口差异,而是语义鸿沟。当你在 下看到 和 ,你以为只是两个文件?不。你看到的是两种截然不同的内核子系统在用户空间投下的影子;你打开它们时调用的 系统调用,背后触发的是两套完全独立的初始化逻辑、两套不兼容的数据结构注册机制、两套对齐约束与缓存策略截然不同的 I/O 路径。 我们今天不谈概念定义——教科书早已写烂了“字符设备按字节流访问,块设备按固定大小块访问”。