区分 UNIX 中面向块和面向字符的设备

面向块和面向字符的设备之间的主要区别如下 -

面向块的设备

块设备是一种存储设备,可以在固定大小的块中提供数据操作以进行读写。

硬盘驱动器、软盘和光驱(例如 DVD-ROM 和 CD-ROM)就是此类机器的一些示例。

通常,阻塞设备一次读取或写入整个块。大多数文件方案也基于块计算机。

块设备的好处是它提供了更少的引脚来访问数据;但是,它包括了一种缓冲机制的实现,以加快读写访问期间的访问速度。

块系统也可能只接受块中的输入和输出(基于系统的规范,此类块的大小各不相同)。

优势 -

  • 面向块的设备提供更少的引脚来访问数据。

  • 为了在读写操作期间加快访问速度,它需要一种缓冲机制。

  • 接受块中的输入和输出。

缺点 -

  • 一次存储专用于一台服务器。

  • 块和文件系统的元数据有限

  • 即使我们没有使用,我们也必须为分配的所有块存储付费。

  • 它需要更多的动手工作和设置。

面向字符的设备

字符(流)设备可以使用几个字节进行操作,并且不需要缓冲;响应时间和处理速度比块设备快。

另一方面,阻塞设备中的文件访问需要内存访问,文件需要映射到内存中,内存和块设备之间的速度差异会导致性能问题。

提供内核缓存是解决此问题的一种方法。

这种缓存实现使块设备几乎无法使用,并导致 I/O 处理增加。

字符设备的主要优势

  • 在面向字符的情况下,I/O 可以直接在系统和用户之间执行,因此,从复制过程和缓冲机制开销中节省了内核。

  • 可以使用直接内存访问 (DMA) 来执行这样的过程。

  • 但是因为DMA被限制在64K,这个优势几乎是不可能实现的。

  • 流设备通常比块设备使用更少的内存,因为流设备一次需要处理的数据更少,而块设备一次需要访问一个数据块。