设备档案系统
简介
在微软的MS-DOS、OS-2和Windows等作业系统中,也有专门的设备档案。它们允许应用程式使用设备驱动程式,通过标準输入输出系统调用与驱动程式互动,从而简化了许多任务,也带来了于设备特性、功能无关的用户级I/O。
在支持chroot进程独立的Unix系统(例如Solaris Containers)中,每个chroot环境中常规情况下都需要一个独立的/dev,它们的挂载点在主机的档案系统中各种地方显示。通过限制设备节点只能放入/dev内的chroot实例中,chroot环境可以强制实行硬体隔离(比Unix的档案系统许可权还要严格的一种访问控制,禁可以止特定应用程式访问或命名硬体)。
实现
本质上讲,设备节点对应于作业系统分配的资源。Unix通过存放于节点结构中的主设备号和从设备号来识别这些资源。在各种作业系统和系统平台上,这些数都是被唯一分配的。通常,主数用于指定驱动程式,而次数用于指定驱动程式控制的某一特定设备(驱动程式可能控制多个设备),在这种情况下,系统可能把次数作为参数传给驱动程式。
设备
字元设备
块设备
伪设备
/dev/null接受并丢弃所有输入;即不产生任何输出。
/dev/full永远在被填满状态的设备。
/dev/loopLoop设备
/dev/urandom产生一个虚假随机的任意长度字元串流。(Non-Blocking)
创建节点
节点是由mknod系统调用创建的。在命令行中,有同名的程式来创建节点。rename和unlink系统调用可以用于移动和删除节点,相应的命令是mv和rm。在使用cp命令时加上-R或-a参数,可以创建一个与原设备节点具有同样属性的节点。
命名约定
在基于Linux的系统中,设备节点一般在/dev下,通常使用如下的前缀:
fb:frame缓冲
fd:软碟
hd:IDE硬碟
lp:印表机
par:并口
pt:伪终端
s:SCSI设备
scd:SCSI音频光碟机
sd:SCSI硬碟
sg:SCSI通用设备
sr:SCSI数据光碟机
st:SCSI磁带
tty:终端
ttyS:串口
大部分设备的前缀名后面跟随一个数字,它唯一指定某一设备。硬碟驱动器的前缀名后面跟随一个字母和一个数字,字母用于指明设备,而数字用于指明分区。因此,/dev/sda3指定了硬碟上的一个分区,/dev/pts/14指定了一个网路终端会话。
本文由'沙凌丝'发布,不代表演示站立场,转载/删除联系作者,如需删除请-> 关于侵权处理说明。