5.1.2设备驱动程序.ppt
文本预览下载声明
LINUX原理及应用 武汉大学计算机学院 郑鹏 Email:pzheng51@163.com 第5章 Linux设备管理 Linux设备管理的主要任务是控制设备完成输入输出操作,所以又称输入输出(I/O)子系统。它的任务是把各种设备硬件的复杂物理特性的细节屏蔽起来,提供一个对各种不同设备使用统一方式进行操作的接口。 设备管理是Linux操作系统管理中最复杂的部分。在Linux系统中,I/O软件和文件系统是紧密联系的,文件系统提供了用户访问设备、进行数据I/O操作的一致性接口,这个部分是设备独立的,用户可以采用统一的方式访问不同的设备,从而将硬件设备的特性及管理细节对用户隐藏起来,文件系统中实现了设备管理的设备无关性。 5.1 Linux设备管理概述 5.1.1 设备的分类 在Linux系统中,硬件设备分为三种: 块设备将数据按可寻址的块为单位进行处理,一般要使用缓冲区在设备与内存之间传送数据,常用的块设备有磁盘,U盘,CD-ROM等; 字符设备是以字符为单位进行数据传输,字符设备通常只允许顺序访问,一般不需要使用缓冲区而直接对它进行读写,常用的字符设备有鼠标,键盘,串行口等; 网络设备是通过通信网络传输数据的设备,一般指与通信网络连接的网络适配器(网卡)等,Linux使用套接字(socket)以文件I/O方式提供了对网络数据的访问。 5.1.1 设备的分类 网络设备在Linux里做专门的处理。为屏蔽物理设备的多样性,Liunx对所有的网络设备抽象,并定义统一概念:接口。对于每一个已经驱动了的网络设备,都用一个struct net_device的数据结构表示。 网络设备与字符设备及块设备的不同在于: (1)网络接口不存在于Linux文件系统中,而是在核心中用一个net_device数据结构表示。 (2)网络设备在数据包发送和接收时,直接通过接口访问,而不需要进行文件的操作。 (3)网络接口是在系统初始化的时候生成的,对于内核支持但不存在的物理设备,将不存在与之对应的net_device结构。 (4)在系统和驱动程序之间定义有专门的数据结构进行数据的传递。 5.1.2 设备驱动程序 系统对设备的控制和操作是由设备驱动程序完成的。设备驱动程序是由设备服务子程序和中断处理程序组成。设备服务子程序包括了对设备进行各种操作的代码,中断处理子程序处理设备中断。 设备驱动程序的主要功能是: 对设备进行初始化; 启动或停止设备的运行; 把设备上的数据传送到内存或把数据从内存传送到设备; 检测设备状态。 驱动程序是与设备相关的,其代码由内核统一管理。驱动程序在具有特权级的内核态下运行,是输入输出子系统的一部分。 5.1.2 设备驱动程序 一个完整的设备驱动程序包括: (1)设备驱动程序的注册与注销:完成设备加载的初始化工作,或卸载时的工作。 (2)设备的打开与释放。 (3)设备的读写操作。 (4)设备控制操作。 (5)设备中断和查询。 5.1.2 设备驱动程序 Linux有许多不同的设备驱动程序,但是它们都具有一些共性: 内核代码 内核接口 内核机制与服务 动态可加载 可配置 动态性 5.1.2 设备驱动程序 在Linux系统中,与设备无关的软件的功能大部分是由文件系统去完成,这些软件主要功能如下: (1)负责把设备名与相应驱动程序对应起来,通过主设备号找到相应的设备驱动程序,通过从设备号确定具体的物理设备。 (2)对设备提供保护机制,它像对文件保护那样采用通常的rwx权限机制。 (3)屏蔽块设备间扇区大小的差异,向高层软件提供统一大小数据块。 (4)采用缓冲技术,从而解决数据交换速度匹配问题。 (5)负责独占设备的分配和释放。 5.1.3 设备的标识 对设备的识别使用设备类型、主设备号、次设备号。 设备类型:字符设备还是块设备。 按照设备使用的驱动程序不同而赋予设备不同的主设备号。主设备号是与驱动程序一一对应的,同时还使用次设备号来区分一种设备中的各个具体设备。次设备号用来区分使用同一个驱动程序的多个设备。 5.1.4 设备文件 Linux设备管理的基本特点是把物理设备看成文件,采用处理文件的接口和系统调用来管理控制设备。从抽象的观点出发,Linux的设备又称为设备文件。设备文件也有文件名,设备文件名一般由两部分组成。第一部分2~3个字符,表示设备的种类,第二部分通常是字母或数字,用于区分同种设备中的单个设备。 5.1.5 设备驱动程序和内核之间的接口 Linux系统和设备驱动程序之间使用标准的交互接口。无论是字符设备、块设备还是网络设备的驱动程序,当内核请求它们提供服务时,都使用同样的接口。 5.1.5 设备驱动程序和内核之间的接口 在应用程序界面上,利用内核提供的系统调用来实现可安装模块的动态安装和
显示全部