IO设备的基本概念和分类

“I/O”就是“输入/输出”(Input/Output)I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件

按使用特性分类

人机交互的外部设备

用于与计算机用户之间交互设备(打印机,鼠标,键盘)

交换速度相对较,以字节为单位进行数据交换

存储设备

用于存储程序和数据的设备(磁盘、磁带、光盘)

交换速度较,以多字节组成的为基本单位交换

网络通信设备

用于远程设备通信的设备(网络接口、调制解调器)

速度介于前两类之间

传输速率分类

低速设备:每秒进位几个字节到数百字节(鼠标、键盘)

中速设备∶传输速率为每秒数千字节至数万字节(行式打印机、激光打印机)

高速设备:传输速率在数百兆字节至千兆字节的一类设备(磁带机、磁盘机、光盘机)

信息交换单位分类

块设备:信息存取总是以数据块为基本单位,存储信息的设备称为块设备传输速率高,可寻址,可以任意读写某块

字符设备:用于数据输入输出的设备为字符设备,传输的基本单位是字符(交互式终端机,打印机)”传输速率低,不可寻址,输入输出时常采用中断驱动方式

IO控制器

image-20210819100627472

IO控制方式

image-20210819100942898

程序直接控制方式

计算机从外部设备读取数据到存储器,每次读一个字的数据,对读入的每个字,CPU都要对外没状态进行循环检查,知道确定该字已经在I设备控制器的数据寄存器中。

读写单位:

优点:容易实现,操作简单

缺陷∶CPU高速性和IO设备的低速性的矛盾(降低了CPU的利用率),CPU和IO设备只能串行工作

中断驱动方式

允许IO设备主动打断CPU的运行并请求服务,进而解放CPU,使其向IO控制器发送读命令后可以继续做其他有用的工作

读写单位∶

优点∶比程序直接控制方式有效

缺点:数据的传输必须要经过CPU,仍然后消耗CPU的时间

DMA方式

在IO设备和内存之间开辟直接的数据交换通路,彻底解放CPU

读写单位:数据块

设备直接送入内存

只有当一个或多个数据块开始和结束的时候,CPU才会进行干预

命令/状态寄存器(CR):用于接收CPU发送的IO命令和有关控制信息或者设备状态

内存地址寄存器(MAR):数据直接在设备与内存之间交互

数据寄存器(DR):用于暂存从设备到内存或者从内存到设备的数据

数据计数器(DC) :存放本次要传送的字(节)数

通道控制方式

设置一个专门负责输入/输出的处理机(DMA方式的发展),实现对一组数块的读写以及相关控制和管理为单位干预

读写单位:一组块

优点:有效的提高了系统资源利用率

缺点:实现较为复杂

DMA与通道的区别

DMA需要CPU来控制传输的数据块大小、传输的内存位置、而通道方式中这些信息是由通道控制

DMA控制器对应一台设备与内存传递数据,通道可以控制多态设备与内存的数据交换

IO软件层次结构

image-20210820091316560

用户层IO软件

实现与用户交互的接口,用户可以直接调用在用户层提供的,与IO操作有关的库函数,对设备进行操作

设备独立性软件

用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护、差错控制及设备分配与释放,同时为设备管理与数据传送提供必要的存储空间

设备独立性也称为设备无关性,使得应用程序独立于具体使用的物理设备(使用逻辑设备名)

使用逻辑设备名的好处:增加设备分配的灵活性;易于实现IO重定向

主要功能

执行所有设备的公有操作(设备的分配与回收,逻辑设备名映射为物理设备名,对设备进行保护,进制用户直接访问设备),屏蔽设备之间数据交换的速度差异等

向用户层(文件层)提供统一接口∶无论哪种设备,他们向用户提供的接口都是相同的

设备驱动程序

与硬件直接相关,负责实现系统对设备发出的操作命令,驱动IO设备工作的驱动程序

中断处理程序

用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完并恢复被中断进程的现场后,返回被中断进程

硬件设备

IO设备通常包括一个机械部件和一个电子部件

IO核心子系统

image-20210820092933066

IO子系统概述

主要提供IO调度,缓冲与高速缓存,设备分配与回收,假脱机,设备保护和差错处理

IO调度概念

通过IO调度改善系统整体性能,使得进程之间公平共享设备访问,减少IO完成所需要的平均等待时间

使用主存或者磁盘上的存储空间的技术,如缓冲、高速缓存、假脱机等来改善计算机效率

假脱机技术

目的

缓解CPU 与IO的速度差异矛盾

要实现SPOOLing 技术,必须要有多道程序技术的支持

输入井和输出井

