目录
5.1.1 I/O设备
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备/
1.设备的分类
按信息交的单位分类
1) 块设备。信息交换以数据块为单位。属于有结构设备。
举例:磁盘。
磁盘特点:传输速率较高,可寻址(可以对它随机地读/写任意一块)。
2)字符设备。信息交换以字符为单位。属于无结构设备。
举例:交互式终端机,打印机。
特点:传输速率低,不可寻址,时常采用中断I/O方式。
按传输速率分类(没有固定,不太常考)
1)低速设备。如键盘,鼠标。
2)中速设备。如激光打印机。
3)高速设备。磁盘机,光盘机。
2.I/O接口(设备控制器)
主要功能
接收和识别CPU发出来的命令;数据交换;标识和报告设备状态。
地址识别;数据缓冲;差错管理。
主要组成部分
1)设备控制器与CPU的接口。该接口有三类信号线:数据线,地址线,控制线。
数据线通常连接数据寄存器和控制/状态寄存器(存放CPU送来的控制信息或设备状态信
息)。
2)设备控制器与设备的接口。一个设备控制器可以连接一个或多个设备,因此控制器中有 一 个或多个设备接口。每个接口中有数据,控制,状态三种信号。
3)I/O逻辑。用于实现对设备的控制。CPU启动设备时,将启动命令发送给控制器,同时通 过地址线发送给控制器,由控制器的I/O逻辑对地址译码,并相应地对所选设备进行控制
3. I/O端口
设备控制器中能够被CPU直接访问的寄存器。主要有下列三类
1)数据寄存器。
2)状态寄存器。
3)控制寄存器。
为实现CPU和I/O端口进行通信,有下面两种方式。
1)独立编址。为每个端口分配一个端口号,所有I/O端口形成I/O端口空间,普通用户程 序不能对其访问,只有操作系统使用特殊的I/O指令才能访问端口。
2)统一编址。又称内存映射I/O,为每个端口分配一个唯一的内存地址,且不会有内存 被分配这一地址,通常分配给端口的地址靠近地址空间顶端。
5.1.2 I/O控制方式
1.程序直接控制方式
1)完成一次读/写操作的流程(如下图)。
2)CPU干预的频率
很频繁,I/O操作开始之前,完成之后需要CPU的介入,并且在等待I/O完成过程CPU 需 不断轮询检查。
3)数据传送的单位
每次读/写一个字。
4)数据的流向
读操作(数据输入):I/O设备->CPU寄存器->内存。
写操作(数据输出):内存->CPU->I/O设备。
每个字的读写都需要CPU的帮助。
5)主要优缺点
优点:实现简单。在读/写指令之后,加上循环检查的一系列指令即可。
(被称为程序直接控制方式的原因)。
缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于忙等状态CPU 利用率低。
2.中断驱动方式
1)完成一次读/写操作的流程(如下图)
注意:CPU会在每个指令周期的末尾检查中断。
中断过程中需要保存,恢复进程的运行环境。(需要一定时间开销)。
等I/O设备完成一次读/写操作后可以不执行之前因要完成该操作而被阻塞的 进程。
2)CPU干预的频率
I/O操作开始之前,完成之后需要CPU的介入,并且在等待I/O完成过程CPU可以切 换到别的进程执行。
3)数据传送的单位
每次读/写一个字。
4)数据的流向
读操作(数据输入):I/O设备->CPU寄存器->内存。
写操作(数据输出):内存->CPU->I/O设备。
5)主要优缺点
优点:
I/O控制器会通过中断信号主动报告I/O已经完成,CPU不需要不停的轮询。
CPU和I/O设备可并行工作,CPU利用率得到明显提升。
缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会 消耗较多的CPU时间。
3.DMA方式
直接存储器存取。
DMA控制器(如图)
1)完成一次读/写操作的流程(如下图)
2)CPU干预的频率
仅在传送一个或多个块的开始或结束时,才需要CPU干预。
3)数据传送的单位(不一样)
每次读/写一个块或多个块。(注意每次读写的只能是连续的多个块,且这些块读 入内存后在内存中也必须是连续的)。
4)数据的流向
读操作(数据输入):I/O设备->内存。
写操作(数据输出):内存->I/O设备。
5)主要优缺点
优点:
数据传输以块为单位,CPU介入频率进一步降低。数据的传输不再需要先经 过CPU再写入内存。CPU和I/O设备并行性得到提升。
缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的块。如果要读非连续 的,要发出多条指令。
4.通道控制方式
一个通道可以控制多个I/O控制器,一个I/O控制器又可以控制多个I/O设备。
通道:一种硬件,简易CPU,执行指令单一,通道程序放在内存中也就是通道与CPU共享内存。
1)完成一次读/写操作的流程(如下图)。
2)CPU干预的频率
极低,通道根据CPU指示执行相应的通道程序,只有完成一组数据块的读/写后需 要发出中断信号,请求CPU干预。
3)数据传送的单位
每次读/写一组数据块。
4)数据的流向(通道的控制下进行)
读操作(数据输入):I/O设备->内存。
写操作(数据输出):内存->I/O设备。
5)主要优缺点
缺点:实现复杂,需要专门的通道硬件支持。
优点:CPU,通道,I/O设备可以并行工作,资源利用率高。
5.1.3 I/O软件层次结构
考点如图
1)用户层软件
实现与用户交互的接口,将用户请求翻译成格式化的I/O请求,并通过“系统调用”请 求操作系统内核的服务。
2)设备独立软件
又称系统调用层,设备无关性软件。
实现功能:
向上层提供统一的调用接口。
设备的保护。
差错处理。
设备分配与回收。
数据缓冲区管理。
建立逻辑设备名到物理设备名的映射关系:根据设备类型选择调用相应的驱 动程序。通过逻辑设备表来映射(LUT)。
管理逻辑设备表
第一种:
整个系统只设置一张LUT,有意味着所有用户不能使用相同的逻辑 设备名,因此只适用用于单用户操作系统。
第二种:
为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复, 适用多用户操作系统。LUT放在PCB中。
3)设备驱动程序
驱动程序一般会以一个独立进程的方式存在。
负责对硬件设备的具体控制,讲上层发出的一系列命令转化成特定设备能听的懂的 一系列操作。包括设置设备寄存器,检查设备状态。
4)中断处理程序
当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到 相应的中断处理程序并执行。
5.1.4 应用程序接口
1)输入/输出应用程序接口
向用户层提供
1.字符设备接口:get/put系统调用:向字符设备读/写一个字符
2.块设备接口:read/write系统调用;向块设备的读写指针位置读/写多个字符,
seek系统调用:修改读写指针位置。
3.网络设备接口:socket系统调用:创建一个网络套接字,需指明网络协议。
bind:将套接字绑定到某个本地端口。
connect:将套接字连接到远程地址。
read/write:从套接字读/写数据。
概念:什么是阻塞/非阻塞I/O?
阻塞I/O:应用程序发出I/O系统调用,进程转为阻塞态等待。例如,键盘。
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。
如,块设备接口——磁盘。
2)设备驱动程序接口
驱动程序向设备独立性软件提供设备驱动程序接口。
操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备 驱动程序。