操作系统 第五章 I/O设备管理

I/O管理概述

I/O设备

BkInjs.png

分类

BkI84U.png
BkIdD1.md.png
BkIBE6.png
BkIgvd.png

I/O控制器

BkoPxJ.png
BkoBss.png
BkogiT.png
BkoXSe.png
Bkovyd.png

I/O控制方式

程序直接控制方式(轮询)

BkLlQS.png

数据准备好,放到数据寄存器才会修改状态寄存器,CPU一查到就读取数据

BkL7TA.png

为什么会往存储器里放?
BkOSmQ.png

BkOZXF.png

中断驱动方式

BkON0H.png

##注意:##每次中断只能读入一个字的数据
BkOqHJ.png

DMA方式(Direct Memory Access:直接存储器存取)

BkXDa9.png
DMA寄存器
Bkj9Gq.png
  • DMA控制器也是一次读一个字然后放到内存中的,存够一批
BkxHR1.png
  • 读入的块或者在内存存放的块必须是连续的(因为它要求是一批连续的),如果想要读非连续的或者非连续的存放必须要多个I/O指令,一次是不行的
  • 一个DMA控制器只对应一台设备与内存传递数据

通道控制方式

Bkz1yV.png
  • 通道执行的指令很单一,且和CPU共享内存
  • 通道程序相当于任务清单,由一系列通道指令构成
  • 一个通道控制多个I/O控制器,一个I/O控制器控制多个I/O设备,也就是一个通道可以控制多台设备与内存交换数据
Bkz6Te.png

小结

Bkz2Yd.png

I/O系统层次

BAmEI1.png

用户层I/O软件

BAm8II.png

设备独立性软件

  1. 向上层提供统一的调用接口(如write/read系统调用)
  2. 设备保护
  3. 差错处理
  4. 设备分配与回收
  5. 数据缓冲区管理
  6. 建立逻辑设备名到物理设备名的映射关系,根据设备类型调用相应的设备驱动程序
    设备独立性也叫设备无关性
    BAmXOe.png
    类似于单级目录和两级目录

设备驱动程序

BAn5jS.png
驱动程序一般以一个独立进程的方式存在

中断处理程序

BAumuD.png

硬件设备

  • 电子部件(设备控制器/适配器)
  • 机械部件(本身)

小结

BAuJv8.png

I/O核心子系统

I/O调度与设备保护

BA0eHA.png
BA03jg.png

SPOOLing技术(假脱机技术)

BECYLt.png
  1. BABF5q.png
  2. BE93D0.png
  3. BE9t5F.png
  4. BE9S4e.png
  5. BE9DDx.png

利用SPOOLing技术将独占设备改造成共享式设备

BEC9aT.png
BECnZ6.png
BEC3zd.png

设备的分配与回收

BEEpZR.png
BECISJ.png
BEC7O1.png

设备分配的数据结构

BEkbge.png
BEAZEq.png
BEAuCT.png
BEAQv4.png

分配过程

BEAa8O.png
BEADrd.png
BEArqA.png
##改进##
BEA7aq.png
BEALGT.png

高速缓存与缓冲区

BEEq0A.png
BEEzp8.png

单缓冲区

BEV2jg.png

解题技巧:

  1. BEZd2T.png
  2. BEZTZd.png
BEepZj.png

双缓冲区

  1. BEelJx.png
  2. BEegmQ.png
  3. 结论:采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)

区别

BEmEtI.png
BEmMng.png

循环缓冲区

BEms41.png

缓冲池

BEnkKU.png

小结

BEnuP1.png