输入井用来收容IO设备的数据

输出井用来模拟输出时的磁盘

image-20210823084723811

image-20210823084823869

输入缓冲区和输出缓冲区

输入缓冲区:暂存由输入设备送来的数据

输出缓冲区:暂存从输出井送来的设备

输入进程和输出进程

输入进程∶模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区送到输入并中,当CPU需要数据,直接将输出井中的数据送入内存

输出进程:模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井中,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备

特点

提高了IO速度

独占设备变成了共享设备

实现了虚拟设备功能

通俗一点就是,如果设备被占用,我们就先把数据暂存一下,等到设备空闲了就把这些数据输送到设备中

设备的分配与回收

概述

―根据用户IO请求分配设备,原则:充分发挥设备的使用效率,避免进程死锁

设备类型分类

独占式使用设备设备只能互斥使用(打印机)

分时共享使用设备通过分时共享来提高设备的利用率

SPoOLing方式使用设备使用空间换时间,对IO设备进行批处理

设备分配的数据结构

  • 设备控制表(DCT)

一个设备控制表表征一个设备,控制表中是设备的各项属性

  • 控制器控制表(COCT)

COCT与DCT——对应关系,DCT需要一个表项来表示控制器,即一个指向控制器控制表的指针

  • 通道控制表(CHCT)

CHCT提供服务的那几个设备控制器

  • 系统设备表(SDT)

记录已经连接到系统中的所有物理设备的情况

设备分配的策珞

分配原则:充分发挥设备效率,避免进程死锁

分配方式
  • 静态:系统—次性的把设备分配给相应作业,直到作业结束

    优点∶没有死锁问题

    缺点:降低了设备使用率

  • 动态:进程执行过程中根据执行需要进行分配

    优点:提高了设备利用率

    缺点∶分配算法不当可能导致死锁

设备分配算法

先请求先分配类似于先来先服务

优先级高者优先

独占设备一般使用静态分配,共享设备一般使用动态分配

缓冲区管理

磁盘高速缓存

使用磁盘高速缓存技术可以提高磁盘的IO速度,对高速缓存复制的访问要比原始数据访问更高效

磁盘高速缓存,逻辑上属于磁盘,物理上属于驻留在内存中的盘块

在内存中的两种形式

在内存中开辟一个单独的存储空间作为磁盘高速缓存,大小固定

把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘IO时共享

缓冲区

引入缓冲区的目的

缓和CPU与IO之间的速度差异矛盾

减少对CPU的中断频率,放宽对CPU中断响应时间的限制

解决基本数据单元大小不匹配的问题

提高CPU和IO设备之间的并行性

实现方法

采用硬件缓冲器〔成本过高),除了关键位置,一般不使用硬件缓冲器

采用缓冲区(位于内存区域)

分类
  • 单缓冲

    设备和处理机之间设置缓冲区,设备和处理机交换数据的时候,先把被交换的数据写入缓冲区,然后需要数据的设备或处理机从缓冲区中取走数据

    使用时间max( C,T)+M

image-20210823090105764

image-20210823090126286

  • 双缓冲

    设置两个缓冲区,当缓冲区1满时,向缓冲区2中注入数据,只有缓冲区满才能取出数据

    提高了处理机和输入设备的并行操作程度

    max( C+M,T)

    image-20210823090156485

    image-20210823090211518

  • 循环缓冲
    包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形

image-20210823090302422

  • 缓冲池

    缓冲区分为三个队列,空缓冲队列,装满输入数据的缓冲队列,装满输出数据的缓冲队列

    四种缓冲区:收容输入数据的工作缓冲区,提取输入数据的工作缓冲区,收容输出数据的工作缓冲区,提取输出数据的工作缓冲区

    image-20210823090330524

注意

管道通信中的“管道”其实就是缓冲区。要实现数据的双向传输,必须设置两个管道

image-20210820095649299

高速缓存与缓冲区对比

相同点

都介于高速设备和低速设备之间

不同
  • 存放数据

    高速缓存:存放的是低速设备上的某些数据的复制数据

    缓冲区:存放的是低速设备传递给高速设备的数据,这些数据在低速设备上不一定有备份,这些数据再从缓冲区传送到高速设备

  • 目的

    高速缓存∶高速缓存存放的是高速设备经常要访问的数据,如高速缓存中数据不在,高速设备就要访问低速设备

    高速设备和低速设备的通信都要经过缓冲区高速设备永远不会去直接访问低速设备

参考文献

本文是b站王道考研操作系统视频的学习笔记,另外很感谢cen6667同学的给出的课程ppt和思维导图,下路是相关参考链接