设备管理

4.1 设备管理基础

4.1.1 设备管理概述

  • I/O设备:输入输出设备、外围设备、外部设备、外设。用于计算机系统与外部世界的信息交换或存储。

  • I/O系统:I/O设备及其接口线路、控制部件、通道和管理软件

  • I/O操作:内存和外设间的信息传送操作。

    • 影响计算机系统的通用性可扩充性
    • 影响计算机系统的综合处理能力及性价比

I/O设备分类

信息传输视角
  • 输入设备:键盘、鼠标、扫描仪
  • 输出设备:显示器、打印机
  • 输入输出设备:磁盘驱动器、网卡
交互功能视角
  • 人机交互设备:鼠标、键盘、显示器
  • 存储设备(==存储大量信息并快速检索==):磁盘驱动器、光盘驱动器
  • 机机通信设备:网卡、调制解调器
设备管理视角
  • 字符设备:鼠标、显示器,以==字符为单位==进行信息交换
  • 块设备:磁盘,以固定大小的==数据块为单位==进行信息交换
  • 网络设备:机机通信设备(网卡),即可抽象为 字符设备 也可抽象为 块设备

设备管理的目标

  1. 解决设备与CPU速度的不匹配,使主机和设备充分并行工作,提高设备使用效率
  2. 操作系统将所有设备都定义为文件,统一在文件系统之下
  3. 屏蔽设备的物理细节和操作过程,配置驱动程序,提供统一界面
    1. 抽象为裸设备
    2. 抽象为设备文件

设备管理的功能

  1. 设备中断处理
  2. 缓冲区管理
  3. 设备的分配和去配
  4. 设备驱动调度
  5. 虚拟设备的实现

设备管理的实现层次

  • I/O硬件
    • I/O设备及其接口路线
    • 控制部件
    • 通道
  • I/O软件
    • 系统I/O软件
    • 用户空间I/O软件

4.1.2 I/O控制方式

设备控制器

优势:引入控制器后,通过传递简单参数就可进行I/O操作,大大简化系统的设计,有利于计算机系统对各类控制器和设备的兼容性

模块化和通用性的设计目标 =》机械部件 + ==电子部件==

电子部件:==设备控制器==;系统与设备控制器交互;设备控制器具体控制设备进行I/O。

设备控制器是 CPU 和 设备之间的接口,具有以下功能:

  1. 接收和识别 CPU或通道 发来的命令 =》控制寄存器
  2. 实现数据交换 =》 数据寄存器
  3. 发现和记录设备及自身的状态信息,供CPU处理时使用 =》状态寄存器
  4. 当连接多台设备时,识别设备地址 =》对寄存器寻址
设备控制器的组成

注意:一个I/O控制器可能对应多个设备;数据寄存器、状态寄存器和控制寄存器也可能有多个。

I/O控制方式

轮询方式

==CPU和I/O设备串行操作==

轮询方式

读写数据:1、从I/O模块中读取字 2、往存储器中写入字

中断方式

==CPU与I/O设备并行工作==

中断方式

处理器发送指令给控制器,然后继续执行指令 =》I/O操作完成后,控制器发起中断请求 =》...

一旦涉及大量数据传输,就会需要频繁的中断处理,消耗较多CPU的时间

DMA方式

DMA:Direct Memory Access 直接存储器存取

内存和设备之间有一条数据通路==成块==地传送数据,无须CPU干预,实际数据传输操作由DMA直接完成。

DMA方式

处理器向DMA发出I/O命令,继续自己的工作 =》 DMA完成数据传输后,中断处理器

DMA控制器

注意:DMA控制器并不是每次直接读入一整块的数据,也是一个字一个字的传输,从 I/O设备 =》DR =》内存

