1设备管理与模块机制Linux设备分类与识别设备驱动程序设备注册与注销块设备的请求队列模块机制2Linux系统的设备管理在Linux系统中,用户通过文件系统与设备接口
利用标准的系统调用可在设备上进行打开、关闭、读取或写入操作
当用户进程发出I/O请求时,系统将请求处理的权限放在文件系统,文件系统通过驱动程序提供的接口将任务下放到驱动程序,驱动程序根据需要,对设备控制器进行操作,设备控制器再去控制设备本身进行I/O操作
驱动程序向文件系统提供的接口屏蔽了设备的物理特性
但是,在内核中设备文件和普通文件的索引节点有区别,可以确认出是硬件设备还是普通文件,确定要访问相应的设备驱动程序还是文件
3用户进程硬件设备本身设备控制器设备驱动程序文件系统中的设备文件进程请求设备服务的流程4Linux系统的设备管理设备管理具有下列共性:(1)每个设备都对应文件系统中的一个索引节点,都有一个文件名
(2)应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接
(3)对设备的使用类似于对文件的存取
(4)设备驱动程序都是系统内核的一部分,它们必须为系统内核或者它们的子系统提供一个标准的接口
(5)设备驱动程序利用一些标准的内核服务,如内存分配等5基本概念字符设备、块设备、网络设备字符设备(c):以字节为单位进行数据处理,无需缓冲直接读写设备,通常只允许按顺序访问
如打印机、键盘,终端等
块设备(b):将数据按可寻址的块为单位进行处理,可以随机访问,利用缓冲技术
如磁盘,光盘
只有块设备才能支持可安装文件系统
网络设备:是一类特殊的设备,每块网卡有名字但没有设备文件与之对应
网络设备则可以通过BSD套接字进行访问
查看系统中的设备:/proc/devices
字符设备和块设备的主要区别在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发