基于Linux的字符设备驱动程序的开发
2012-10-17李兰兰
网络安全技术与应用 2012年4期
李兰兰
南京航空航天大学金城学院 江苏省 211156
0 引言
任何一个计算机系统都是由计算机硬件子系统和计算机软件子系统组成的,缺一不可,他们共同协作完成各种任务,但同时他们又具有一定的独立性。硬件工程师往往不必关心软件,而应用软件工程师也不会过多关注硬件。应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件对他们来说是透明的。而设备驱动程序就能达到这个目的,实现硬件对应用软件工程师的隐形。
1 设备分类
Linux系统下,设备可以分成三种基本类型:字符设备、块设备和网络设备。对于字符设备而言,往往是以字节流的形式进行访问的设备,如鼠标、触摸屏等,其对应的驱动类型是字符设备驱动程序。块设备可以以任意顺序进行访问,以块为单位进行操作,如硬盘,其驱动通过块设备驱动程序来实现。Linux系统中,应用程序可以像操作字符设备一样的读写块设备,但内核为字符设备驱动和块设备驱动提供了完全不同的接口。在Linux系统中,网络设备处理的事务一般面向数据的接收和发送,不像字符设备和块设备一样对应于文件系统的节点,其对应的驱动为网络设备驱动程序。内核和网络设备驱动程序间的通信,完全不同于和字符及块设备驱动程序之间的通信,内核为网络设备驱动程序提供了一套和数据包传输相关的函数。
这种分类方法并不是非常严格的,对于某些复杂的设备,Linux系统还定义了其他的驱动体系结构。……
登录APP查看全文
