操作系统之I/O

264 阅读5分钟

I/O

image-20210603184019785.png

按设备的共享属性可将设备分为什么? 独占设备,进程互斥地访问这类设备,即系统一旦将该类设备分配给某进程,便由该进程独占,直到用完释放。

共享设备,指一段时间内允许多个进程同时访问的设备

I/O设备

I/O设备可以分为两种:块设备(block devices)和字符设备(character devices)。

块设备

image-20210604085037270.png

image-20210604085340903.png

字符设备

image-20210604085534288.png

image-20210604085559388.png

内存映射I/O

分开编址

image-20210604091046183.png

image-20210604091106503.png

统一编址

image-20210604091752863.png 混合方式

image-20210604092000252.png 优缺点(统一编址)

image-20210604093213835.png

中断

image-20210604102451483.png

image-20210604103641198.png 如何使用程序来控制I/O设备?一共有三种控制I/O设备的方法:

  • 使用程序控制I/O
  • 使用中断驱动I/O
  • 使用DMA驱动I/O

使用程序控制I/O

image-20210604104955987.png

使用中断驱动I/O

image-20210604105427363.png

image-20210604105734285.png

使用DMA的I/O

image-20210604110145492.png

image-20210604093733012.png

image-20210604100048830.png

image-20210604101213559.png

I/O层次结构

image-20210604110610222.png

中断处理程序

中断处理程序的处理过程

  1. 测定是否有未响应的中断信号
  2. 保护被中断进程的CPU环境
  3. 装入相应的设备处理程序
  4. 中断处理
  5. 恢复CPU的现场并退出中断

image-20210604111308635.png

image-20210604111344286.png

image-20210604111939427.png

设备驱动程序

设备控制器的组成--三部分组成

设备控制器的功能
  1. 接受和识别命令
  2. 数据交换
  3. 标识和报告设备的状态
  4. 地址识别
  5. 数据缓冲区
  6. 差错控制
设备控制器与处理机的接口

用于实现CPU和设备控制器之间的通信,该接口含有三类信号线:数据线,地址线和控制线

设备控制器与设备的接口

用于连接一个或者多个设备

I/O逻辑

用于实现对设备的控制

image-20210604114109336.png

与设备无关的I/O软件

image-20210604114624336.png

通道类型

字节多路通道(Byte Multiplexor Channel)

一种按照字节交叉工作的通道,不适用于连接高速设备,通常含有许多非分配型子通道,每个子通道连接一个I/O设备,这些子通道按照时间片轮转方式共享主通道。

数组选择通道(Block Selector Channel)

可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,直到程序释放通道。利用率很低,但是传输效率很高。

数组多路通道(Block Multiplexor Channel)

数组多路通道结合了数组选择通道和字节多路通道,能使得各个子通道(设备)分时并行操作,含有多个非分配子通道。

通道控制方式

image-20210205220824584.png

image-20210205220900793.png

SPOOLING、组成、特点

定义

在多道程序中,利用一道程序模拟脱机输入时的外围控制机功能,再利用另一道程序模拟脱机输出时外围控制机的功能,从而在主机的直接控制下,实现脱机输入输出。 在联机情况下实现的同时外围操作的技术,即为SPOOLing技术,假脱机技术。

组成

  1. 输入井和输出井
  2. 输入缓冲区和输出缓冲区
  3. 输入进程和输出进程
  4. 井管理程序

特点

  1. 提高了I/O的速度
  2. 将独占设备改造为共享设备
  3. 实现了虚拟设备功能

引入缓冲区的原因?

  1. 缓和CPU和I/O设备间速度不匹配的矛盾
  • cpu的运算速度远远高于I/O设备的速度
  1. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  • 随着传输速率的提高,需要配置位数更多的寄存器进行缓冲
  1. 解决数据粒度不匹配的问题
  • 缓冲区可以用于解决生产者和消费者之间交换的数据粒度(数据单元大小)不匹配的问题
  1. 提高CPU和I/O设备之间的并行性
  • 先放入缓冲,便可进行下一次操作,提高系统吞吐量和设备利用率

磁盘访问时间包括什么?

寻道时间(T_s)

指的是把磁头移动到指定磁道上花费的时间,该时间是启动磁头的时间(s)和磁头移动(n)条磁道所花费的时间之和,即为 (T_s=m*n+s) 其中m为一个常速,与磁盘驱动器的速度有关,一般磁盘,m为0.2;高速磁盘,m<=0.1

旋转延迟时间(T_τ)

指的是指定扇区移动到磁头下所花费的时间 比如硬盘为15000 r/min,则每转需要4ms,从而平均旋转延时(T_τ)为2ms

传输时间(T_t)

指的是把数据从磁盘读出或者向磁盘写入数据所花费的时间,其大小和每次读写的字节数b和旋转速度有关: (T_t=\frac{b}{r*N}) 其中r为磁盘每秒的转速,N为一条磁道上的字节数 当一次读写的字节数相当于半条磁道上的字节数时,(T_t)和(T_τ)相同,因此,可将访问时间(T_a)表示为: (T_a=T_s+\frac{1}{2r}+\frac{b}{rN})

磁盘调度算法

FCFS

根据进程请求访问磁盘的先后顺序进行调度

SSTF,最短寻道时间算法

选择这样的进程,其要求访问的磁道与当前磁头所在磁道距离最近,使得每次的寻道时间最短,但是不能保证平均寻道时间最短

SCAN算法--电梯调度算法

不仅考虑将要访问的磁道和当前磁道间的距离,更优先考虑的是磁头当前的移动方向。 比如,当磁头向外移动时,SCAN算法考虑的下一个磁道应该是当前移动方向上距离最近的,直到最后再反向移动

CSCAN算法

规定磁头单向移动,当磁头移动到最外磁道并访问后,磁头立即返回到最里面的欲访问磁道,即将最小磁道号和最大磁道号构成循环进行扫描