操作系统概念学习笔记 第十三章 I/O系统
计算机有两个主要任务:I/O操作与计算处理
概述:
I/O设备技术呈现两个相矛盾的趋势
1 硬件与软件接口的日益增长的标准化
2 I/O设备日益增长的多样性
为了隐藏不同设备的细节与特点,操作系统内核设计成使用设备驱动程序模块的结构。
设备驱动程序为I/O子系统提供了统一接口,正如系统调用为应用程序与操作系统之间提供了统一的标准接口。
I/O硬件:
设备与计算机通信有一个连接点(或端口),例如:串行端口。
如果一个或多个设备使用一组共同的线,那么这种连接则称为总线。
总线是一组线和一组严格定义的可以描述在线上传输信息的协议。
I/O端口通常有四种寄存器:状态、控制、数据输入、数据输出
1 状态寄存器包含一些主机可读取的位信息,这些位信息指示各种状态如当前任务是否完成,数据输入寄存器中是否有数据可以读取,是否出现设备故障等
2 控制寄存器可以被主机用来向设备发送命令或改变设备状态。例如,串口控制寄存器中的一位选择全工通信或单工通信,另一位控制是否奇偶校验检查。
3 数据输入寄存器被主机读取数据
4 数据输出寄存器被主机写入数据以发送数据
轮询:
当主机需要通过端口来写出数据时,主机与控制器之间握手协调如下:
1 主机不断地读取忙位,直到该位被清除
2 主机设置命令寄存器中的写位并向数据输出寄存器中写入一个字节
3 主机设置命令就绪位
4 当控制器注意到命令就绪位已被设置,则设置忙位
5 控制器读取命令寄存器,并看到写入命令,它从数据输出寄存器中读取一字节,并向设备执行I/O操作
6 控制器清除命令就绪位,清除状态寄存器的故障位以表示设备I/O成功,清除忙位以表示完成。
能使外设通知CPU的硬件机制称为中断。
中断:
CPU硬件有一条中断请求线(IRL),CPU在执行完每条指令后,都将判断IRL。
当CPU检测到已有控制器通过中断请求线发送了信号,CPU将保留少量状态如当前指令位置,并跳转到内存特定位置的中断处理程序
中断处理程序判断中断原因,进行必要的处理,执行从中断返回指令以便使CPU返回中断以前的执行状态。
现代操作系统需要更为复杂的中断处理特性:
第一:需要做关键处理时,能够延迟中断处理
第二:需要更为有效地将中断派遣到合适的中断处理程序,而不是检查所有设备以决定哪个设备引起中断
第三:需要多级中断,这样操作系统能区分高优先级或低优先级的中断,能根据紧迫性的程度来响应
现代硬件,这三个特性是由CPU与中断控制器硬件提供的。
绝大多数CPU有两个中断请求:
1 非屏蔽中断,主要用来处理如不可恢复内存错误等事件
2 可屏蔽中断,这可以由CPU在执行关键的不可中断的指令序列前加以屏蔽
中断过机制接收一个地址,以用来从一小集合内选择特定的中断处理程序。
对绝大多数体系机构,这个地址是一个称为中断向量的偏移量,该向量包含了特殊中断处理程序的内存地址。
中断在现代操作系统中用来处理异步事件和为内核的管理态程序设置陷阱。为了能使最紧迫工作先做,现代计算机都是用中断优先级
因为中断大量地用于时间敏感的处理,所以高性能系统需要高效中断处理。
直接内存访问:
许多计算机为了避免用PIO(编程I/O)而增加CPU的负担,将一部分任务下放给一个的专用处理器,这称为DMA控制器。
在开始DMA传输时,主机向内存中写入DMA命令块,该块包括传输的源地址指针、传输的目的地指针、传输的字节数。
CPU在将该命令块的地址写入到DMA控制器中后,就继续其他工作。
I/O应用接口
抽象出一些通用类型,每个通用类型都可以通过一组标准函数来访问。
一个特定设备可能带有多种设备驱动器:
1 字符流或块:字符流设备按一个字节一个字节地传输,而块设备以块为单位进行传输
2 顺序或随机访问:顺序设备按其故有的固定顺序来传输数据,而随机访问设备的用户可以让设备寻找到任一数据存储位置
3 同步或异步:同步设备按一定响应时间来进行数据传输,而异步设备呈现的是无规则或不可预测的响应时间。
4 共享或专用:共享设备可以被多个进程或线程并发使用,而专用设备则不能。
5 操作速度:设备速度从每秒几个字节到每秒数g字节
6 读写、只读、只写
块与字符设备:
块设备接口规定了访问磁盘驱动器和其他基于块设备所需的各个方面。
网络设备:
时钟与定时器:
许多计算机都有硬件时钟和定时器以提供如下三个基本函数:
1 获取当前时间
2 获取已经逝去的时间
3 设置定时器以在T时触发操作X
测量逝去时间和触发操作的硬件称为可编程间隔定时器。
对于许多计算机,由硬件时钟产生的中断约在每秒18次到60次。这种分辨率相对粗糙。
阻塞与非阻塞I/O
I/O内核子系统
内核提供了许多与I/O有关的服务,许多服务如调度、缓冲、高速缓冲、假脱机、设备预留及错误处理等。
I/O调度:
调度一组I/O请求就是确定一个好的顺序来执行这些请求。
缓冲:
缓冲区是用来保存在两设备之间或在设备和应用程序之间所传输数据的内存区域。采用缓冲有三个理由:
1 处理数据流的生产者与消费者之间的速度差异
2 协调传输数据大小不一致的设备。
3 应用程序I/O的拷贝语义
高速缓存:
高速缓存是可以保留数据拷贝的高速内存。
假脱机与设备预留:
内核数据结构:
内核需要保留I/O组件使用的状态信息,可以通过若干内核数据结构如文件打开表等来完成。
I/O子系统协调为应用程序和内核内部所提供的许多服务的集合。I/O子系统负责:
1 文件和目录的命名空间的管理
2 文件和目录的访问控制
3 操作控制
4 文件系统空间分配
5 设备分配
6 缓冲、高速缓存和假脱机
7 I/O调度
8 设备状态监控、错误处理、失败恢复
9 设备驱动程序的配置和初始化
把I/O操作转换成硬件操作
流:
性能:
I/O是影响系统性能的重要因素之一。
现代计算机每秒能处理数千个中断
改善I/O效率,可以采用一些原则:
1 减少关联切换的次数
2 减少设备和应用程序之间传递数据时在内存中的数据拷贝次数
3 通过使用大传输、智能控制器及轮流检测,来减少中断频率
4 通过采用DMA智能控制器和通道来为主CPU承担简单数据拷贝,以增加并发
5 将处理原语移入硬件,允许控制器内的操作与CPU和总线内的操作并发
6 平衡CPU、内存子系统、总线和I/O的性能,这是因为任何一处的过载都会引起其他部分空闲

浙公网安备 33010602011771号