IO管理
I/O管理综述
- I/O管理的定义,以及各种分类
- I/O接口(又称设备控制器) 的定义与分类,以及各种功能
- I/O端口是指设备控制器中可被直接访问的寄存器,分为数据寄存器、状态寄存器和控制寄存器,编址方式分为独立编址和统一编址
- 4种I/O控制方式
- 程序直接控制方式(程序轮询方式)
CPU发出I/O指令后轮询测试设备状态,直到确认字已经放入设备控制器的数据寄存器中 - 中断驱动方式
允许设备控制器在I/O操作完成时,向CPU发送中断信号,CPU收到中断信号后,暂停当前程序的执行,转去处理中断服务程序,中断服务程序执行完毕后,再返回原程序继续执行 - DMA方式(直接存储器存取) 基本传输单位是块,传输中直接放入内存不经过CPU寄存器。由DMA控制器负责数据传输,除了传输多个快的开始和结束,无需CPU干预
- 通道控制 相对DMA有更高的自由度,传输数据块大小和传输的内存位置由通道而不是CPU决定
- 程序直接控制方式(程序轮询方式)
- I/O软件层级结构由高到低
- 用户层软件 - 与I/O操作有关的库函数,大部分在内核小部分在用户层
- 设备独立性软件 - 用于实现用户程序与设备驱动器的统一接口、设备命名、设备保护以及设备的分配释放等,同时为设备管理和数据传送提供必要的存储空间(逻辑设备的概念,逻辑设备到物理设备的映射)
- 设备驱动程序 - 与硬件直接相关,负责具体实现系统对设备发出的操作指令(抽象指令转化为具体指令)、驱动I/O设备工作的驱动程序,检查状态。同时也将设备控制器发来的信号传递给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异
- 中断处理程序 - 保存被中断进程的CPU环境,转入相应的中断处理程序中进行处理,完毕后恢复现场并返回被中断进程
- 硬件
- 阻塞I/O和非阻塞I/O的区别
设备独立性软件
- 定义
- 缓冲区 -
缓和CPU和I/O设备间速度不匹配,减少对CPU的干预,提高CPU与I/O设备间的并行性
需要注意区分三个时间设备将数据传送到缓冲区的时间T,操作系统将缓冲区数据传送到工作区时间M,CPU处理数据时间C。下面所有计算都是基于一个定论,即缓冲区满后才能从缓冲区取出数据- 单缓冲 - T与C可以并行,因此处理每块的平均时间是Max(T, C) + M
- 双缓冲 - T与C和M可以并行因此处理每块的平均时间是$ Max(T,C+M)$
- 循环缓冲
- 缓冲池
- 高速缓存与缓冲区的区分
高速缓存 | 缓冲区 | |
---|---|---|
相同点 | 都介于高速设备和低速设备之间 | 都介于高速设备和低速设备之间 |
区别 - 存放数据 | 存放的是低速设备上的某些数据的复制数据,即高速缓存上有的,低速设备上面必然有 | 存放的是低速设备传递给高速设备的数据(或相反),而这些数据在低速设备(或高速设备)上却不一定有备份,这些数据再从缓冲区传送到高速设备(或低速设备) |
区别 - 目的 | 高速缓存存放的是高速设备经常要访问的数据,若高速设备要访问的数据不在高速缓存中,则高速设备就需要访问低速设备 | 高速设备和低速设备的通信都要经过缓冲区,高速设备永远不会直接去访问低速设备 |
- 设备分配与回收
- 概述与定义 - 系统中存在多个通道,每个通道连接多个控制器,每个控制器连接多个物理设备
- 设备分配的数据结构
- 设备控制表DCT - 每个设备分配一张。表项为设备的各种属性
- 控制器控制表COCT -
- 通道控制表CHCT
- 系统设备表SDT - 整个系统唯一一张。存放连接到系统中所有物理设备的情况
- 设备分配时考虑的因素
- 固有属性 - 独占设备、共享设备和虚拟设备
- 设备分配算法 - FCFS和最高优先级
- 设备分配的安全性
安全分配(进程发出I/O请求后进入阻塞态)
不安全分配(I/O请求后继续运行,一个进程可同时操纵多个设备) - 设备分配步骤
- 分配设备 - 查找SDT,从中找到该设备的DCT
- 分配控制器 - 根据DCT找到COCT
- 分配通道 - 根据COCT找到CHCT
- 逻辑设备名到物理设备名的转化
- 使用逻辑设备表LUT
- 分配方式 - 整个系统使用一张LUT;或每个用户分配一张LUT
- SPOOLing技术(假脱机技术)
- 定义 - 主要用于解决高速 CPU
与低速外围设备(如打印机、扫描仪等)之间的速度不匹配问题,提高系统资源利用率和作业处理效率。是一种空间换时间的方法
- 构成
- 输入井与输出井
- 输入缓冲区与输出缓冲区
- 输入进程和输出进程
- 井管理程序 - 在磁盘缓冲区中位进程申请空闲盘块,将要打印的数据放入其中暂存;为用户申请空白的用户打印请求表,用户打印填入其中以后挂载假脱机文件队列上
- 特点
- 每个进程都觉得自己独占打印机,实现了虚拟设备功能
- 提高了I/O速度
- 将独占设备改为共享设备(实际没给任何进程分配设备)
- 定义 - 主要用于解决高速 CPU
与低速外围设备(如打印机、扫描仪等)之间的速度不匹配问题,提高系统资源利用率和作业处理效率。是一种空间换时间的方法
- 设备驱动程序接口
- 定义 - 接收上层抽象I/O请求(read/write等),转化为具体要求后发给设备控制器
- 特点
- 设备驱动程序与系统采用的I/O控制方式紧密相关,与硬件紧密相关
- 目前很多设备驱动程序的基本部分固化在ROM中
- 允许多次同时调用执行
磁盘和固态硬盘
- 组成 - 柱面号盘面号扇区号
- 新磁盘安装操作系统的过程
- 磁盘初始化 - 将磁盘分为扇区以便磁盘控制器进行读写操作(低级格式化或物理格式化)
- 分区 - 将磁盘分为由一个或多个柱面组成的分区(eg:C、D盘),将物理分区进行格式化(高级格式化)
- 引导块 - 启动初始化(自举)程序,初始化CPU、寄存器、设备控制器和内存等。自举程序通常放在ROM中。eg.windowws系统下有一个分区为引导分区,它包含操作系统和设备驱动程序。windows系统将引导代码存储在磁盘的第0号扇区,它被称为主引导记录(MBR)
- 坏块 - 对被损坏的块使用某种机制不去使用它
- 磁盘的存取时间
- 寻道时间Ts = m * n + s,即启动磁头臂的时间加上跨越n条刺刀的时间
- 旋转延迟时间$T_r = \frac{1}{2r}$,磁头定位到读写扇区的时间,其中r为磁盘的转速
- 传输时间$T_t = \frac{b}{rN}$,其中b为读写的字节数,r为磁盘的转速
- 磁盘调度算法
- 先来先服务算法FCFS - 如其名,顺着走
- 最短寻道时间算法SSTF - 每次选择调度的是与当前磁头最近的磁道(容易造成饥饿)
- 扫描算法SCAN - 先向一个方向扫描,直到扫描到最边缘磁道,然后掉头反向扫描
- 循环扫描算法C-SCAN - 与SCAN类似,但是在扫描到最边缘磁道后,直接跳转到第一个磁道
- C-SCAN与C-LOCK - 与上面两个类似,但是移动到最远端请求的磁道即可掉头,而无需到达磁盘端点
- 提高磁盘I/O速度的方案
- 采用磁盘高速缓存
- 调整磁盘请求顺序
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘
- 采用磁盘阵列RAID
- 固态硬盘 - 相关知识点见计算机组成相关章节