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


块设备和字符设备之间的主要区别如下:

块设备

块设备是存储设备,可以以固定大小的块为单位进行读写数据操作。

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

通常,块设备一次读取或写入整个块。大多数文件系统也基于块设备。

块设备的优点是它需要较少的引脚来访问数据;但是,它包括一个缓冲机制的实现,以加快读取和写入访问期间的访问速度。

块系统也可能仅接受以块为单位的输入和输出(基于系统的规格,此类块的大小各不相同)。

优点:

  • 块设备需要较少的引脚来访问数据。

  • 为了加快读取和写入操作期间的访问速度,它需要一个缓冲机制。

  • 以块为单位接受输入和输出。

缺点:

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

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

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

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

字符设备

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

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

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

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

字符设备的关键优势

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

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

  • 但是,由于 DMA 限制为 64K,因此几乎不可能实现此优势。

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

更新于: 2021年12月1日

4K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告