0%

IO管理

IO管理

I/O管理综述

  1. I/O管理的定义,以及各种分类
  2. I/O接口(又称设备控制器) 的定义与分类,以及各种功能
  3. I/O端口是指设备控制器中可被直接访问的寄存器,分为数据寄存器、状态寄存器和控制寄存器,编址方式分为独立编址和统一编址
  4. 4种I/O控制方式
    1. 程序直接控制方式(程序轮询方式)
      CPU发出I/O指令后轮询测试设备状态,直到确认字已经放入设备控制器的数据寄存器中
    2. 中断驱动方式
      允许设备控制器在I/O操作完成时,向CPU发送中断信号,CPU收到中断信号后,暂停当前程序的执行,转去处理中断服务程序,中断服务程序执行完毕后,再返回原程序继续执行
    3. DMA方式(直接存储器存取) 基本传输单位是块,传输中直接放入内存不经过CPU寄存器。由DMA控制器负责数据传输,除了传输多个快的开始和结束,无需CPU干预
    4. 通道控制 相对DMA有更高的自由度,传输数据块大小和传输的内存位置由通道而不是CPU决定
  5. I/O软件层级结构由高到低
    1. 用户层软件 - 与I/O操作有关的库函数,大部分在内核小部分在用户层
    2. 设备独立性软件 - 用于实现用户程序与设备驱动器的统一接口、设备命名、设备保护以及设备的分配释放等,同时为设备管理和数据传送提供必要的存储空间(逻辑设备的概念,逻辑设备到物理设备的映射)
    3. 设备驱动程序 - 与硬件直接相关,负责具体实现系统对设备发出的操作指令(抽象指令转化为具体指令)、驱动I/O设备工作的驱动程序,检查状态。同时也将设备控制器发来的信号传递给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异
    4. 中断处理程序 - 保存被中断进程的CPU环境,转入相应的中断处理程序中进行处理,完毕后恢复现场并返回被中断进程
    5. 硬件
  6. 阻塞I/O和非阻塞I/O的区别

设备独立性软件

  1. 定义
  2. 缓冲区 - 缓和CPU和I/O设备间速度不匹配,减少对CPU的干预,提高CPU与I/O设备间的并行性
    需要注意区分三个时间设备将数据传送到缓冲区的时间T,操作系统将缓冲区数据传送到工作区时间M,CPU处理数据时间C。下面所有计算都是基于一个定论,即缓冲区满后才能从缓冲区取出数据
    1. 单缓冲 - T与C可以并行,因此处理每块的平均时间是Max(T, C) + M
    2. 双缓冲 - T与C和M可以并行因此处理每块的平均时间是$ Max(T,C+M)$
    3. 循环缓冲
    4. 缓冲池
  3. 高速缓存与缓冲区的区分
