本文将从 内容 用途 产生时间三个维度分析不同
1内容不同
/proc/devices
包含两个主要部分:字符设备(char devices)和块设备(block devices)。每个部分列出了设备的主设备号和设备类型的名称。
/dev目录中的每一个文件代表一个设备。这些设备文件分为字符设备文件和块设备文件,分别用于不同类型的设备访问。例如,硬盘通常表示为块设备,而串口则表示为字符设备。
2用途不同
/proc/devices
主要被用于诊断和系统管理目的,帮助管理员和开发者快速查看哪些设备已被系统识别,并确认设备的主设备号。这对于设备驱动开发和调试非常有用。
/dev 用户或者应用程序通过读写这些设备文件来与硬件进行交互。例如,一个程序可能会读取 /dev/mem
来访问物理内存,或者写入 /dev/sda
来向硬盘写数据
总的来说,/proc/devices
主要用于查看设备注册信息,而 /dev
用于实际的设备交互,其中的设备文件则是可以被操作的接口,支持如读写等系统调用。
3产生时间不同
一旦驱动通过在驱动入口函数中调用register_chrdev()
或 cdev_add()来注册设备
,相应的设备和它的主设备号会立即出现在 /proc/devices
文件中。这表明内核已经识别并注册了这个设备。
虽然设备已注册,但用户空间程序通常还需要一个设备文件来与之交互。这个设备文件需要在 /dev
目录下创建。有两种创建方式,手动创建和自动创建。
手动:使用 mknod
命令手动创建设备文件。例如:mknod /dev/mychardev c [major] [minor]
自动(推荐):使用 udev
系统,它会自动检测到由 cdev_add()
创建的设备并生成相应的 /dev
下的设备节点。这是现代Linux系统中推荐的方式,因为它动态管理设备文件并可以应用复杂的规则来命名设备文件。
总结:开发新的字符设备驱动并加载到系统后,/proc/devices
会在设备注册时更新,而 /dev
目录下的设备文件需要在设备注册后手动创建或通过 udev
自动创建。这两个步骤保证了设备在系统中的完整注册和可访问性。