操作系统(IO管理)
操作系统(IO管理)
文章目录
一,IO概念
IO就是输入/输出(input / output)
IO设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机的硬件部件
日常生活中,最典型的IO设备就是如下几种:
- 键盘,字符输入设备(input)
- 显示器,输出设备(output)
- 移动硬盘,既可以输入又可以输出的设备
IO设备分类
-
按使用特性分类
- 人机交互类设备(数据传输速度慢)
- 存储设备(数据传输速度快)
- 网络通信设备(数据传输速度介于上述两者之间)
-
按照传输速率分类
- 低速设备(每秒几个到几百字节)
- 中速设备(每秒几千到上万个字节)
- 高速设备(每秒数千到千兆字节)
-
按信息交换的单位分类
- 块设备(传输快,可寻址)
- 字符设备(传输慢,不可寻址,常采用中断驱动方式)
二,IO控制
2.1IO控制器
CPU无法直接控制IO设备的机械部件,因此IO设备还要有一个电子部件作为CPU和IO设备机械部件之间的中介,用于实现CPU对设备的控制,该电子部件就是IO控制器,又称为设备控制器,CPU控制IO控制器,IO控制器来控制IO的机械设备
IO控制器的功能
- 接受和识别CPU发出的指令
- IO控制器中有相应的控制寄存器来存放cpu传来的相应的命令和参数
- 向cpu报告设备状态
- IO控制器中有相应的状态寄存器来记录当前IO设备的状态
- 数据交换
- IO控制器中有相应的数据寄存器
- 输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备
- 输入时,数据寄存器用于暂存设备发来的数据,之后cpu从数据寄存器中取走数据
- IO控制器中有相应的数据寄存器
- 地址识别
- 为了区分设备控制器中的各个寄存器,也要给各个寄存器设置一个特定的地址,IO控制器通过CPU提供的地址来判断cpu要读/写哪个寄存器
IO控制器的组成
上文中有说过要给寄存器编地址来区分设备控制器中的各个寄存器
编址方式:
-
内存映像IO(控制器中的寄存器和内存统一编制)
-
寄存器独立编址(控制器中寄存器独立编制)
2.2IO控制方式
2.2.1程序直接控制方式
完成一次读操作流程
- CPU向控制器发出读指令,设备启动,并且报告自身状态
- CPU轮询检查状态控制器中的寄存器,当状态寄存器中设备状态变为已经就绪时,就准备从设备中读入数据
- 设备在准备好数据后传给数据寄存器
- CPU从数据寄存器中读入数据到cpu寄存器
- CPU把CPU寄存器中的数据放入内存
- 判断是否还要继续读入数据,还需要读入则cpu继续发出读指令
cpu干预频率
CPU干预的频率很频繁,IO操作开始之前,完成之后都需要CPU介入,并且在等待IO完成的过程中CPU需要不断的轮询检查设备状态
数据传送单位
数据的传送单位是一个字
数据的流向
- 读操作(数据输入):IO设备 -》 CPU -》内存
- 写操作(数据输出):内存 -》CPU -》IO设备
每个字的读写都需要cpu的帮助
主要缺点和主要优点
- 优点:实现简单
- 缺点:cpu利用率低,cpu和IO设备只能串行工作
2.2.2中断驱动方式
完成一次读操作流程
引入中断机制,由于IO设备速度很慢,因此在CPU发出读写命令后,可将等待IO的进程阻塞,先切换到别的进程执行(CPU去做别的事情)当IO完成后,IO控制器给CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的上下文环境,切换去执行中断处理程序处理该中断,处理中断过程中,CPU从IO控制器读一个字到cpu的寄存器,然后在放入内存,接着,CPU恢复等待IO的进程的上下文,然后继续执行
其实就是相当于,CPU在发出了读命令给IO控制器后就阻塞当前等待IO的进程,让IO设备器自己完成IO,等到设备将数据放到IO控制器的数据寄存器后,IO控制器向CPU发出中断,让cpu来取数据放入内存
cpu干预频率
每次IO操作开始之前,完成之后都需要CPU介入
等待IO完成的过程中CPU可以切换到别的进程执行
数据传送单位
数据的传送单位是一个字
数据的流向
- 读操作(数据输入):IO设备 -》 CPU -》内存
- 写操作(数据输出):内存 -》CPU -》IO设备
主要缺点和主要优点
- 优点:与程序直接控制方式相比,在中断驱动方式中,IO控制器会通过中断信号主动报告IO完成,CPU不需要不停的轮询,cpu可以和IO设备并行工作,CPU利用率得到提升
- 缺点,频繁的中断处理会消耗比较多的CPU时间
2.2.3DMA方式
DMA(直接存储器存取)
- 数据传送单位时块,不再试一个字,一个字的传送
- 数据流向:设备直接到内存或内存直接到设备
- DR(数据寄存器):暂存从设备到内存,或从内存到设备的数据
- MAR(内存地址寄存器):在输入时,MAR表示数据应放到内存的什么位置,输出时,MAR表示要输出的数据放在内存的什么位置
- DC(数据计数器):表示剩余要读/写的字节数
- CR(命令/状态寄存器):用于存放CPU发出来的IO命令,或设备的状态信息
-
CPU指明此次要进行的操作,比如读操作,并说明要读入多少数据,数据要存放在内存的什么位置,数据在外部设备上的地址
-
控制器会根据CPU提出的要求完成数据的读写工作,整块数据的传输完成后,才向CPU发出中断信后
-
dma可以直接和内存交互
cpu干预频率
尽在传送一个或多个数据块的开始和结束时,才需要cpu干预
主要缺点和主要优点
- 优点:数据传输效率提高,cpu和IO设备的并行性提到提升
- 缺点:CPU每发出一条IO指令,只能读写一个或多个连续的数据块,如果要读写多个离散存储的数据块,或者要将数据分别写到不同的内存区域,CPU要发出多条IO指令。处理多次中断才能完成
2.2.4通道控制方式
通道,独立于CPU的专门负责输入输出控制的处理机,他控制设备与内存直接进行数据交换,有自己的通道指令,这些指令由CPU启动,并在操作结束时向CPU发送中断信号。
通道控制方式实现了CPU,通道和IO设备三者的并行操作,从而更加有效的提高整个系统的资源利用率,当CPU要完成一组读操作时,只需要向IO通道发出一条IO指令,指出其所要执行的通道程序的内存地址和要访问的IO设备,通道收到该指令后,通过执行通道程序便可以完成CPU指定的IO任务,可见 通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。
cpu干预频率
通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。
数据传送单位
块
三,IO核心子系统
IO核心子系统主要做的就是IO调度,设备保护,设备分配和回收,缓冲区管理(缓冲和高速缓存)
3.1缓冲区管理
如果是字符型设备,则每输出完一个字符就要想CPU发出一次中断信号
使用缓冲区之后,IO设备往缓冲区发送字符数据,等到缓冲区满了在发往CPU
缓冲区的作用:
- 缓和CPU和IO设备之间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU与IO设备之间的并行性
单缓冲
操作系统会在主存中为其分配一个缓冲区,当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出
双缓冲
操作系统会在主存中为其分配两个缓冲区
使用单/双缓冲在通信时的区别
两台机器之间通信时,可以配置缓冲区用于数据的发送和接收
任意时刻,设置单缓冲的两台机器只能实现数据的单向传输
如果设置两个缓冲区的话就可以实现数据的双向通信
循环缓冲区
很多大小相等的缓冲区链接成一个循环队列
缓冲池