来自https://unix.stackexchange.com/a/472920/674
“字符设备”和“块设备”是抽象概念,通常在 Unix 风格的系统中用于对各种设备进行分类。
设备是由硬件(设备或设备控制器)、设备驱动程序、文件系统、操作系统内核 I/O 子系统和/或其他东西决定的块设备还是字符设备?
我认为它们是纯硬件(设备或设备控制器)的概念,独立于设备驱动程序、文件系统和操作系统内核 I/O 子系统。
唯一真正可见的区别是块设备使用缓冲区缓存而字符设备不使用。(并且某些块设备驱动程序可能会提供在每个文件的基础上绕过缓冲区缓存的选项)。
块设备使用的缓冲区缓存是由设备驱动程序、文件系统还是硬件(设备或设备控制器)提供的?如果是硬件,那么这是否意味着设备是块设备还是字符设备完全由硬件(设备或设备控制器)决定?
谢谢。