操作系统(五)——I/O管理

2020-04-09  本文已影响0人  花卷呀花卷
image.png

I/O管理主要通过对设备状态跟踪对设备存取数据、设备分配、及设备控制进行管理。

(一)I/O管理概述

1. I/O设备分类

印象中的I/O设备可能有,键鼠、打印机,但它们只是I/O设备中的一部分,在计算机中的磁盘、光盘以及用于网络连接的各类接口同样也是属于I/O设备。


image.png

2. I/O控制方式

外部设备输入输出的数据都需要存放在内存上,再传递给用户,而这个过程需要CPU的参与,根据CPU参与程度不同,可以分为4种控制方式:程序直接控制方式中断驱动方式DMA方式通道方式

image.png

工作流程:


image.png

3. I/O层次结构

数据从用户到设备并不是一步完成,中间需要通过几层结构,这样不仅可以保持用户应用独立性,也有方便屏蔽一些系统内部细节。


image.png

设备控制器的工作流程:

  1. 用户读取某设备内容 -> 使用操作系统提供的read命令接口 -> 解析read命令 (应用软件和设备独立软件)
  2. 根据设备不同,将read命令解析成不同的指令 (设备驱动)
  3. 命令解析完毕 -> 发出中断 -> 设备控制器执行read命令 (中断处理程序)
  4. 硬件设备上的控制器根据上层命令操作硬件设备

(二)I/O核心子系统

由于常用设备繁多,需要为不同设备提供不同的控制方法,这往往会增加I/O管理的工作量,因此将一些公用操作或常用操作组成一个子系统,这些操作有I/O调度缓冲与高速缓存设备分配与回收假脱机及设备保护差错控制等。

1. I/O调度

当有多个设备需要对计算机进行读写数据时,需要为这些设备提供请求队列实现调度,设备不同,使用的调度实现的方式略有不同,常见的调度算法是的磁盘调度算法。

image.png

2. 缓冲区

I/O读写速度远慢于CPU处理速度,为了解决速度不匹配的问题,采用缓存方法。
常见的缓存是磁盘高速缓存,是磁盘与内存之间的缓存区域,它位于内存,要么从内存开辟一块单独的固定区域作为缓冲,要么是把没有利用到的内存作为一个缓冲池。
设备缓存区的缓冲区也位于内存区域,它的特点是:当缓存区的数据非空时,不能往缓冲区内冲入数据,只能从缓冲区内把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但只能在缓存区充满后,才能从缓冲区把数据传出。

根据缓冲区个数不同可以分为:单缓冲双缓冲循环缓冲缓冲池

2.1 单缓冲

单缓冲的缓冲区域位于设备与处理机之间,当设备与处理机交换数据时,先把被交换的数据写入缓冲区,然后需要数据的设备或者处理机再从缓冲区内取数据,先输入再输出。


image.png

输入时间(T),处理数据时间(C),传送数据时间(M)

  1. 当T>C时,单缓冲区处理每块数据的时间为M+T;
  2. 当T<C时,单缓冲区处理每块数据的时间为M+C;

2.2 双缓冲

单缓冲方式存在等待方,为了提供读取数据效率,采用双缓冲,两个缓冲区域可以并行工作,当其中一个被处理机读取数据时,另一个由设备向缓冲区输入数据。

image.png

输入时间(T),处理数据时间(C),传送数据时间(M)
缓冲区处理一块数据的用时为:max(C+M, T)

2.3 循环缓冲

循环缓冲是将缓存区域划分为大小相当的多个缓冲区域块,每个缓冲区域块都有指向下一个缓冲区块的指针,此外还有in和out两个指针分别用于数据输入和输出。
每次输入时使用in指针向可以输入数据的第一个空缓存区输入,而要读取数据时,使用out指针从第一个满的缓冲区提取数据。

image.png

2.4 缓冲池

缓存池里有多个缓存区,这些缓存区根据它们的使用情况分为了三个队列:空缓冲队列装满输入数据的缓存队列(输入队列)装满输出数据的缓冲队列(输出队列)

image.png
  1. 输入数据时:空缓存队列的队首摘下空缓冲区 -> 在hin区输入数据 -> 输满后挂到输入队列队尾;
  2. 计算进程输入数据时:从输入队列提取缓冲区块 -> 在sin区提取数据 -> 数据用完后挂入空缓存队列
  3. 计算进程输出数据时:空缓存队列的队首摘下空缓冲区 -> 在hout区输入数据 -> 输满后挂到输出队列队尾;
  4. 输出数据时:从输出队列提取数据 -> 在sout区提取数据 ->数据用完后挂入空缓存队列
image.png image.png

3. 设备分配

CPU根据用户的I/O请求分配设备,并且尽可能将设备忙碌,又要避免因设备分配不合理造成进程死锁。因此使用记录表记录每个设备分配情况,并且制定相应的分配策略,保证设备能够安全使用避免死锁发生。

3.1 设备分配的数据结构

进程管理使用PCB管理进程,文件管理使用FCB管理文,同样设备管理也需要建立类似的表管理设备,但是由于设备读写涉及到操作系统、控制器和通道,因此需要建立多个表,依次有系统设备表(SDT)设备控制表(DCT)控制器控制表(COCT)通道控制表(CHCT)

它们之间通过如下顺序依次进行访问:
SDT -> DCT -> COCT -> CHCT

设备分配总结起来就是:设备分配过三关:设备可用、控制器可用和通道可用

3.2 设备分配的策略

设备分配方式有静态分配和动态分配两种。

3.3 设备分配的安全性

设备分配的安全性指的是是否会发生死锁。

3.4 逻辑设备名到物理设备名的映射

用户使用设备时通过使用逻辑设备名来调用物理设备,因此建立一张表来查找从逻辑设备名到物理设备名的映射——逻辑设备表(LUT)。

image.png

4. 虚拟设备技术

除了使用缓存区来解决CPU与I/O设备速度不匹配问题外,可以使用虚拟设备技术(SPOOLing),主要是利用外围控制机,将低速I/O设备上的数据传送到高速磁盘上。常用于共享打印机。

image.png
上一篇下一篇

猜你喜欢

热点阅读