一次读写一个或多个块(多个块必须是连续的

==周期窃取==:同时通过总线访问主存时,CPU让出总线占有权给DMA

DMA的总线类型

I/O通道

==通道控制器==,用于完成逻辑上独立的I/O任务。

主机、通道、控制器和设备之间采用四级连接,实施三级控制,一个CPU连接若干个通道,一个通道连接若干个控制器,一个控制器连接若干个设备。

处理器不再执行I/O指令,而是在主存中组织通道程序,由I/O通道执行,CPU与通道高度并行工作

CPU启动指定通道上的设备,通道控制设备进行操作,CPU执行其他任务 =》 I/O操作完成,中断处理器处理I/O操作结束事件。

CPU作用 等待设备 内存数据交换
轮询方式 需要 需要
中断方式 不需要 需要
DMA方式 不需要 不需要
I/O通道 不需要 不需要

I/O功能的演化

  1. 处理器直接控制外围设备

  2. 增加了控制器或I/O模块:程序控制

    处理器开始从外围设备接口的具体细节中分离出来

  3. 采用中断方式的控制器或I/O模块

  4. I/O模块通过DMA直接控制存储器

  5. I/O模块被增强为单独的处理器,有专门为I/O设计的指令集

  6. I/O模块有自己的局部存储器,本身就是一台计算机

4.1.3 总线与I/O

单总线结构

将CPU、主存和I/O模块连接到同一总线

优点:结构简单,易于扩充

缺点:共用总线,设备多时总线压力大,传输时延长,且慢速外设占用带宽多

单总线结构

待补充

4.2 设备管理软件

4.2.1 I/O软件的实现层次

I/O软件的设计目标

  • 设计目标
    • 高效性:最关注磁盘I/O的效率
    • 通用性:用统一标准的方法来管理所有设备
  • 设计思路:层次结构,低层软件屏蔽硬件细节,高层软件与用户友好交互
  • 主要问题
    • 设备无关性
      • 访问设备的程序与具体物理设备无关
    • 出错处理
      • 数据传输中的错误应该尽可能在靠近硬件的地方处理,尽量在低层次处理
    • 同步(阻塞)——异步(中断驱动)传输
      • 异步传输:CPU启动I/O后可以继续执行其他工作,直到中断到达
      • 同步传输:阻塞方式,让启动I/O的进程阻塞等待,直到数据传输完成
    • 独占型外围设备和共享型外围设备
      • 建立数据缓冲区,让数据到达与离去率相匹配,提高系统吞吐率

I/O软件的层次结构

I/O设备层次结构

4.2.2 I/O软件的实现

I/O中断驱动程序

  • 位于操作系统底层,与硬件密切相关
  • 设备向CPU提出中断请求时,CPU响应并转入中断处理程序执行,通常做的工作
    • 检查设备状态寄存器,判断中断原因
    • 若传输有错:向上层软件报告设备的出错信息,实施重新执行
    • 若正常结束:唤醒等待传输的进程,使其转换为就绪态
    • 若有等待传输的I/O命令:通知相关软件启动下一个I/O请求

设备驱动程序

  • 包括与设备密切相关的所有代码
  • 把用户提交的逻辑I/O请求转化为物理I/O操作的启动和执行,如设备名=》端口地址,逻辑记录=》物理记录,逻辑操作=》物理操作

独立于设备的I/O软件

  • 对设备驱动程序的统一接口
  • 设备命名
    • 设备都被看作文件,通过路径名进行寻址
    • 设备不仅具有文件名,且支持与文件相关的所有系统调用,open、close、read等
    • 设备文件依赖于inode来实现,文件目录并不能区分文件名是代表一个磁盘文件或设备文件。但是inode中的内容是不一样的,磁盘文件的inode包含指向数据块的指针,而设备文件的inode则包含指向内核设备驱动程序的指针,用来控制设备的I/O
  • 设备保护
    • 设备保护需要检查用户是否有权访问所申请的设备(I/O指令是特权指令,通过系统调用间接供用户使用)
    • Unix/Linux中对I/O设备的特别文件采用rwx保护机制,对文件的保护规则也适用于I/O设备
  • 提供与设备无关的块尺寸
    • 屏蔽不同磁盘扇区大小并向高层软件提供统一大小的逻辑块
  • 缓冲区管理
    • 通过缓冲区来消除填满速率和清空速率之间的影响,块设备和字符设备都需要缓冲技术,可在主存建立缓冲区的方式解决
  • 分配与状态跟踪
    • 静态、动态、虚拟分配
  • 出错处理和报告
    • 错误处理多数由驱动程序完成,低层软件完成不了的情况,交给高层软件处理

用户空间的I/O软件

  • 库函数实现的I/O系统调用
  • 库函数将与应用程序链接在一起,形成可执行代码装入主存,库函数也是I/O系统的一部分
  • 库函数所做的工作只是将系统调用所需要的参数放在合适的位置,然后陷入内核,由内核函数实现真正的I/O操作

I/O缓冲

目的

  1. 解决CPU与设备之间速度不匹配的矛盾
  2. 协调逻辑记录大小与物理记录大小不一致的问题
  3. 提高CPU和设备的并行性
  4. 减少I/O操作对CPU的中断次数
  5. 放宽对CPU中断响应时间的要求

面向块:数据存储和传送以块为单位,块的大小通常固定,可以通过块号访问数据(磁盘和磁带)

面向流:设备以字节流的方式传输数据(终端、打印机、通信端口、鼠标和其他指示设备以及大多数非辅存的其他设备

I/O缓冲区

在内存中开辟的存储区,专门用于临时存放I/O操作的数据

单缓冲技术

输入传送的数据放到缓冲区中,传送完成时,进程将该块移动到用户空间,并立即请求另一块,称为超前(预先输入)

单缓冲技术

双缓冲技术

双缓冲技术

循环缓冲技术

使得I/O操作能够跟得上进程的执行

循环缓冲技术

4.3 独占型外围设备的分配

设备分配

  • 设备特性:独占设备、共享设备和虚拟设备三类
  • 管理和分配外围设备的技术:独占方式、共享方式和虚拟方式

4.3.1 设备独立性

用户通常不指定物理设备,而是指定逻辑设备,使得用户进程和物理设备分离开来,再通过其他途径建立逻辑设备和物理设备之间的映射(系统需要提供逻辑设备名和物理设备名的对应表)

原因:如果直接指定某个物理设备的话,虽然会让设备分配变得简单,但是一旦该物理设备出现故障,即使系统中存在同类设备也不能运行

优点:1、应用程序和具体物理设备无关,变更设备时不需要修改源码。2、易于应对各种I/O设备故障,提高系统的可靠性。3、增加设备分配的灵活性,有利于更加有效地利用设备资源,实现多道程序设计。

4.3.2 独占型外围设备的分配

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

分配方式:1、静态分配,运行前申请,实现简单,防止死锁,但是降低设备利用率

​ 2、动态分配,随用随分配,提高设备利用率

设备分配的数据结构:设备类表(记录各类设备的信息)设备表(记录某一类设备的信息)

设备分配算法(不知道重不重要)

  1. 根据设备类查找设备类表
  2. 若无空闲设备则等待设备
  3. 取得设备表首地址
  4. 查设备表发现空闲设备栏
  5. 若未发现空闲设备栏则等待设备
  6. 填占用进程号,逻辑设备名,分配设备

4.4 共享型外围设备的驱动

4.4.1 磁盘的物理结构

磁盘结构

磁盘
  • 磁盘由多个盘片组成
  • 每个盘片一般有两个盘面(上下两个)
  • 盘面包括多个同心圆结构的磁道
  • 不同盘面上位于相同位置的磁道构成柱面
  • 每个磁道分为固定多个扇区,相邻扇区组合成簇
  • 物理块地址:柱面号,磁头号(盘面号),扇区号

磁盘读写数据的方式

  1. 寻道:控制移动臂到达指定柱面
  2. 旋转:等待要读写的扇区旋转到磁头下
  3. 选择磁头号,进行数据读写

磁盘存取时间

磁盘存取时间

4.4.2 磁盘的驱动调度

磁盘可能同时接收到若干I/O请求,OS进行磁盘的驱动调度策略:1、移臂调度;2、旋转调度

移臂调度

目的:使移动臂的移动时间最短,从而减少寻道总时间

  • 先来先服务(==FIFO/FCFS==):移臂距离大,性能不好
  • 优先级(==Priority==)
    • 比较短的批作业和交互作业的优先级较高,而较长计算时间的长作业优先级较低
    • 长作业等待时间较长
  • 后进先出(==LIFO==)
    • 把设备资源优先提供给最后到来的用户
    • 局部性好,提高吞吐率,资源利用率高
    • 可能出现“饿死”
  • 最短服务时间优先(==SSTF==):优先处理服务时间更短的请求(选择使磁头从当前位置开始移动的最少的请求),存在饥饿现象
  • 扫描算法
    • 单向扫描:移动臂向一个方向扫描,归途不提供服务
    • 双向扫描(==SCAN==):移动臂每次向一个方向移动,遇到最近的I/O请求便进行处理,到达最后一个柱面后再向反方向移动双向到底
    • 电梯调度(==LOOK==):双向扫描的改进,当前移动方向没有访问请求时,就改变移动方向双向不到底
    • 循环扫描(==C-SCAN==):把扫描限定在一个方向,当访问到沿某个方向的最后一个磁道时,磁头臂返回到磁盘相反方向磁道的末端(归途不提供服务),再次开始扫描单向到底
    • ==C-LOOK==:循环电梯?循环扫描的改进,当移动方向没有访问请求的时候,改变移动方向(归途不提供服务单向不到底
    • ==N-step-SCAN==
      • 进程如果重复请求同一个磁道就会垄断整个设备,故采用分布扫描避免此类问题
      • 把磁盘请求队列分成长度为N的子队列,每一次用SCAN处理一个子队列,处理一个队列时,新请求必须添加到其他某个队列中。
    • ==FSCAN==
      • 使用两个子队列
      • 开始扫描时,所有请求处于一个队列中,另一个队列为空;扫描过程中,新到的请求放入另一个队列中

旋转调度

目的:使得旋转延迟的总时间最少

  • 循环排序:在最少旋转圈数内完成位于同一柱面的访问请求
    • 旋转位置测定硬件 和 多磁头同时读写技术 有利于提高旋转调度的效率
  • 优化分布:通过信息在存储空间的排列方式来减少旋转延迟
    • 交替排序:由于磁盘匀速运转,可能处理当前扇区数据时,下个扇区已经跳过了。所以,对扇区间隔编号,如交叉因子n:1表示相邻编号间会间隔n-1个扇区,这样当处理完扇区数据之后可能正好达到下一个编号的扇区。

RAID

  • RAID0

    并行交叉存取,适用于大数据量的I/O请求,无冗余校验

    RAID0
  • RAID1

    容量下降一半,成本很高

    RAID1
  • RAID2

    并行存取,海明校验码,成本较高

    RAID2
  • RAID3

    只用一个冗余盘,采用奇偶校验技术

    RAID3
  • RAID4

    独立存取磁盘阵列,数据条带交叉存放

    RAID4
  • RAID5

    奇偶校验码循环分布在每个盘上使容错性更好

    RAID5
  • RAID6

    双重冗余技术,且采用两种不同的数据校验算法

    RAID6

磁盘Cache

主存中为磁盘扇区设置的一个缓冲区,利用局部性原理,减少存储器存取时间

  • LRU:替换Cache中未被访问的时间最长的块
  • LFU:替换Cache中访问次数最少的块

4.5 虚拟设备

4.5.1 SPOOLing 系统

虚拟设备技术

使用一类物理设备模拟另一类物理设备的技术,通常是使用共享型外围设备模拟独占型外围设备。

  • 内存卡模拟磁盘
  • 块设备模拟字符设备
  • 输入输出重定向

SPOOLing设备

外部设备联机并行操作(Simultaneous Peripheral Operations On-Line)

关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”

一个经典的SPOOLing系统:用高速的磁盘设备来模拟慢速的字符设备,缩短进程在内存中的驻留时间

  • “井”是用作缓冲的存储区域,采用井的技术能调节供求之间的矛盾,消除人工干预带来的损失。
  • “预输入程序”:预先把数据从输入设备传送到磁盘输入井
  • ”缓输出程序“:把数据从磁盘输出井传送到输出设备
  • “井管理程序”:控制进程与井之间的数据交换(I/O重定向)

全部的I/O都基于磁盘,加快进程周转时间,提高系统吞吐量

SPOOLing系统

打印SPOOLing系统

  • 守护进程是唯一有特权使用打印机设备的进程
  • 打印文件前,用户进程先产生完整的待输出文件,并存放在打印目录下
  • 打印机空闲时,启动守护进程,打印待输出文件

4.5.2 批处理系统的作业管理

作业调度和进程调度的关系

作业调度和进程调度的关系

4.6 相关习题

  • CPU输出数据的速度远远高于打印机的打印速度,为了解决这一矛盾,可采用 缓冲技术
  • 为了使多个进程能有效地同时处理输入和输出,最好使用 缓冲池 结构的缓冲技术
  • 在采用SPOOLing技术的系统中,用户的打印结果首先被送到 磁盘固定区域
  • 采用假脱机技术,将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作,用以代替打印机的部分是 虚拟设备
  • 将系统中的每一台设备按某种原则进行统一的编号,这些编号作为区分硬件和识别设备的代号,该编号称为设备的 绝对号

设备管理
http://example.com/2023/02/12/nju-course-review-notes/os/device-management/
作者
zhc
发布于
2023年2月12日
许可协议