1 I/O 设备访问方式和类型
2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is a major concern of operating-system designers. n I/O 设备技术出现两个相矛盾的趋势: l 硬件和软件接口日益增长的标准化。 l I/O 设备日益增长的多样性。 n 操作系统内核设计成使用设备驱动程序模块的结构。 n 设备驱动程序为 I/O 子系统提供了统一接口 。
3 I/O 硬件 n I/O 系统的组成: l PC BUS I/O 系统 l 主机 I/O 系统 n Common concepts l Port 端口 l Bus (daisy chain or shared direct access) 总线 l Controller (host adapter) 控制器 n I/O instructions control devices ( PC ) I/O 指令控制设备 n Devices have addresses, used by 设备的寻址方式 l Direct I/O instructions ( pc I/O Port address ) 直接 I/O 指令 l Memory-mapped I/O (pc graphic controller) 存储器映射 I/O
4 A Typical PC Bus Structure
5 Mainframe Systems 大型机(主机)系统 这类计算机以存储器为中心, CPU 和各种通道都与存储器相连 。 终端终端 打印 机 多路通道 多路通道 存 储器 CPU 选择通道 选择通道
6 个人计算机( PC )中的设备 I/O 端口地址
7 I/O 方式 n 轮询 n 中断 n DMA n 通道
8 轮询 Polling 主机与控制器之间的交互过程 主机不断地读取忙位,直到该位被清除 ( 这个过 程称为轮询,亦称忙等待 -busy waiting) 主机设置命令寄存器中的写位并向数据输出寄 存器中写入一个字节。 主机设置命令就绪位 当控制器注意到命令就绪位已被设置,则设置 忙位。 控制器读取命令寄存器,并看到写入命令。它 从数据输出寄存器中读取一个字节,并向设备 执行 I/O 操作。 控制器清除命令就绪位,清除状态寄存器的故 障位以表示设备 I/O 成功,清除忙位以表示完成 。
9 中断 Interrupts CPU 硬件有一条中断请求线( interrupt-request line, IRL ),由 I/O 设备触发 设备控制器通过中断请求线发送信号而引起中断, CPU 捕获 中断并派遣到中断处理程序,中断处理程序通过处理设备来 清除中断。 两种中断请求 非屏蔽中断:主要用来处理如不可恢复内存错误等事件 可屏蔽中断:由 CPU 在执行关键的不可中断的指令序列前加 以屏蔽 中断向量 中断优先级:能够使 CPU 延迟处理低优先级中断而不屏蔽 所有中断,这也可以让高优先级中断抢占低优先级中断处 理。 中断的用途 中断机制用于处理各种异常,如被零除,访问一个受保护的 或不存在的内存地址 系统调用的实现需要用到中断(软中断) 中断也可以用来管理内核的控制流
10 中断驱动的 I/O 循环
11 Interrupt vectors in Linux Vector rangeUse 0-19 Nonmaskable interrupts and exceptions Intel-reserved External interrupts (IRQs) 128 (0x80)Programmed exception for system calls External interrupts (IRQs) 239 Local APIC timer interrupt 240 Local APIC thermal interrupt (introduced in the Pentium 4 models) Reserved by Linux for future use Interprocessor interrupts 254 Local APIC error interrupt (generated when the local APIC detects an erroneous condition) 255 Local APIC spurious interrupt (generated if the CPU masks an interrupt while the hardware device raises it)
12 Intel Pentium Processor Event-Vector Table
13 An example of IRQ assignment to I/O devices IRQ INTHardware device 032Timer 133Keyboard 234PIC cascading 335Second serial port 436First serial port 638Floppy disk 840System clock 1042Network interface 1143USB port, sound card 1244PS/2 mouse 1345Mathematical coprocessor 1446EIDE disk controller's first chain 1547EIDE disk controller's second chain 中断向量
14 Direct Memory Access 直接内存存取 用来避免处理大量数据移动时按字节来向 控制器送入数据的问题 需要 DMA 控制器 绕过 CPU 直接在内存与 I/O 设备之间进行数 据传输
15 通过六步来完成 DMA 传输
16 应用程序 I/O 接口 Application I/O Interface n I/O 系统调用 -- 实现统一的 I/O 接口 n I/O 系统调用封装了设备通用类型行为。如块设 备 I/O 系统调用包括磁盘、磁带、光盘等一系列 块设备的 read 、 write 、 seek 。 n 具体的 I/O 差别被内核模块(称设备驱动程序) 所封装。 n 设备驱动程序的作用是为内核 I/O 子系统隐藏设 备控制器之间的差异
17 Fig A Kernel I/O Structure
18 设备类型 n Devices vary in many dimensions 设备在各方面差 异 l Character-stream or block 字符流或者块设备 l Sequential or random-access 顺序或随机访问设备 l Synchronous or a Synchronous 同步或异步 l Sharable or dedicated 共享或独占设备 l Speed of operation 操作速度(快速、中速、慢 速) l read-write, read only, or write only 读写、只读、只 写设备
19 Fig Characteristics of I/O Devices
20 块或字符设备 Block and Character Devices 块设备包括磁盘驱动器 read , write , seek 描述了块存储设备的基本特点,这 样应用程序就不必关注这些设备的低层差别。 RAW I/O 或文件系统访问 内存映射文件访问是建立在块设备驱动程序之上的。 内存映射接口不是提供 read 和 write 操作,而是提供通 过内存中的字节数组来访问磁盘存储。 字符设备包括键盘、鼠标、串行口 应用程序可以 get 或 put 字符。在此基础上,可以构造 库以提供具有缓冲和编辑功能的按行访问 。
21 Network Devices 网络设备 网络 I/O 的性能与访问特点与磁盘 I/O 相比有 很大差别,绝大多数操作系统所提供的网络 I/O 接口也不同于磁盘的 read-write-seek 接 口。许多 OS 所提供的是网络套接字接口。 套接字接口还提供了 select 函数,以管理一 组套接字。调用 select 可以得知哪个套接字 已有接收数据需要处理,哪个套接字已有空 间可以接收数据以便发送。
22 时钟与定时器 提供以下三个基本函数 获取当前时间 获取已经逝去的时间 设置定时器以在 T 时触发操作 X 测量逝去时间和触发器操作的硬件称为可编程 间隔定时器( programmable interval timer ) 可被设置为等待一定的时间,然后触发中断 也可设置成做一次或重复多次以产生定时中断
23 阻塞和非阻塞 I/O (方式) Blocking and Nonblocking I/O 阻塞 - 进程悬挂直到 I/O 完成为止 容易使用与理解 对某些需求难以满足 非阻塞 - I/O 调用立刻返回 用户接口,数据复制(缓冲 I/O) 通过多线程实现 立刻返回读或写的字节数 异步 - 进程与 I/O 同时运行 难以使用 当 I/O 完成时, I/O 系统发送信号通知进程 非阻塞与异步系统调用的差别是非阻塞 read 调用会马上返回 ,其所读取的数据可以等于或少于所要求的,或为零。异步 read 调用所要求的传输应完整地执行,其具体执行可以是将 来某个特定时间。
24 End