第九章设备驱动设备驱动概述设备驱动程序专用I/O端口字符设备驱动程序块设备驱动程序
第九章 设备驱动 设备驱动概述 设备驱动程序 专用I/O端口 字符设备驱动程序 块设备驱动程序
设备驱动概述计算机中三个最基本的物质基础是CPU、内存和输入输出(I/O)设备,文件操作是对设备操作的组织和抽象,而设备操作则是对文件操作的最终实现rLinux操作系统把设备纳入文件系统的范畴来管理每个设备都对应一个文件名,在内核中也就对应一个索引节点对文件操作的系统调用大都适用于设备文件从应用程序的角度看,设备文件逻辑上的空间是一个线性空间(起始地址为0,每读取一个字节加1)。从这个逻辑空间到具体设备物理空间(如磁盘的磁道、扇区)的映射则是由内核提供,并被划分为文件操作和设备驱动两个层次
❖ Linux操作系统把设备纳入文件系统的范畴来管理 ❖ 每个设备都对应一个文件名,在内核中也就对应一个索 引节点 ❖ 对文件操作的系统调用大都适用于设备文件 ❖ 从应用程序的角度看,设备文件逻辑上的空间是一个线 性空间(起始地址为0,每读取一个字节加1)。从这个 逻辑空间到具体设备物理空间(如磁盘的磁道、扇区) 的映射则是由内核提供,并被划分为文件操作和设备驱 动两个层次 < > 计算机中三个最基本的物质基础是CPU、内存和输入输出 (I/O)设备,文件操作是对设备操作的组织和抽象,而 设备操作则是对文件操作的最终实现 设备驱动概述
设备驱动概述对于一个具体的设备而言,文件操作和设备驱动是一个事物的不同层次。从这种观点出发,从概念上可以把一个系统划分为应用、文件系统和设备驱动三个层次r*Linux将设备分成两大类。一类是像磁盘那样以块或扇区为单位,成块进行输入/输出的设备,称为块设备;另一类像键盘那样以字符(字节)为单位,逐个字符进行输入/输出的设备,称为字符设备。心文件系统通常都建立在块设备上K>
❖ 对于一个具体的设备而言,文件操作和设 备驱动是一个事物的不同层次。从这种观点 出发,从概念上可以把一个系统划分为应用、 文件系统和设备驱动三个层次 ❖ Linux将设备分成两大类。一类是像磁盘那 样以块或扇区为单位,成块进行输入/输出 的设备,称为块设备;另一类像键盘那样以 字符(字节)为单位,逐个字符进行输入/ 输出的设备,称为字符设备。 ❖ 文件系统通常都建立在块设备上 设备驱动概述 < >
进程应用层File结构File结构File结构普通文件设备文件O008000文件系统层从普通文件的逻辑空间到设备逻辑空间的映射从设备逻辑空间从设备逻辑空间到设备到设备物理空间设备驱动层物理空间的映射的映射设备1设备2设备n
从普通文件的逻辑空间到 设备逻辑空间的映射 从设备逻辑空间到设备 物理空间的映射 从设备逻辑空间 到设备物理空间 的映射 设备1 设备2 设备n 进程 File结构 File结构 File结构 普通文件 文件系统层 设备文件 设备驱动层 应用层
设备驱动概述心为什么要把繁杂的设备归为“块设备”和“字符设备”两大类?代表着设备的索引节点中记载着与特定设备建立连接所需的信息:文件(包括设备)的类型、主r设备号和次设备号*要使一项设备可以被应用程序访问,首先要在系统中建立一个代表此设备的设备文件,这是通过系统调用mknode(实现的。此外,更重要的是在设备驱动层要有这种设备的驱动程序。心设备驱动层直接与物理设备打交道,在实际的实现中则因系统的结构和具体设备的物理特性不同而有不同的驱动方式<>
< > ❖ 为什么要把繁杂的设备归为“块设备”和“字符 设备”两大类? ❖ 代表着设备的索引节点中记载着与特定设备建立 连接所需的信息:文件(包括设备)的类型、主 设备号和次设备号 ❖ 要使一项设备可以被应用程序访问,首先要在系 统中建立一个代表此设备的设备文件,这是通过 系统调用mknode()实现的。此外,更重要的是在 设备驱动层要有这种设备的驱动程序。 ❖ 设备驱动层直接与物理设备打交道,在实际的实 现中则因系统的结构和具体设备的物理特性不同 而有不同的驱动方式 设备驱动概述