区分 UNIX 中的块设备和面向字符的设备
operating systemhardwaresoftware & coding更新于 2026/2/8 13:52:17
块设备和面向字符的设备之间的主要区别如下 −
面向块的设备
块设备是可以以固定大小的块提供数据操作以供读取和写入的存储设备。
硬盘、软盘和光盘驱动器(例如 DVD-ROM 和 CD-ROM)就是此类机器的一些示例。
通常,块设备一次读取或写入整个块。大多数文件方案也基于块计算机。
块设备的好处是它提供更少的引脚来访问数据;然而,它包括缓冲机制的实现,以加快读写访问的速度。
块系统也可能只接受块中的输入和输出(根据系统的规范,这些块的大小会有所不同)。
优点 −
-
面向块的设备提供更少的引脚来访问数据。
-
为了加快读写操作期间的访问速度,它需要一个缓冲机制。
-
接受块中的输入和输出。
缺点 −
-
一次存储专用于一台服务器。
-
块和文件系统的元数据有限
-
即使我们不使用,我们也必须为所有块存储付费分配。
-
它需要更多的实际工作和设置。
面向字符的设备
字符(流)设备可以使用几个字节进行操作,并且不需要缓冲;响应时间和处理速度比块设备更快。
另一方面,在阻塞设备中访问文件需要内存访问,其中文件需要在内存中映射,而内存和块设备之间的速度差异可能会导致性能问题。
提供内核缓存是解决此问题的一种方法。
这种缓存实现使块设备几乎无法使用,并导致 I/O 处理增加。
字符设备的主要优势
-
在面向字符的系统中,I/O 可以直接在系统和用户之间执行,这样就节省了内核的复制过程和缓冲机制开销。
-
可以使用直接内存访问 (DMA) 来执行此类过程。
-
但是,由于 DMA 限制为 64K,因此几乎不可能实现这一优势。
-
流设备通常比块设备使用更少的内存,因为流设备一次需要处理的数据较少,而块设备一次需要访问一个数据块。