本章节目录
I/O设备即输入/输出设备,是用于计算机系统与人通信或与其他机器通信的所有设备,以及所有外存设备。
1. I/O系统的组成
I/O系统不仅包括各种I/O设备,还包括与设备相连的设备控制器,有些系统还配备了专门用于输入/输出控制的专用计算机,即通道。此外,I/O系统要通过总线与CPU、内存相连。
1.1 I/O系统的结构
分为两大类:微机I/O系统、主机I/O系统
1.1.1 微机I/O系统
CPU与内存之间可以直接进行信息交换,但是不能与设备直接进行信息交换,必须经过设备控制器
1.1.2 主机I/O系统
主机I/O系统采用四级结构,包括主机、通道、控制器和设备
一个通道可以控制多个设备控制器
一个设备控制器也可以控制多个设备
1.2 I/O设备的分类
1.2.1 按传输速率分类
1. 低速设备,鼠标、键盘等
2. 中速设备,打印机系列
3. 高速设备,光盘系列
1.2.2 按信息交换单位分类
1. 块设备,磁盘,数据的存取以数据块为单位
2. 字符设备,打印机,传送字节流,不使用块结构
1.2.3 按设备的共享属性分类
1. 独占设备,例如打印机,必须作为临界资源以互斥方式访问
2. 共享设备,例如磁盘,允许多个进程共同访问的设备
3. 虚拟设备,通过虚拟技术把一台物理设备变成若干逻辑设备
1.3 设备控制器
1.3.1 设备控制器的定义
1. 设备控制器是CPU与I/O设备之间的接口,接收I/O的命令并控制设备完成I/O工作
2. 设备控制器是一个可编址设备,连接多个设备时可有多个设备地址
1.3.2 设备控制器的组成
1. 设备控制器与处理机的接口: 数据线、控制线、地址线
2. 设备控制器与设备的接口: 接口中3类信号为数据、状态、控制信号
3. I/O逻辑:主要由指令译码器和地址译码器两部分功能部件构成 将CPU的命令和地址分别译码,控制指定设备进行I/O操作
1.3.3 设备控制器的功能
1. 接收和识别命令
2. 数据交换:通过数据寄存器进行数据交换
3. 设备状态的了解和报告
4. 地址识别
5. 数据缓冲
6. 差错控制
1.4 I/O通道
一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作
引入通道能够使CPU从控制I/O操作的任务中解脱,使CPU与I/O并行工作, 提高CPU利用率和系统吞吐量
2. I/O控制方式
分为四种:轮询控制方式、中断控制方式、DMA控制方式、通道控制方式
2.1 轮询控制方式
2.1.1 轮询控制方式原理
主机试图发送I/O控制命令之前,先通过反复检测设备控制器状态寄存器的忙/闲标志位
若设备“忙”,主机继续检测该标志位
直到该位为“空闲”,主机发送I/O指令
缺点:使CPU经常处于循环测试状态,造成CPU的极大浪费,影响整个进程的吞吐量
2.2 中断控制方式
现在计算机系统广泛采用中断控制方式完成对I/O控制。
2.2.1 中断控制方式原理
1. CPU执行过程中,发出输入/输出请求,若此时I/O设备忙,则进程阻塞等待。
2. 当处于“忙”状态的设备工作完毕,通过中断控制器发出中断请求信号,CPU响应中断,执行对应该设备的中断处理程序,然后唤醒因等待该设备而被阻塞的进程。
3. CPU继续执行这个进程时,向设备控制器发送I/O指令,然后CPU被调度程序分配给某个进程,继续执行某个进程。
4. 本次I/O结束后,设备控制器通过向CPU发送中断请求信号告知CPU本次数据传输结束
优点:使CPU和I/O设备在某些时间段上并行工作,提高CPU的利用率和系统的吞吐量
2.3 DMA控制方式
2.3.1 DMA控制器结构
DMA控制器的逻辑组成包括3部分:
DMA与主机的接口、DMA与设备的接口,以及I/O控制逻辑
2.3.2 DMA控制器中的寄存器
命令/状态寄存器CR:用于接收从CPU发来的I/O命令或有关控制信息、设备状态
内存地址寄存器MAR:在输出数据时,存放输出数据在内存的起始地址,指示DMA应该从内存的什么地方读取输出数据;在输入数据时,存放输入数据将要被放入内存的起始地址,指示DMA应该把输入数据放在内存的什么地方
数据寄存器DR:用于暂存DMA传输中要输入或输出的数据
数据计数器DC:指示DMA,本次向CPU发中断信号前要读或写数据的次数
2.3.3 DMA工作原理
1. 当CPU要从磁盘读入一个数据块时,就向磁盘控制器发送一条读命令。
2. 该命令被送到DMA的命令寄存器CR中,同时CPU将本次读入数据将要放在内存中的起始地址送DMA的MAR寄存器,将本次要读的字节数送入DC寄存器。
3. 然后启动DMA控制器进行数据传输,在DMA控制输入过程中,CPU可以执行其他的进程,当本次读入的数据全部传输完毕后,DMA向CPU发送中断请求。
3. 缓冲管理
3.1 缓冲区的定义
缓冲区是用来保存两个设备之间或设备与应用程序之间传输数据的内存区域
3.2 缓冲区存在的意义
由于CPU的速度远远高于I/O设备,为了尽可能使CPU与设备并行工作,提高系统的性能,通常需要操作系统在设备管理软件中提供缓冲区管理功能。
3.3 缓冲的引入
在数据到达速率与数据离去速率不同的地方,都可以引入缓冲区。
引入缓冲的主要原因:
1. 处理数据流的生产者与消费者之间的速度差异
2. 协调传输数据大小不一致的设备
引入缓冲的主要作用:
引入缓冲区除了可以缓和CPU与I/O设备之间速度不匹配的矛盾,还能提高CPU和I/O设备之间的并行性。
3.4 单缓冲
最简单的缓冲类型,在主存储器的系统区中只设立一个缓冲区。
用户进程发出I/O请求时,操作系统为该操作分配一个位于主存的缓冲区。
3.5 双缓冲
当一个进程往这一个缓冲区中传送数据(或从这个缓冲区读取数据)时,操作系统正在清空(或填充)另一个缓冲区,这种技术称为双缓冲(Double Buffering),或缓冲交换(Buffering Swapping)
3.6 循环缓冲
在数据到达和数据离去的速度差别很大的情况下,需要增加缓冲区的数量。
看上图,R代表空缓冲区,G代表已装满数据的缓冲区,C代表现行工作缓冲区
Nextg:用于指示消费者进程下一个可用的装有数据的缓冲区
Nexti:用于指示生产者进程下一个可用的空缓冲区
Current:用于指示进程正在使用的工作缓冲区
3.6.1 循环缓冲过程
Getbuf过程:
1. 消费者进程要使用缓冲区中数据时调用
2.生产者进程要使用空缓冲区装数据时调用
Releasebuf过程:进程使用完缓冲区后,调用Releasebuf过程释放缓冲区
3.6.2 缓冲池
公共缓冲池中设置多个可供若干进程共享的缓冲区,提高缓冲区的利用率
缓冲池的组成:
缓冲区:空缓冲区、装满输入数据的缓冲区、装满输出数据的缓冲区
缓冲队列:空缓冲度列、输入队列、输出队列
工作缓冲区:收容输入数据的缓冲区、提取输入数据的缓冲区、收容输出数据的缓冲区、提取输出数据的缓冲区
4. 设备分配
4.1 设备分配中的数据结构
支持设备分配的数据结构需要记录设备的状态(忙或空闲)、设备类型等基本信息
4.1.1 设备控制表DCT
英文全称为Device Control Table。
系统为每个设备建立一张设备控制表,多台设备控制表构成设备控制表集合。 每张设备控制表包含设备类型、设备标识符、设备状态(忙/闲)等信息。
4.1.2 控制器控制表COCT
英文全称为Controller Control Table
系统为每个控制器设置一张用于记录该控制器信息的控制器控制表,通常包含控制器标识符、控制器状态等信息。
4.1.3 通道控制表CHCT
英文全称为Channel Control Table
系统为每个通道设备设一张通道控制表,通常包含通道标识符、通道状态等信息。
4.1.4 系统设备表SDT
英文全称为System Device Table
记录了系统中全部设备的情况,每个设备占一个表目,其中包括设备类型、设备标识符、设备控制表及设备驱动程序的入口地址。
4.2 设备分配
设备分配应考虑以下3个因素:
1.设备的固有属性:独占性、共享性、可虚拟性
2. 设备分配算法
3. 设备分配方式
设备的三个固有属性:
1. 独占性:独享分配策略
2. 共享性:可同时分配给多个进程使用
3. 可虚拟性:可同时分配给多个进程使用
设备的分配算法:
1. 先来先服务:根据进程对某设备提出请求的先后顺序分配
2. 基于优先权的分配算法:对高优先权进程所提出的I/O请求也赋予高优先权
设备的分配方式:
1. 安全分配方式:发出I/O请求后进入阻塞状态,摒弃“请求和保持”条件,是设备分配是安全的
2. 不安全分配方式:仅当请求的设备被占用,进程才进入阻塞状态,可能具备“请求和保持”条件,从而可能造成死锁
4.3 设备独立性
设备独立性意思就是说,应用程序独立于具体使用的物理设备
应用程序中,使用逻辑设备名称来请求使用某类设备
系统在实际执行时,必须使用物理设备名称
4.3.1 实现设备独立性的好处
1. 应用程序与物理设备无关:系统增减或变更外围设备时不需要修改应用程序
2. 易于处理输入/输出设备的故障:替换设备不需要修改应用程序
3. 提高了系统的可靠性,增加了设备分配的灵活性
4.3.2 设备独立软件的功能
执行所有设备的公有操作:包括独占设备的分配与回收、将逻辑设备名转换为物理设备名、对设备进行保护等。
向用户层软件提供统一的接口:向应用软件和最终用户提供简单、统一的访问接口
4.4 SPOOLing技术
4.4.1 SPOOLing技术的定义
英文全称 Simultaneous Peripheral Operations On-Line
在多道程序环境下,利用一道程序来模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速输出磁盘上,再利用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这种在联机情况下实现的同时外围操作称为SPOOLing。
4.4.2 SPOOLing的组成
1. 输入井和输出井
2. 输入缓冲区和输出缓冲区
3. 输入进程SPi和输出进程SPo
4. 请求I/O队列
4.4.3 应用SPOOLing技术的优点
1. 提高了I/O速度
2. 将独占设备改造为共享设备
3. 实现了虚拟设备功能
5. I/O软件原理
输入输出软件的总体目标是将软件组织成一种层次结构
低层软件用来屏蔽硬件的具体细节
高层软件则主要是为用户提供一个简洁、规范的界面
5.1 设备管理的4个层次
用户层软件:向系统发出I/O请求,显示I/O操作的结果,提供用户与设备的接口
与设备无关的软件层:完成设备命名、设备分配、设备独立性和缓冲管理等功能
设备驱动程序:与硬件关系最密切
中断处理程序(底层)
5.2 设备管理软件的功能
1. 实现I/O设备的独立性
2. 错误处理
3. 异步传输
4. 缓冲管理
5. 设备的分配和释放
6. 实现I/O控制方式
5.3 中断处理程序的作用
I/O中断处理程序的作用是将发出I/O请求而被阻塞的进程唤醒。
5.4 设备驱动程序
设备驱动程序是I/O进程与设备控制器之间的通信程序,其主要任务是接受上层软件发来的抽象的I/O请求,如read和write命令,把它们转换为具体要求后,发送给设备控制器启动设备去执行。
5.5 与硬件无关的I/O软件功能
1. 设备命名
2. 设备保护
3. 提供独立于设备的块大小
4. 为块设备和字符设备提供必要的缓冲技术
5. 块设备的存储分配
6. 分配和释放独立设备
7. 错误处理
6. 磁盘管理
磁盘存储器不仅容量大,存取速度快,而且可以实现随机存取,是存放大量程序和数据的理想设备。
磁盘管理的重要目标是提高磁盘空间利用率和磁盘访问速度。
6.1 磁盘结构
一个物理记录存储在一个扇区上,磁盘存储的物理记录数目是由扇区数、磁道数及磁盘面数决定的。
磁盘类型:
1. 固定头磁盘:在每条磁道上都有读写磁头
2. 活动头磁盘(移动头):每个盘面上仅配有一个磁头
磁盘的访问时间:
1. 寻道时间:磁头移动到指定磁道所经历的时间
2. 旋转延迟时间:指定山区移动到磁头下面所经历的时间
3. 传输时间:把数据从磁盘读出或向磁盘写入数据时所经历的时间
6.2 磁盘调度
磁盘调度的一个重要目标是使磁盘的平均寻道时间最少
磁盘调度遵循的规则:
1. 先来先服务原则FCFS,First Come First Served
2. 最短寻道时间有限SSTF,Shortest Seek Time First
3. 扫描算法SCAN
4. 循环扫描算法CSCAN
5. NStepSCAN和FSCAN调度算法
6.3 提高磁盘I/O速度的方法
1. 提前读,减少度数据的时间
2. 延迟写,减少写磁盘的次数
3. 优化物理块的分布,减少磁臂移动的距离
4. 虚拟盘,存放临时文件
5. 磁盘高速缓存,逻辑上属于磁盘,物理上在内存中