第九章输入输出子系统 输入/输出子系统(简称O子系统)的功能就是使进程 能够与外部设备进行通讯,设备驱动程序是输入输出子 系统中的核心模块,并且与设备类型一一对应。 每一种类型的设备都有特定的设备驱动程序;而每一种 设备驱动程序控制这种类型的所有设备。 1
第九章 输入/输出子系统 输入/输出子系统(简称I/O子系统)的功能就是使进程 能够与外部设备进行通讯,设备驱动程序是输入/输出子 系统中的核心模块,并且与设备类型一一对应。 每一种类型的设备都有特定的设备驱动程序;而每一种 设备驱动程序控制这种类型的所有设备。 1
9.1设备驱动程序接口 UNIX系统中把设备分为两大类: 块设备一 以块为单位进行数据的输入输出,如硬盘、软 盘、磁带、光盘等设备。 字符设备(原始设备,raw设备)一以字节为单位进行数 据的输入输出,如终端、打印机、绘图仪、调制解调器、网卡 等。 每个设备都有一个文件名(节点)相对应,用于标识该设备 的属性: 1 root system 14, 0 Mar 27 2009 cdo C上U-上w-上W- 1 root system 15, 0Max272009 clone 1 root system 4, 0Har27■ 2009 console C上-上-xwT 1 O▣t system 49, 0 Mar 28 2009 d1c8023 巴r-上订-上wT 1x00t system 48, 0Hax282009 dlcether CrW-上W-xwT 1 root system 47, 0Hax282009 dlcfddi Cr-上W-xwT 1 上0▣t system 46, 0 Mar 28 2009 dlcqllc C上W-上订-上T 1上oot system 45, 0Hax282009 dlcsdlc C上W-上-上T 1r00t system 44, 0Har282009 dlctoken C上订-上对-上 1 上oot system 15,34Har27 2009 echo 1 root system 6 0 Aug 28 10:05 error 1 root system 6, 1Har272009 errorctl 与上订一上可-工W一 1 root system 19, 0Har272009 fdo
9.1 设备驱动程序接口 UNIX系统中把设备分为两大类: 块设备 —— 以块为单位进行数据的输入输出,如硬盘、软 盘、磁带、光盘等设备。 字符设备(原始设备,raw设备)—— 以字节为单位进行数 据的输入输出,如终端、打印机、绘图仪、调制解调器、网卡 等。 每个设备都有一个文件名(i节点)相对应,用于标识该设备 的属性: 2
1、系统配置 系统配置就是告诉核心,当前系统中包含哪些设备,以及这些 设备的“地址”一建立设备文件、联接设备驱动程序,例如: mknod /dev/tty15 c 2 15 核心与驱动程序的接口是由块设备开关表和字符设备开关表 来描述的。 每一种设备类型在开关表中都有若干表项,这些表项在系统 调用时引导核心转向适当的驱动程序接口。 硬件与驱动程序的接口,是由与机器相关的控制寄存器或操 作设备的O指令以及中断向量组成:当一个设备发出中断时,系 统识别发出中断的设备,并调用适当的中断处理程序。 3
1、系统配置 系统配置就是告诉核心,当前系统中包含哪些设备,以及这些 设备的“地址” —— 建立设备文件、联接设备驱动程序,例如: mknod /dev/tty15 c 2 15 核心与驱动程序的接口是由块设备开关表和字符设备开关表 来描述的。 每一种设备类型在开关表中都有若干表项,这些表项在系统 调用时引导核心转向适当的驱动程序接口。 硬件与驱动程序的接口,是由与机器相关的控制寄存器或操 作设备的I/O指令以及中断向量组成:当一个设备发出中断时,系 统识别发出中断的设备,并调用适当的中断处理程序。 3
设备开关表示例 块设备开关表 表项 open close strategy 0 gdopen gdclose gdstrategy 1 gtopen gtclose gtstrategy 字符设备开关表 表项 open close read write ioctl 0 conopen conclose conread conwrite conioctl 1 dzbopen dzbclose dzbread dzbwrite dzbioctl 2 syopen nulldev syread sywrite syioctl 3 nulldev nulldev mmread mmwrite nodev 4 gdopen gdclose gdread gdwrite nodev 5 gtopen gtclose gtread gtwrite nodev 4
块 设 备 开 关 表 表项 open close strategy 0 gdopen gdclose gdstrategy 1 gtopen gtclose gtstrategy 字 符 设 备 开 关 表 表项 open close read write ioctl 0 conopen conclose conread conwrite conioctl 1 dzbopen dzbclose dzbread dzbwrite dzbioctl 2 syopen nulldev syread sywrite syioctl 3 nulldev nulldev mmread mmwrite nodev 4 gdopen gdclose gdread gdwrite nodev 5 gtopen gtclose gtread gtwrite nodev 设备开关表示例 4
驱动程序入口点 文件子系统 open close open close read write ioctl mount umount read write 高速缓冲调用 字符设备开关表 块设备开关表 open close read write ioctl open close strategy 驱动程序 驱动程序 入口点 驱动程序 设备中断处理程序 设备中断处理程序 中断向量 中断向量 设备中断 5
驱动程序入口点 5 文 件 子 系 统 高速缓冲调用 字 符 设 备 开 关 表 块 设 备 开 关 表 驱 动 程 序 设 备 中 断 处 理 程 序 驱 动 程 序 设 备 中 断 处 理 程 序 中 断 向 量 中 断 向 量 设 备 中 断 open close read write ioctl open close read write ioctl open close mount umount read write open close strategy 驱动程序 入口点