计算机操作系统(二十三):I/O设备
来源王道考研系列视频:计算机操作系统
https://www.bilibili.com/video/BV1YE411D7nH
概念和分类
就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机硬件部件。
输入型设备:鼠标、键盘
输出型设备:显示器
使用特性分类
人机交互型类外部设备
鼠标、键盘、打印机等(数据传输速度慢)
存储设备
移动硬盘、光盘(数据传输速度快)
网络通信设备
调至解调器(数据传输速度界中)
传输速率分类
低速设备
鼠标、键盘–传输速率为每秒几个至几百个字节
中速设备
激光打印机等 --传输速率为每秒数千至上万个字节
高速设备
磁盘等-- 传输速率为每秒数千字节至千兆个字节
信息交换的单位分类
块设备
磁盘等 – 数据传输的基本单位都是块。
传输速率高,可寻址。
字符设备
鼠标、键盘-- 数据传输的基本单位是字符。
传输速度比较慢,不可寻址,在输入输出时候采用中断驱动。
I-O控制器
机械部件:只要用来执行具体i/o操作。
i/o设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此还要有一个电子部件作为CPU和I/O设备机械部件之间的中介,用于实现CPU对设备的控制。
CPU可以控制I/O控制器,又由I/o控制器来控制设备的机械部件。
I/O控制器的功能
接受和识别CPU发出的命令
比如CPU发来的read/write命令,i/o控制器中都有相应的控制寄存器来存放命令和参数。
向CPU报告设备的状态
i/0控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌
数据交换
i/o控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备,输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
地址识别
类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的地址。i/o控制器通过CPU提供的地址类判断CPU要读/写的时那个寄存器。
I/o控制器的组成
CPU与控制器的接口
用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据。
I/O逻辑
负责接收和识别CPU的各种命令( 如地址译码),并负责对设备发出命令。
控制器和设备的接口
用于实现控制器和设备之间的通信。

-
一个控制器可能会对应多个设备
-
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/0专用地址,即寄存器独立编址。

I/O控制方式
需要只要的问题:
- 完成一次读写操作的流程
- CPU干预的频率
- 数据传送单位
- 数据的流向
- 主要缺点和主要优点
程序直接控制方式
Key word:轮询
-
完成一次读、写操作流程(以读操作为列子)
①CPU向控制器发出读命令。设备启动,并且状态机寄存器设置为1
②轮询检查控制器的状态(其实就是在不断地执行程序的循环,若状态位一直是1,说明设备还没有准备好输入的数据,于是CPU会不断地轮询)
③输入设备准备好数据后将数据传给控制器,并报告自身状态。
④控制器将输入的数据放到寄存器中,并将状态改为0(已就绪)
⑤CPU发现设备已经就绪,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存。
⑥若还要继续读入数据,则CPU继续发出读指令

-
CPU干预的频率很频繁,i/o操作开始之前、完成之后需要CPU介入,并且在等待i/o完成的过程中CPU需要不断地轮询。
-
数据传送的单位:每次读/写一个字
-
数据的流向
读操作(数据输入):i/o设备->CPU->内存
写操作(数据输出):内存->CPU->I/o设备
每个字的读写都需要cpu的帮助
-
主要缺点和优点
优点:实现简单。在读/写指令之后,在加上实现循环检查的一系列指令即可(因才称为程序直接控制方式)
缺点:cpu和i/o设备只能串行工作,cpu需要一直轮询检查,长期处于忙等状态,CPU利用率低。
中断驱动方式
- 按成一次读写操作流程。

-
CPU干预率,每次i/o操作开始时之前完成之后需要cpu介入,等待i/o完成的过程中cpu可以切换到别的进程执行
-
数据传送的单位:每次读/写一个字
-
读操作(数据输入):i/o设备->CPU->内存
写操作(数据输出):内存->CPU->I/o设备
-
主要缺点和主要优点
优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/0控制器会通过中断信号主动报告I/0已完成,CPU不再需要不停地轮询。
CPU和I/O设备可并行工作,CPU利用率得到明显提升。
缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。
DMA方式
- 数据的传送单位是块,不再是一个字、一个字的传送
- 数据的流向是从设备直接放入内存,或者从内存直接到设备。不需要CPU作为快递小哥。
- 仅在传送一个或者多个数据块的开始和结束时,才需要干预。



