目录
5.1 I/O 系统的功能、模型和接口
5.1.1 I/O 系统的基本功能
5.1.2 I/O 系统的层次结构和模型
5.1.3 I/O 系统接口
5.2 I/O 设备和设备控制器
5.2.1 I/O 设备
5.2.2 设备控制器
5.2.3 I/O 通道
5.2.4 总线系统
5.1 I/O 系统的功能、模型和接口
5.1.1 I/O 系统的基本功能
1、隐藏物理设备的细节
2、与设备的无关性
3、提高处理机和 I/O 设备的利用率(并行操作)
4、对 I/O 设备进行控制(四种控制方式)
- 程序 I/O 方式
- 中断方式
- 直接存储器访问方式
- 通道方式
5、确保对设备的正确共享(设备的共享属性)
6、错误处理
5.1.2 I/O 系统的层次结构和模型
总体设计目标是:高效性和通用性。
- I/O 设备与 CPU 的并发性
- 简单抽象、清晰统一的接口
1、I/O 软件的层次结构
1)用户层软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与 I/O 操作有关的库函数,对设备进行操作。
2)设备独立性软件:负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
3)设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动 I/O 设备工作的驱动程序。
4)中断处理程序:用于保存被中断进程的 CPU 环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后返回到被中断进程。
2、I/O 系统中各种模块之间的层次视图
5.1.3 I/O 系统接口
1、块设备接口
典型代表:磁盘
- 数据的存取和传输是以数据块为单位的设备。
- 基本特征是传输速率较高,通常每秒钟为几兆字节。
- 可寻址:能指定数据的输入源地址及输出的目标地址。
- 块设备的 I/O 采用 DMA 方式。
2、流设备接口(字符设备接口)
典型代表:键盘、打印机
- 数据的存取和传输是以字符为单位的设备。
- 基本特征是传输速率极低,通常每秒钟为几个字节至数千个字节。
- 不可寻址:不能指定数据的输入源地址及输出的目标地址。
- 流设备的 I/O 采用中断驱动方式。
3、网络通信接口
OS 必须提供相应的网络软件和网络通信接口,使计算机能通过网络与网络上的其它计算机进行通信或上网浏览。
///dev目录下存放的都是设备文件
int fd = open("/dev/something");
for (int i = 0; i < 10; i++) {
fprintf(fd, "Count %d\n", i);
}
close(fd);
1、操作系统为用户提供统一的接口,不论什么设备都是 open、read、write 和 close 。
2、不同的设备对应不同的设备文件,设备文件中存放了设备的属性。
5.2 I/O 设备和设备控制器
I/O 系统:是指用于实现数据输入输出及数据存储的系统。
5.2.1 I/O 设备
1、I/O 设备的类型
2、设备与控制器之间的接口
CPU -- 控制器 -- 设备
设备并不是直接与 CPU 进行通信的,而是与设备控制器进行通信。因此,在 I/O 设备中应含有与设备控制器之间的接口。
1)数据信号线:在设备与控制器之间传送数据信号。
2)状态信号线:传送指示设备当前状态的信号。如:正在读/写,或准备好新的数据传送。
3)控制信号线:由设备控制器向 I/O 发送控制信号时的通路。如:读,写控制等。
5.2.2 设备控制器
① 设备控制器的主要功能:控制一个或者多个 I/O 设备,以实现 I/O 设备和计算机之间的数据交换。它是 CPU 与 I/O 设备之间的接口。
- 微机、小型机中的控制器常做成印刷电路卡形式,即接口卡
② 设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;当它控制多个设备时,它含有多个设备地址,每一个设备地址对应一个设备。
③ 设备控制器可分为两类:
- 控制块设备的控制器
- 控制字符设备的控制器
设备存储器的功能:
① 接收和识别命令:控制器中具有相应的命令寄存器,用来存放接收的命令和参数,并对所接收的命令进行译码。
② 数据交换:实现 CPU --数据总线-- 控制器的数据寄存器 -- 设备 之间的数据交换。
③ 设备状态的了解和报告:控制器中具有相应的状态寄存器,用其中的每一位反映设备的某一状态。当 CPU 将该寄存器的内容读入后,便可了解该设备的状态。
④ 地址识别:设备控制器应能识别它所控制的设备地址以及自己各寄存器的地址。
⑤ 数据缓冲:解决主机和 I/O 设备在速率上的不匹配。
⑥ 差错控制:控制器将会对数据进行差错检测,若 I/O 设备传来的数据出错,则报告给CPU,CPU 将数据作废且 I/O 设备重新发送数据。
Q:为什么设备控制器不直接拦截掉数据呢?
5.2.3 I/O 通道
1、I/O 通道设备的引入
I/O 通道是一种特殊的处理机,专门负责输入/输出工作,具有执行 I/O 指令的能力。主要目的是为了建立独立的 I/O 操作,使有关对 I/O 操作的组织、管理及其结束处理也独立于 CPU 。
CPU 是处理机,I/O 通道是特殊的处理机。CPU 向 I/O 通道发送 I/O 命令,由 I/O 通道执行相应的通道(I/O)程序。仅当 I/O 通道执行完毕后,才向 CPU 发中断信号。
I/O 通道与一般处理机的区别:
- 指令类型单一,仅局限于与 I/O 操作有关命令。
- 没有独立的内存,I/O 通道与 CPU 共享内存。
2、通道类型
1)字节多路通道
一个主通道连接多个子通道,这些子通道以时间片轮转方式共享主通道。
每个子通道每次只传送一个字节,因此只能连接中低速设备。
只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率又不是太高,便不致丢失信息。
2)数组选择通道
- 以数组方式工作,高速传输数据。
- 可以连接多台高速设备。
- 每次只有一台设备进行数据传送,形成独占。
- 通道利用率较低。
由于形成独占,因此如果它不传输数据,其它设备也传不了。
3)数组多路通道
将数组选择通道传输速率高和字节多路通道分时并行操作的优点相结合而形成的一种新通道。
- 其数据传送是按数组方式。
- 有独占性。
- 采用分时并行传送多个非分配型子通道。
因而这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。
3、通道 “瓶颈” 问题
只要设备 1 到 4 中的任意一个设备开始使用了通道 1,那么其它设备就不能被启动了。比如在下图中,若想启动设备 2,则会因为控制器 1 和通道 1 被占用而无法启动。
解决方法:增加设备到主机间的通路而非增加通道。换言之,把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上。
5.2.4 总线系统
1、微机 I/O 系统
设备控制器:与 I/O 设备是一对多的关系,系统通过它与设备通信。
系统 -- 设备控制器 -- 设备
缺点:总线瓶颈,CPU 瓶颈。
2、主机 I/O 系统(四级结构)
计算机 -- I/O 通道 -- I/O 控制器 -- 设备
I/O 通道相当于对总线的扩展,即多总线方式,且通道有一定的智能性,能与 CPU 并行,解决其负担。
3、常见的总线
- ISA(8bit)
- EISA(16bit)
- LocalBUS
- VESA(32bit)
- PCI(64bit)