高速缓存 缓冲区
相同点 都介于高速设备和低速设备之间 都介于高速设备和低速设备之间
区别 - 存放数据 存放的是低速设备上的某些数据的复制数据,即高速缓存上有的,低速设备上面必然有 存放的是低速设备传递给高速设备的数据(或相反),而这些数据在低速设备(或高速设备)上却不一定有备份,这些数据再从缓冲区传送到高速设备(或低速设备)
区别 - 目的 高速缓存存放的是高速设备经常要访问的数据,若高速设备要访问的数据不在高速缓存中,则高速设备就需要访问低速设备 高速设备和低速设备的通信都要经过缓冲区,高速设备永远不会直接去访问低速设备
  1. 设备分配与回收
    1. 概述与定义 - 系统中存在多个通道,每个通道连接多个控制器,每个控制器连接多个物理设备
    2. 设备分配的数据结构
      1. 设备控制表DCT - 每个设备分配一张。表项为设备的各种属性
      2. 控制器控制表COCT -
      3. 通道控制表CHCT
      4. 系统设备表SDT - 整个系统唯一一张。存放连接到系统中所有物理设备的情况
    3. 设备分配时考虑的因素
      1. 固有属性 - 独占设备、共享设备和虚拟设备
      2. 设备分配算法 - FCFS和最高优先级
      3. 设备分配的安全性
        安全分配(进程发出I/O请求后进入阻塞态)
        不安全分配(I/O请求后继续运行,一个进程可同时操纵多个设备)
      4. 设备分配步骤
        1. 分配设备 - 查找SDT,从中找到该设备的DCT
        2. 分配控制器 - 根据DCT找到COCT
        3. 分配通道 - 根据COCT找到CHCT
    4. 逻辑设备名到物理设备名的转化
      1. 使用逻辑设备表LUT
      2. 分配方式 - 整个系统使用一张LUT;或每个用户分配一张LUT
  2. SPOOLing技术(假脱机技术)
    1. 定义 - 主要用于解决高速 CPU 与低速外围设备(如打印机、扫描仪等)之间的速度不匹配问题,提高系统资源利用率和作业处理效率。是一种空间换时间的方法
      https://img-blog.csdnimg.cn/20200501190232544.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hoaGh4eG4=,size_16,color_FFFFFF,t_70
    2. 构成
      1. 输入井与输出井
      2. 输入缓冲区与输出缓冲区
      3. 输入进程和输出进程
      4. 井管理程序 - 在磁盘缓冲区中位进程申请空闲盘块,将要打印的数据放入其中暂存;为用户申请空白的用户打印请求表,用户打印填入其中以后挂载假脱机文件队列上
    3. 特点
      1. 每个进程都觉得自己独占打印机,实现了虚拟设备功能
      2. 提高了I/O速度
      3. 将独占设备改为共享设备(实际没给任何进程分配设备)
  3. 设备驱动程序接口
    1. 定义 - 接收上层抽象I/O请求(read/write等),转化为具体要求后发给设备控制器
    2. 特点
      1. 设备驱动程序与系统采用的I/O控制方式紧密相关,与硬件紧密相关
      2. 目前很多设备驱动程序的基本部分固化在ROM
      3. 允许多次同时调用执行

磁盘和固态硬盘

  1. 组成 - 柱面号盘面号扇区号
  2. 新磁盘安装操作系统的过程
    1. 磁盘初始化 - 将磁盘分为扇区以便磁盘控制器进行读写操作(低级格式化或物理格式化)
    2. 分区 - 将磁盘分为由一个或多个柱面组成的分区(eg:C、D盘),将物理分区进行格式化(高级格式化)
    3. 引导块 - 启动初始化(自举)程序,初始化CPU、寄存器、设备控制器和内存等。自举程序通常放在ROM中。eg.windowws系统下有一个分区为引导分区,它包含操作系统和设备驱动程序。windows系统将引导代码存储在磁盘的第0号扇区,它被称为主引导记录(MBR)
    4. 坏块 - 对被损坏的块使用某种机制不去使用它
  3. 磁盘的存取时间
    1. 寻道时间Ts = m * n + s,即启动磁头臂的时间加上跨越n条刺刀的时间
    2. 旋转延迟时间$T_r = \frac{1}{2r}$,磁头定位到读写扇区的时间,其中r为磁盘的转速
    3. 传输时间$T_t = \frac{b}{rN}$,其中b为读写的字节数,r为磁盘的转速
  4. 磁盘调度算法
    1. 先来先服务算法FCFS - 如其名,顺着走
    2. 最短寻道时间算法SSTF - 每次选择调度的是与当前磁头最近的磁道(容易造成饥饿)
    3. 扫描算法SCAN - 先向一个方向扫描,直到扫描到最边缘磁道,然后掉头反向扫描
    4. 循环扫描算法C-SCAN - 与SCAN类似,但是在扫描到最边缘磁道后,直接跳转到第一个磁道
    5. C-SCAN与C-LOCK - 与上面两个类似,但是移动到最远端请求的磁道即可掉头,而无需到达磁盘端点
  5. 提高磁盘I/O速度的方案
    1. 采用磁盘高速缓存
    2. 调整磁盘请求顺序
    3. 提前读
    4. 延迟写
    5. 优化物理块的分布
    6. 虚拟盘
    7. 采用磁盘阵列RAID
  6. 固态硬盘 - 相关知识点见计算机组成相关章节