第六章 输入输出系统
1.I/O系统的层次结构和模型
| 类型 | 可实现功能 |
|---|---|
| 用户层I/O软件 | 产生I/O请求、格式化I/O、Spooling |
| 设备独立性软件 | 映射、保护、分块、缓冲、分配 |
| 设备驱动程序 | 设置设备寄存器;检查状态 |
| 中断处理程序 | |
| 硬件 | 执行I/O操作 |
2.I/O系统接口
块设备接口
是块设备管理程序与高层之间的接口
- 块设备。通常采用DMA方式
- 隐藏了磁盘的二维性
- 将抽象命令映射为低层操作
流设备接口
是流设备管理程序与高层之间的接口
- 字符设备。常用中断驱动方式
- get和put操作
- in-control指令
由于大多数流设备都属于独占设备,必须采取互斥共享方式实现共享
网络通信接口
3.I/O通道
通道类型
(1)字节多路通道
- 以字节为单位交叉工作
(2)数组选择通道
- 每次传输一批数据,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送
(3)数组多路通道
- 使与通道连接的设备可以并行工作
4.I/O控制方式
- 程序查询方式:(不能支持CPU和设备的并行工作,单片机等还用此方式)
- 程序中断方式:慢速设备常用
- 直接传送方式(DMA):磁盘等块设备常用
- 通道控制方式:大中小型机装备
I/O控制应尽量减少CPU对I/O过程的干预。程序控制方式对CPU浪费极大,在中断驱动I/O控制方式出现以后,控制方式不断发展,产生中断次数越来越少,通道控制方式下完成一组I/O控制(执行一个通道程序)只需要CPU向I/O通道发送一条I/O指令。
4.与设备无关的I/O软件
基本概念
1.以物理设备名使用设备
- 应用程序直接与物理设备相关是非常不灵活的,给用户带来了很大的不便,且对提高I/O设备的利用率也很不利。
2.引入了逻辑设备名
3.逻辑设备名称到物理设备名称的转换
- 需要配置一张逻辑设备表
与设备无关的软件
1.设备驱动程序的统一接口
2.缓冲管理
3.差错控制
4.对独立设备的分配与回收
5.独立于设备的逻辑数据块
4.设备独立性的概念
用户程序可独立与实际的输入输出设备即用户程序和具体的物理设备无关。设备独立性是设计I/O软件的一个最关键目标。
5.设备分配
设备管理的数据结构——SDT, DCT, COCT, CHCT
- SDT(系统设备表):整个系统会保留一张系统设备表SDT,它记录已被连接到系统中的所有物理设备的情况,并为每个物理设备设一个表项。
- DCT(设备控制表):反映设备的特性、设备和I/O控制器的连接情况,其中包括设备标识,使用状况和等待使用该设备的进程队列等。系统中每个设备都必须有一张DCT。
- COCT(控制器表):也是每个控制器有一张,它反映I/O控制器的使用状态以及和通道的连接情况等(在DMA方式时,该项是没有的)。
- CHCT(通道控制表):只在通道控制方式的系统中存在,也是每个通道一张。它包括通道标识符、通道忙/闲标识、等待获得该通道的进程等待队列的队首指针与队尾指针。
设备分配应考虑的要素
1.设备的固有属性
- 独占设备的分配策略
- 共享设备的分配策略
- 虚拟设备的分配策略
2.设备分配算法
- 先来先服务
- 优先级高者优先
3.设备分配中的安全性
- 安全分配方式
- 不安全分配方式
6.假脱机(Spooling)系统
假脱机技术
在联机情况下实现的同时外围操作的技术称为Spooling技术,或者称为假脱机技术。
预输入,缓输出
特点
- 提高了I/O的速度
- 将独占设备改为共享设备
- 实现了虚拟设备功能
7.缓冲技术
引入缓冲管理的目的
- 缓和CPU与I/O设备间速度不匹配的矛盾。
- 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
缓冲类型
- 单缓冲:提取和收容不能并行
- 双缓冲:提取和收容可并行,适合两者速度相接近的情况。
- 环形缓冲:(如生产者消费者问题)
- 缓冲池:三个队列,四类工作缓冲区。
缓冲池管理
缓冲区结构、缓冲池的组织——三个队列, 四种工作缓冲区及工作过程;
缓冲池由多个缓冲区组成,而一个缓冲区由两部分组成:一部分是用来标识和管理该缓冲器的缓冲首部,另一部分是用于存放数据的缓冲体。这两部分有一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作实现的。 缓冲首部包括设备号、设备上的数据块号(块设备时)、互斥标识位以及缓冲队列连接指针和缓冲器号等。
系统把各缓冲区按其使用状况连成三种队列:
- 空闲缓冲队列em,其队首指针为F(em),队尾指针为L(em);
- 装满输入数据胡输入缓冲队列in,其队首指针为F(in),队尾指针为L(in);
- 装满输出数据胡输出缓冲队列out,其队首指针为F(out),队尾指针为L(out);
系统(或用户进程)从这三种队列中申请和取出缓冲区,并用得到的缓冲区进行存数、取数操作,在存数、取数操作结束后,再将缓冲区放入相应的队列。这些缓冲区被称为工作缓冲区。在缓冲池中,有四种工作缓冲区:
- 用于收容设备输入数据的收容输入缓冲区hin;
- 用于提取设备输入数据的提取输入缓冲区sin;
- 用于收容CPU 输出数据的收容缓冲区hout;
- 用于提取CPU 输出数据的提取输出缓冲区sout;
对缓冲池的管理操作:
(1)take_buf ( fype )
(2) add_buf (type , number )
(3) get_buf (type , number )
(4) put_buf ( type , work_buf )
8.磁盘存储器的性能和调度
磁盘存储管理
磁盘读写的基本单位:盘块;磁盘是随机存取设备,磁带只能支持顺序读写
磁盘访问时间
- 寻道时间 m*n + s (最长)
- 旋转延迟时间 1/2r
- 传输时间 b/rN(最短)
- r为磁盘每秒钟的转数;N为一条磁道上的字节数;b为每次所读/写的字节数
- 访问时间=寻道时间+旋转延迟时间+传输时间
磁盘调度算法
(1)先来先服务FCFS
按顺序寻道

(2)最短寻道时间优先先SSTF
找最短

(3)扫描(SCAN)算法(电梯调度算法)
从里到外->从外到里(找最近的)

(4)循环扫描(CSCAN)算法
从里到外->从里到外(找最近的)

(5)NStepSCAN和FSCAN调度算法
本文详细阐述了操作系统中输入输出系统的层次结构和模型,包括I/O系统接口的块设备接口、流设备接口和网络通信接口。介绍了I/O通道的不同类型,并探讨了I/O控制方式,如程序查询、中断、直接传送和通道控制。此外,文章还讲解了与设备无关的I/O软件、设备独立性、设备分配策略和安全性,以及假脱机(Spooling)技术和缓冲技术在提高I/O效率方面的作用。最后,讨论了磁盘存储器的性能和调度算法,如FCFS、SSTF、SCAN和CSCAN等。
2万+

被折叠的 条评论
为什么被折叠?



