背景
在类UNIX系统中经常会听到块设备(block device)和字符设备(character device)的概念,它们是一个什么样的概念呢,我们来探讨一下
使用语境
比如,在*OS internals卷一第3章Disk Images这一节中讲到在挂载DMG文件时需要创建(on-the-fly)即时的块设备以支撑这次挂载,那要理解这个场景就需要对块设备本身有所了解,才能知道为什么要创建块设备,以及为什么要选择使用块设备
块设备&字符设备
这两种设备有所有UNIX系统中两个主要的类型: 字符设备,是一种其驱动支持发送和接收单个字符(bytes, octets)来进行通信的设备. 比如 - 串口(serial ports), 并口(parallel ports), 声卡(sound cards), 键盘(keyboard).
块设备,是一种其驱动通过发送整块blocks数据来进行通信的设备. 比如 - 硬盘(hard disks), USB相机(cameras), Disk-On-Key.
(需要注意的是: 文件系统只能通过块设备挂载.)
回到开头的语境
所以在用户下载了DMG文件之后,因为DMG中是一个完整的文件系统的镜像,所以需要先挂载到系统后才能读取其中的内容,而文件系统挂载只支持块设备,所以需要创建即时的块设备以支撑这次挂载
字符设备的源代码保存在drivers/char/, 块设备的源代码保存在drivers/block/
参考
1. The Linux Kernel, Kernel Modules And Hardware Drivers
3. Drivers