C4 设备管理

第四章-设备管理

4.1-设备管理概述

⭐设备管理的目标

  1. 解决设备和CPU速度的不匹配,使两者充分并行工作
  2. 屏蔽设备的具体操作细节,配置驱动程序,提供统一接口

设备控制器

  • CPU和物理设备之间的接口

  • 组成

⭐IO控制方式

轮询

  • CPU向控制器发送I/O命令,轮询I/O结果。
  • 若设备未就绪,则重复,直至设备就绪。
  • 设备就绪,CPU执行内存交换

中断

  • CPU向控制器发出I/O命令,然后干其他事情
    • 如果进程支持异步IO,就不用换进程
    • 否则进程挂起,换进程
  • 控制器在设备就绪后向CPU发出中断
  • CPU响应中断,进行内存交换

DMA

  • CPU向DMA模块发出I/O命令

  • 处理器干其他事,DMA负责等设备就绪和传送数据

  • DMA数据传完之后中断CPU

  • DMA一般用周期窃取的方式访问内存。因为CPU大部分情况下用Cache,这时空闲的主存就能被DMA高效利用

I/O通道

  • 没看懂是啥

总线

  • 解决I/O速度不匹配的问题
  • 不同总线结构的本质是让速率相近的设备在一条总线上

单总线

三级总线

南北桥

4.2-I/O软件的实现

设计目标

效率:改善设备效率,尤其是磁盘

通用:用统一标准来管理所有设备

⭐I/O软件的层次结构

从低到高为

  • I/O中断处理程序
  • I/O设备驱动程序
  • 独立于设备的I/O软件
  • 用户空间的I/O软件

I/O中断处理程序

位于OS底层,和设备联系紧密

数据传输结束后产生I/O中断,CPU响应请求并转入中断处理程序

功能:检查设备状态寄存器,根据状态进行相关操作

  • 报错
  • 正常结束,唤醒请求这个I/O的进程
  • 其他

I/O设备驱动程序

  • 初始化设备

  • 逻辑I/O请求转化为物理I/O操作

  • 监督设备正确执行,缓冲区纠错

独立于设备的I/O软件

执行适用所有设备的常用I/O功能

  • 设备命名:通过路径名寻址设备
  • 设备保护:用户是否有权访问设备
  • 提供与设备无关的数据单位:字符/块
  • 缓冲技术:调整CPU与I/O速度不匹配
  • 分配和状态跟踪:分配设备
  • 错误处理/报告:驱动无法处理的错误

用户空间的I/O软件

  • 库函数
  • 虚拟设备软件,如Spooling

缓冲技术

目的

  • 速度不匹配
  • 协调逻辑记录大小和物理记录大小的不匹配
  • 提高并行
  • 减少I/O对CPU的中断次数
  • 放宽中断响应时间

缓冲区

放在主存中

缓冲技术类型

  • 单缓冲
  • 双缓冲
  • 循环缓冲

4.3-设备分配-独占型外围设备

独占型外围设备:一次只能由一个进程独占使用

⭐分配方式

  • 静态分配:进程运行前申请
  • 动态分配:进程随用随申请

分配设备的数据结构

  • 设备类表:存不同设备的信息
  • 设备表:存一类设备中不同物理设备的信息

4.5-虚拟设备-SPOOLing系统

SPOOLing系统

SPOOLing-外部设备联机并行操作-假脱机技术

处在用户空间的I/O软件层

核心思想:用高速的磁盘设备来模拟慢速的字符设备,缩短进程在内存中的驻留时间

实现

  • 预输入程序:输入设备通过预输入程序把数据输到输入井就可以干其他事情了

  • 缓输出程序:输出全都计算好了,输出设备就通过缓输出程序慢慢把这一堆数据输完

  • 井交换程序:控制作业进程和井的数据交换

补充-磁盘调度

FIFO-先进先出

按顺序处理请求

SSTF-最短服务时间优先

每次找距离当前磁头最近的任务

  • 会饥饿

SCAN-扫描

一次只沿一个方向

磁头移动到最外或最内磁道才掉头

⭐LOOK-电梯调度

一次只沿一个方向

磁头移动到最外或最内任务才掉头

CSCAN-循环扫描

只会沿一个方向扫

磁头到磁道末端后,返回另一端末端开始扫