设备管理
34
若major=0,由系统自动分配一个主设备号给驱动程序 由系统自动分配一个主设备号给驱动程序 即为主设备号, 若major!=0,major即为主设备号,但主设备号不能与系统中其它主 , 即为主设备号 设备号冲突。 设备号冲突。 使用注册函数可以变更设备名或驱动程序
chrdevs[major].name = name; chrdevs[major].fops = fops; return 0;
7
设备管理
Linux的设备文件一般置于 的设备文件一般置于/dev目录下 目录下 的设备文件一般置于 设备文件名由两个部分组成,第一部分2~3个字符,表示设备的种 设备文件名由两个部分组成,第一部分 个字符, 个字符 类;第二部分通常是字母或数字,区分同种设备中的单个设备 第二部分通常是字母或数字,
35
设备注销: 设备注销: 当设备需要撤销时,可以使用注销函数从设备注册表中删除。 当设备需要撤销时,可以使用注销函数从设备注册表中删除。
int unregister_chrdev(unsigned int major, const char * name)
36
if (!chrdevs[major].fops || strcmp(chrdevs[major].name, name)) { return -EINVAL; } chrdevs[major].name = NULL; chrdevs[major].fops = NULL;
21
引例
fd = open("/dev/v4l/video0",O_WRONLY) read(fd,buf,number);
问题: 问题: /dev/v4l/video0 ??
read 从哪读? 从哪读?
22
设备管理
23
设备管理
设备驱动程序 控制设备的硬件完成指定的I/O操作, 控制设备的硬件完成指定的 操作,设备驱动程序直接和硬件设 操作 备打交道。 备打交道。 设备驱动程序包括对设备的各种操作,在操作系统的控制下, 设备驱动程序包括对设备的各种操作,在操作系统的控制下, cpu通过执行驱动程序来实现对设备底层硬件设备的处理和操作。 通过执行驱动程序来实现对设备底层硬件设备的处理和操作。 通过执行驱动程序来实现对设备底层硬件设备的处理和操作 Linux设备驱动程序的主要功能是: 设备驱动程序的主要功能是: 设备驱动程序的主要功能是 对设备进行初始化 启动、 启动、停止设备的运行 把设备上的数据传到内存
9
盘符 C:
名称 Hda1
D:
hda5
E:
hda6
F:
hda7
10
设备管理
设备文件 /dev/fd0
说明
软盘设备
/dev/console
控制台设备
/dev/ttys0
第一个串口设备
/dev/null
“黑洞”设备 黑洞”
11
设备管理 ls –l /dev
12
设备文件inode 设备文件
13
设备管理
5
设备管理
网络设备 通过网络与外部近程或远程计算机进行通信的设备。 通过网络与外部近程或远程计算机进行通信的设备。网卡
6
设备管理
设备文件 linux设备管理的特点 设备管理的特点 物理设备抽像化,把物理设备看成文件, 物理设备抽像化,把物理设备看成文件,采用文件系统的接口和 系统调用来管理和控制设备。 系统调用来管理和控制设备。 设备读:从设备向内存输入数据 设备读: 设备写: 设备写:数据从内存输出到设备 Linux设备就是一种特殊文件,称为设备文件 设备就是一种特殊文件, 设备就是一种特殊文件
Linux 操作系统
1
设备管理
Linux设备分类与识别 设备分类与识别 设备驱动程序与设备注册 Linux的I/O控制 的 控制 Linux设备 操作 设备I/O操作 设备
2
设备管理功能
设备管理: 管理 负责管理设备和控制I/O传输操作 管理, 设备管理:I/O管理,负责管理设备和控制 传输操作 功能: 功能: 1 设备分配与回收 2 设备控制 3 设备状态跟踪
33
if (major == 0) { write_lock(&chrdevs_lock); for (major = MAX_CHRDEV-1; major > 0; major--) { if (chrdevs[major].fops == NULL) { chrdevs[major].name = name; chrdevs[major].fops = fops; write_unlock(&chrdevs_lock); return major; } } write_unlock(&chrdevs_lock); return -EBUSY; }
15
/dev/fd0 /dev/fd0.18 /dev/fd0h /dev/fd0l /dev/rfd0 /dev/rfd0.18 /dev/rfd0h /dev/rfd0l 以上所有的逻辑设备全部对应于同一个物理设备(软盘驱动器 。 以上所有的逻辑设备全部对应于同一个物理设备 软盘驱动器)。此 软盘驱动器 系统中有一些逻辑设备只是一些虚拟设备, 外,系统中有一些逻辑设备只是一些虚拟设备,它们不对于任何 实际的物理设备,例如/dev/error和 /dev/null。 实际的物理设备,例如 和 。
8
IDE的设备是以 命名,第一个 设备是hda,第二个是hdb... 的设备是以hd命名 第一个ide设备是 ,第二个是 的设备是以 命名 第一个 设备是 SCSI接口设备是用 命名 接口设备是用sd命名 接口设备是用
Ex:例如 例如hda1代表 代表hda这个硬盘设备上的第一个分区。每个硬盘可以最多有四个主 这个硬盘设备上的第一个分区。 例如 代表 这个硬盘设备上的第一个分区 分区,因此1-4命名硬盘的主分区 逻辑分区是从5开始的 每多一个分区, 命名硬盘的主分区。 开始的, 分区,因此 命名硬盘的主分区。逻辑分区是从 开始的,每多一个分区,数字 就可以。 加1就可以。 就可以
17
设备控制块dcb 设备控制块 记录设备硬件特性、 记录设备硬件特性、链接和使用情况的数据结构 与PCB联系起来 联系起来
18
设备管理
Linux设备的识别 设备的识别 Linux内核对设备的识别是通过 内核对设备的识别是通过 设备类型+设备号 主 次设备号) 设备类型 设备号(主、次设备号 设备号 设备类型指字符设备还是块设备 设备号是系统内部识别设备的标识 使用同一个驱动程序的每种设备有一个唯一的主设备号 除主设备号外还使用次设备号来区分同种设备中的各个具体设备
24
设备管理
把数据从内存传送到设备 检测设备状态 驱动程序由内核统一管理, 驱动程序由内核统一管理,处于内核态
25
设备管理
file_operations结构 结构 文件操作函数指针的集合,在设备管理中, 文件操作函数指针的集合,在设备管理中,该结构体各个成员项 指向的操作函数就是设备驱动程序的各个操作例程。 指向的操作函数就是设备驱动程序的各个操作例程。 编制设备驱动程序的工作就是使用汇编或c语言编写控制设备完成 编制设备驱动程序的工作就是使用汇编或 语言编写控制设备完成 各种操作的例程, 各种操作的例程,然后把这些操作例程的入口地址赋予 file_operations结构体的有关成员项即可。 结构体的有关成员项即可。 结构体的有关成员项即可
3
设备管理
Linux设备的分类 设备的分类 字符设备 块设备 网络设备
4
设备管理
字符设备 以字符为单位输入输出数据的设备, 以字符为单位输入输出数据的设备,并且以字符为单位对设备中 的信息进行组织和处理。显示器、 的信息进行组织和处理。显示器、键盘等 块设备 以一定大小的数据块为单位输入输出数据, 以一定大小的数据块为单位输入输出数据,并且设备中的数据也 是以物理块为单位进行组织和管理的。硬盘、软盘、光盘等。 是以物理块为单位进行组织和管理的。硬盘、软盘、光盘等。
14
设备独立性
多道系统用户进程不能直接访问物理设备, 多道系统用户进程不能直接访问物理设备,为此系统提供了物理 设备的逻辑名。 设备的逻辑名。 逻辑设备名:面向用户的,用户在需要使用设备时, 逻辑设备名:面向用户的,用户在需要使用设备时,使用逻辑设 备名(设备类型)向系统提出使用资源的请求。 备名(设备类型)向系统提出使用资源的请求。 物理设备名: 物理设备名:物理设备是指以某种方式与计算机系统相连的实际 硬件。例如显示器、终端、磁带机等。。 硬件。例如显示器、终端、磁带机等。。
32
设备管理
设备注册函数 设备注册的过程实际上是构建结构体device_struct的过程:向设 的过程: 设备注册的过程实际上是构建结构体 的过程 备注册表写入设备名,以及file_operations结构。 结构。 备注册表写入设备名,以及 结构 设备注册是通过系统调用实现的
int register_chrdev(unsigned int major, const char * name, struct file_operations *fops)
16
设备独立性
例如系统拥有A、 两台卡片输入机 现有作业J2申请一台卡 两台卡片输入机, 例如系统拥有 、B两台卡片输入机,现有作业 申请一台卡 片输入机,如果它指定使用A,那么作业J1已经占用 或者设备A 已经占用A或者设备 片输入机,如果它指定使用 ,那么作业 已经占用 或者设备 坏了,虽然系统还有同类设备B是好的且未被占用 是好的且未被占用, 坏了,虽然系统还有同类设备 是好的且未被占用,但也不能接受 作业J2,显然这样做很不合理。 作业 ,显然这样做很不合理。 为了解决这一问题,通常用户不指定特定的设备, 为了解决这一问题,通常用户不指定特定的设备,而指定逻辑 设备,使得用户作业和物理设备独立开来, 设备,使得用户作业和物理设备独立开来,再通过其它途径建立 逻辑设备和物理设备之间的对应关系,我们称这种特性为“ 逻辑设备和物理设备之间的对应关系,我们称这种特性为“设备 独立性” 独立性”。设备管理的功能之一就是把逻辑设备名转换成物理设 备名