第四章


1 设备管理基础

通常将I/O设备及其接口电路,控制部件,通道和管理软件称为I/O系统,将计算机的主存和I/O设备之间的信息传送操作称为I/O操作

设备管理有5项基本功能:中断处理,I/O缓冲区管理,设备分配与去配,设备驱动调度与虚拟设备实现

2 设备管理软件

I/O软件的实现层次:

  1. I/O硬件:执行IO操作
  2. I/O中断处理程序:处理IO中断,报告IO错误,唤醒IO设备驱动程序
  3. I/O设备驱动程序:设备初始化,启动IO操作,检查IO状态
    1. 设备初始化
    2. 执行设备驱动例程
    3. 调用和执行中断处理程序
  4. 独立于设备的I/O软件:设备的命名,保护,阻塞,缓冲,分配,跟踪
    1. 设备命名与设备保护
    2. 提供与设备无关的数据单位
    3. 提供缓冲技术
    4. 提供设备分配与状态跟踪
    5. 提供错误处理与报告
  5. 用户空间的I/O软件:IO系统调用,IO格式化,SPOOLing

3 I/O缓冲区

为了解决CPU与设备之间速度不匹配的问题,协调逻辑记录与物理记录大小的不一致,提高CPU和设备的并行性,减少I/O操作对CPU的中断次数以及放宽对CPU中断响应时间的要求,操作系统普遍采用缓冲技术

  1. 单缓冲技术:当应用进程发出I/O请求时,操作系统将在主存的系统区中开设一个缓冲区。
  2. 双缓冲技术:在输入数据时,首先从设备读出数据填充缓冲区1,系统将缓冲区1的数据传送到用户区,此时缓冲区2为空,可以从设备读出数据填充缓冲区2;当缓冲区1为空,再次填充,如此反复。两个缓冲区交替使用,设备之间的并行性进一步提高
  3. 循环缓冲技术:操作系统从主存区域分配一组缓冲区,每个缓冲区都有一个链接指针指向下一个缓冲区,最后一个缓冲区指向第一个

独占型外围设备分配

设备独立性:通常用户不指定具体的物理设备指定逻辑设备,使得用户作业和物理设备之间的分配关系分离开来,再通过操作系统的设备管理功能建立逻辑设备和物理设备之间的对应关系。设备的这种特性称为”设备独立性”

独占型外设的分配

  1. 静态分配:在作业执行前所有需要使用的设备全部分配给它,当作业在执行过程中不再需要使用该类设备或作业执行结束将要撤离,再收回设备
  2. 动态分配:在作业执行过程中要求输出一批信息时,系统才将设备分配给该作业(需要注意,动态分配会造成死锁问题)

独占型设备分配的数据结构

  1. 设备类表:设备类,总台数,空闲台数,设备表起始地址
  2. 设备表:物理设备名,逻辑设备名,占有设备的进程号,已分配/未分配,好/坏标志

逻辑设备:用户决定的,可以更改

物理设备:系统规定的,不可更改

4 共享型外围设备的驱动

  1. 盘片:磁盘是由多个盘片组成
  2. 盘面:每个盘片的正反两面各有一个磁头与之对应,磁头以微小的间距悬浮于盘面
  3. 磁道:磁盘的每个盘面包括多个同心圆结构的磁道
  4. 柱面:不同盘面上半径相同的磁道构成了柱面
  5. 扇区:每个磁道又被划分为固定数量的扇区,每个磁道上的扇区个数是固定的
  6. 簇:主存一次与磁盘交换一个或多个扇区,为了提高数据交换的效率,将相邻的扇区组合称为簇

注意:面和道都是从0开始编址,但扇区则没有0扇区的概念,一定是从1开始编号的

磁盘读写一个扇区的周期:等待设备时间+等待通道时间+寻道时间+旋转延迟+数据传输时间

1 磁盘的驱动调度(移臂调度)

  1. 先来先服务算法FCFS
  2. 最短查找时间优先算法:缺点是存在饥饿现象

  3. 扫描算法:

    1. 单向扫描算法:移动臂总是向同一个方向扫描,顺序处理所有请求,归途不提供服务
    2. 双向扫描算法:移动臂先向一个方向移动,将所有访问处理完毕后再反向继续处理,如此反复
    3. 电梯调度算法:在双向扫描的基础上,如果前方没有访问请求时,移动臂可以及时转向

5 虚拟设备

虚拟设备是用一类物理设备模拟另一类物理设备的技术,可以将独占型设备变为共享型设备

1. SPOOLing

  1. 为了实现外围设备联机并行操作功能,必须具有能将信息从输入设备输入至磁盘输入缓冲区的”预输入程序“

  2. 能将信息从磁盘输出缓冲区输出至输出设备的”缓输出程序“

  3. 控制运行作业和磁盘缓冲区之间交换信息的”井管理程序“
  4. 为了存放从输入设备输入的信息以及作业执行后的输出结果,操作系统在磁盘上开辟了输入井和输出井
  5. 系统需要维护作业表,预输入表和缓输出表

2. 批处理系统的作业管理

作业的生命周期的四个状态:输入状态、后备状态、执行状态和完成状态

  1. 当一个作业建立后,首先进入输入状态
  2. 预输入完成后,进入后备状态
  3. 通过作业调度程序来选择哪些作业进入执行状态
  4. 作业的进程运行结束后,进入完成状态

作业调度算法:一般采用FCFS,最短作业优先调度SJF,最高响应比优先调度HRRF