导图社区 计算机操作系统 第六章输入输出系统
计算机操作系统 第六章输入输出系统,如I/O系统管理的对象是I/O设备和相应的设备控制器。。
编辑于2023-06-08 15:31:20 北京市第六章:输入输出系统
I/O系统的功能,模型和接口
I/O系统管理的对象是I/O设备和相应的设备控制器。
I/O系统的基本功能
隐藏物理设备的细节
与设备的无关性
提高处理机和I/O设备的利用率
对I/O设备进行控制
确保对设备的正确共享
错误处理
I/O软件的层次结构
用户层I/O软件
设备独立性软件
设备驱动程序(厂家开发)
中断处理程序
硬件
I/O系统的分层
中断处理程序
设备驱动程序
设备独立性软件
I/O系统接口
块设备接口
指以数据块为单位来组织和传送数据信息的设备
典型的块设备是磁盘、光盘
块设备的基本特征
①传输速率较高,通常每秒钟为几兆位;
②它是可寻址的,即可随机地读/写任意一块;
③磁盘设备的I/O采用DMA方式。
流设备接口
又称字符设备指以单个字符为单位来传送数据信息的设备
这类设备一般用于数据的输入和输出,有交互式终端、打印机
字符设备的基本特征
①传输速率较低;
②不可寻址,即不能指定输入时的源地址或输出时的目标地址;
③字符设备的I/O常采用中断驱动方式。
网络通信接口
提供网络接入功能,使计算机能通过网络与其他计算机进行通信或上网浏览。
I/O设备和设备控制器
分类
使用特性分
存储设备
I/O设备
传输速率分
低速设备(几字节——几百字节)
典型的设备有键盘、鼠标、语音的输入
中速设备(数千——数万字节)
典型的设备有行式打印机、激光打印机
高速设备(数十万——千兆字节)
典型的设备有磁带机、磁盘机、光盘机
设备并不是直接与CPU进行通信,而是与设备控制器通信。在设备与设备控制器之间应该有一个接口。
数据信号:控制器 ← 设备 ← 控制器
传送数据信号,输入、输出bit
控制信号: 控制器 → 设备
执行读、写操作的信号
状态信号:设备当前使用状态
设备控制器
主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
基本功能
接收和识别命令
控制寄存器、命令译码器
数据交换
实现CPU与控制器,控制器与设备间的数据交换
标识和报告设备的状态
地址识别
配置地址译码器,识别不同的设备
数据缓冲区
差错控制
设备控制器的组成
设备控制器与处理机(CPU)的接口
实现CPU与设备控制器之间的通信
设备控制器与设备的接口
控制器可连接多个设备
I/O逻辑
实现对设备的控制
CPU利用该逻辑向控制器发送I/O命令
命令、地址译码
内存映像I/O
驱动程序将抽象I/O命令转换出的一系列具体的命令,参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的操作
I/O通道
目的:建立独立的I/O操作(组织, 管理和结束),使由CPU处理的I/O工作转由通道完成(解放CPU,实现并行)
什么是I/O通道?
是一种特殊的处理机,具有通过执行通道程序完成I/O操作的指令
特点:指令单一(局限于与I/O操作相关的指令),与CPU共享内存
基本过程:
CPU向通道发出I/O指令->通道接收指令->从内存取出通道程序处理I/O->向CPU发出中断
通道类型
字节多路通道
低中速连接子通道时间片轮转方式共享主通道
字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。
数组选择通道
这种通道可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序, 控制一台设备进行数据传送, 直至该设备传送完毕释放该通道。这种通道的利用率很低。
数组多路通道
含有多个非分配型子通道,前两种通道的组合,通道利用率较好
瓶颈问题
原因;通道不足
解决办法:增加设备到主机间的通路,而不增加通道(结果类似RS触发器)
中断机构和中断处理程序
中断
分类
中断(外部触发)
对外部I/O设备发出的中断信号的响应
陷入(内部原因:除0)
由CPU内部事件引起的中断
中断向量表(类比51单片机)
中断程序的入口地址表
中断优先级
对紧急程度不同的中断处理方式
对多中断源的处理方式
屏蔽中断
嵌套中断
中断处理程序
测定是否有未响应的中断信号
保护被中断进程的CPU环境
转入相应的设备处理程序
中断处理
恢复CPU 的现场并退出中断
设备驱动程序
是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称为设备驱动进程
主要任务是接受来自它上一层的与设备无关软件的抽象请求,并执行这个请求。
功能
1) 接收由I/O进程发来的命令和参数, 并将命令中的抽象要求转换为具体要求。例如,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。
2) 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
3) 发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
4) 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
5) 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。
设备驱动程序的处理过程
将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面、磁道及扇区。
检查I/O请求的合理性。
读出和检查设备的状态,确保设备处于就绪态。
传送必要的参数,如传送的字节数,数据在主存的首址等。
工作方式的设置。
启动I/O设备,并检查启动是否成功,如成功则将控制返回给I/O控制系统,在I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而CPU可干别的事。
对I/O设备的控制方式
I/O控制的宗旨
减少CPU对I/O控制的干预
充分利用CPU完成数据处理工作
I/O 控制方式
轮询的可编程I/O方式
中断驱动I/O方式
DMA控制方式
I/O通道控制方式
DMA控制器组成
主机与DMA控制器的接口
DMA控制器与块设备的接口
I/O控制逻辑
与设备无关的I/O软件
基本概念
含义: 应用程序独立于具体使用的物理设备。
驱动程序是一个与硬件(或设备)紧密相关的软件。为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件。
设备独立性(Device Independence)的优点
以物理设备名使用设备
引入了逻辑设备名
逻辑设备名称到物理设备名称的转换(易于实现I/O重定向)
与设备无关的软件
设备驱动程序的统一接口
缓存管理
差错控制
对独立设备的分配与回收
独立于设备的逻辑数据块
设备分配中的数据结构
设备控制表DCT
控制器控制表COCT
通道控制表CHCT
显然,在有通道的系统中,一个进程只有获得了通道,控制器和所需设备三者之后,才具备了进行I/O操作的物理条件
系统设备表SDT
逻辑设备表LUT
分配的流程,从资源多的到资源紧张的:LUT->SDT->DCT->COCT->CHCT
在申请设备的过程中,根据用户请求的I/O设备的逻辑名,查找逻辑设备和物理设备的映射表;以物理设备为索引,查找SDT,找到该设备所连接的DCT;继续查找与该设备连接的COCT和CHCT,就找到了一条通路。
用户层的I/O软件
系统调用与库函数
OS向用户提供的所有功能,用户进程都必须通过系统调用来获取
在C语言以及UNIX系统中,系统调用(如read)与各系统调用所使用的库函数(如read)之间几乎是一一对应的。而微软的叫Win32API
假脱机系统(spooling)
spooling技术是对脱机输入/输出系统的模拟
主要组成
输入/输出井
输入/输出缓冲区
输入/输出进程
井管理程序
特点(体现操作系统的虚拟性)
提高了I/O的速度
对数据所进行的I/O操作,已从对低速设备演变为对输入井或输出井中的数据存取。
将独占设备改造为共享设备
实际分给用户进程的不是打印设备,而是共享输出井中的存储区域
实现了虚拟设备功能
将独占设备变成多台独占的虚拟设备。
缓冲区管理
缓冲的引入(原因)
缓和CPU与I/O设备间速度不匹配的矛盾
减少对CPU的中断频率,放宽对CPU中断响应时间的限制
提高CPU和I/O设备之间的并行性
解决数据粒度不匹配的问题
单缓冲区
即在CPU计算的时候,将数据数据输入到缓冲区(大小取决与T和C的大小)
双缓冲区
即允许CPU连续工作(T不断)
环形缓冲区(专为生产者和消费者打造)
组成
多个缓冲区
多个指针
使用
Getbuf过程
Releasebuf过程
同步问题
缓冲池(理解为更大的缓冲区)
组成
空白缓冲队列(emq)
由空缓冲区链接而成F(emq),L(emq)分别指向该队列首尾缓冲区
输入队列(inq)
由装满输入数据的缓冲区链接而成F(inq),L(inq)分别指向该队列首尾缓冲区
输出队列(outq)
由装满输出数据的缓冲区链接而成F(outq), L(outq)分别指向该队列首尾缓冲
Getbuf和Putbuf过程
收容:缓冲池接收外界数据
提取:外界从缓冲池获得数据
缓冲区工作方式(从缓冲区的角度来看)
收容输入
提取输入
收容输出
提取输出
磁盘存储器的性能和调度
数据的组织和格式
磁盘的类型
固定头磁盘(贵)
移动头磁盘
磁盘访问的时间(关键)
寻道时间Ts=m*n+s
旋转延迟时间Tr
传输时间Tt=b/rN
总时间Ta=Ts+1/2r+b/rN
磁盘的调度算法(掌握图表)
先来先服务(FCFS)
优点:公平,简单
缺点:可能导致某些进程的请求长期得不到满足
最短寻道时间优先(SSTF)
说明:要求访问的磁道和当前磁头所在的磁道距离最近,以使每次的寻道时间最短
扫描算法(SCAN)
扫描算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁道当前的移动方向
联想电梯的运行
可防止低优先级进程出现“饥饿”的现象
循环扫描算法(CSCAN)
算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描
NStepScan算法
N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次这些子队列。
FSCAN算法
是Nstepscan算法的简化,将磁盘请求队列分成两个子队列