通道控制方式


I-O软件的层次结构
用户层软件
实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。
用户层软件将用户请求翻译成格式化的I/O请求,并通过系统调用请求操作系统内核的服务。
设备独立性软件
设备无关性软件。与设备的硬件特性无关的功能几乎都在着一层实现。
主要实现的功能
-
向上层提供统一的调用接口(如read/write)
-
主要实现设备的保护
-
差错处理
-
设备的分配与回收
-
数据缓冲区处理
可以通过缓冲技术屏蔽设备之间的数据交换大小和传送速度的差异
-
建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序
设备被当做一种特殊的文件
不同类型的I/O设备需要有不同的驱动程序处理

设备驱动程序:
主要负责对硬件的具体控制,将上层发出的一系列指令转化成特定设备能听懂的一系列操作。包括设备寄存器;检查设备状态等。
中断处理程序

I-O核心子系统
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
称为操作系统的内核部分,也就是I/O核心子系统
I/O调度
用某种算法确定好的顺序来处理I/O请求
设备保护

假脱机技术
脱机技术:用磁带完成

引入脱机技术后,缓解了CPU与慢速设备之间的矛盾。另一放方面,即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。
**假脱机技术:**又称为Spooling技术
是用软件的方式模拟脱机技术。
Spooling系统的组成如下:

两个存储区:
- 输入井:模拟脱机输入时的磁带,用于收容I/o设备的输入数据。
- 输出井:模拟脱机输出时的磁带,用于收容进程的输出数据
两个外围控制机:
- 输入进程:模拟脱机技术输入时的外围控制机
- 输出进程:模拟脱机技术输出时的外围控制机
两个缓冲区:
- 输入缓冲区:在输入进程的控制下。输入缓冲区用于暂存从设备输入的数据,之后再转存到输入井中
- 输出缓冲区: 在输出进程的控制下。输出缓冲区用于暂存从输出井的数据,之后再传送到到输出设备上

设备的分配和回收
分配考虑因素
-
设备固有属性
-
独占设备
-
共享设备
-
虚拟设备

-
-
设备分配算法
-
设备分配中的安全性
安全分配:为每个进程分配一个设备后就将进程阻塞,本次I/O完成的能够才能将进程唤醒。
一个时间段内每一个进程只能使用一个设备
优点:破坏了请求条件,不会死锁
缺点:对于一个进程来说,CPU和I/o设备只能串行工作。
不安全分配:进程发出I/O请求后,系统为其分配I/O设备,进程可以仅需执行,之后还可以发出新的I/O请求,只有某个请求得不到满足时才能将进程阻塞。
分配方式
-
静态分配
进程运行前为其分配所需的全部资源,运行结束后归还资源。
-
动态分配
进程运行过程中动态申请设备资源
设备分配管理中的数据结构
- 设备控制表

- 通道控制表

- 系统设备表

分配步骤
- 根据物理设备名查找SDT
- 根据SDT找到DCT,若设备忙碌则将进程PCB挂到等待队列中,不忙碌则将设备分配给进程
- 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
- 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到等待队列中,不忙碌则将通道分配给进程。

缓冲区管理
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,- -般仅用在对速度要求非常高的场合( 如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)。
一般情况下,更多利用的时内存为缓冲区
缓冲区作用?

单缓冲

平均处理一块时间为T+M

平均处理一块时间为C+M
双缓冲


采用双缓冲,处理一个数据的平均耗时为Max(T,C+M)
使用单/双缓冲区在通信时的区别

循环缓冲区

缓冲池

本文详细介绍了计算机操作系统的I/O设备,包括设备的分类、I/O控制器的功能、各种I/O控制方式以及I/O软件的层次结构。重点讨论了中断驱动方式、DMA方式和通道控制方式,强调了提高CPU利用率和设备管理的重要性。此外,还探讨了设备的分配与回收、缓冲区管理和假脱机技术的应用。
2107

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



