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