PRoc文件系统是提供一个接口给用户,让用户能够查看系统运行的状态信息,让用户能够修改内核的一些参数,比如说打印级别sysfs是基于ram的文件系统,它是把内核的一些数据结构,以及这些数据结构中的一些属性,以及他们之间的关系展示给用户,暴露给用户。linux2.6内核引入了sysfs文件系统。sysfs被看成是与proc同类别的文件系统。sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户控件可以访问到。Sysfs被加载到/sys/目录下,它的子目录包括:(1)Block:在系统中发现的每个块设备在该目录下对应一个子目录,每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面属性,如,设备大小。(loop块设备是使用文件来模拟的)(2)Bus:在内核中注册的每条总线在该目录下对应一个子目录,如:ide,pci,scsi,usb,pcmia。其中每个总线目录内又包含了在整个系统中发现的属于该总线类型的设备,driver目录包含了注册到该总线的所有驱动。(3)Class:将设备按照功能进行的分类,如/sys/class/net目录下包含了所有网络接口。(4)Devices:包含系统所有的设备(5)Kernel:内核中的配置参数(6)Module:系统中所有模块的信息(7)Firmware:系统中的固件(8)Fs:描述系统中的文件系统(9)Power:系统中的电源选项
一个设备可能存在于3个目录下,但是从物理上讲可能是一个设备,就看怎么划分。从功能上讲是一个鼠标,从总线上讲是一个USB设备KobjectKobject实现了基本的面向对象的管理机制,是构成Linux2.6设备模型的核心结构。她与sysfs文件系统紧密相连,在内核中注册的每个kobject对象对应sysfs文件系统中的一个目录。



、
实例分析:Kobject.c
ksetkest是具有相同类型的kobject的集合,在sysfs中体现成一个目录,在内核中用kset数据结构表示,定义为:

热插拔事件在Linux系统中,当系统配置发生变化时,如:添加kset到系统;移动kobject,一个通知会从内核空间发送到用户空间,这就是热插拔事件。热插拔事件会导致用户空间中相应的处理程序(如udev,mdev)被调用,这些处理程序会通过加载驱动程序,创建设备节点等来相应热插拔事件。
这三个函数什么时候被调用?当该kset所管理的kobject和kset状态发生变化时(如被加入,移动),这三个函数将被调用。(例:kobject_uevent调用) 。
实例分析:kset.c
总线的注册和删除:




实例分析:Bus_basic.c
设备:

实例分析:Bus.c,Device.c
device

驱动:















快速/慢速中断:这两种类型的中断处理程序的主要区别在于,快速中断保证中断处理的原子性(不被打断),而慢速中断则不保证。换句话说,也就是“开启中断”标志位(处理器IF)在运行快速中断处理程序时是关闭的,因此在服务该中断时,不会被其他类型的中断打断;而调用慢速中断处理程序时,其他类型的中断仍可以得到服务。共享中断:共享中断是将不同设备挂到同一个中断信号线上。Linux对共享的支持主要是PCI设备提供服务。

中断处理程序:什么是中断处理程序?有何特别之处?中断处理程序就是普通的C代码。特别之处在于中断处理程序是在中断上下文中运行的,它的行为受到某些限制;(1)不能向用户空间发送或者接收数据;(2)不能使用可能引起阻塞的函数;(3)不能使用可能引起调度的函数。

新闻热点
疑难解答