操作系统第六章--设备管理

操作系统第六章--设备管理

操作系统第六章--设备管理
操作系统第六章--设备管理
  • I/O系统的功能、模型和接口
    • I/O系统的基本功能
      • 1. 隐藏物理设备的细节
      • 2. 与设备的无关性
      • 3. 提高处理机和I/O设备的利用率
      • 4. 对I/O设备进行控制
      • 5. 确保对设备的正确共享
      • 6. 错误处理
    • I/O系统的层次结构和模型
      • I/O软件的层次结构
        • 用户层软件
        • 设备独立性软件
        • 设备驱动程序
        • 中断处理程序
    • I/O系统接口
      • 块设备接口
      • 流设备接口
      • 网络通信接口
  • I/O设备和设备控制器
    • I/O设备
      • 1)按使用特性分类
        • 存储设备:也称外存、辅存,如磁盘
        • I/O设备:键盘、鼠标、打印机;输入设备,输出设备和交互设备(如显示器)
      • 2)按传输速率分类
        • 低速:键盘、鼠标
        • 中速:打印机
        • 高速:磁盘、磁带机、光盘机
    • 设备控制器:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
      • 设备控制器的基本功能
      • 设备控制器的组成
        • 设备控制器与处理机的接口
        • 设备控制器与设备的接口
        • I/O逻辑
    • 内存映像I/O(驱动程序访问控制
      • 利用特定的I/O指令
      • 内存映像I/O
    • I/O通道
      • I/O通道设备的引入:独立完成I/O操作的组织、管理及其结束处理,减少CPU对I/O的干预
      • 通道类型
        • 字节多路通道:1对多子通道
        • 数组选择通道:只含有一个分配型子通道
        • 数组多路通道:含有多·个分配型子通道
      • 瓶颈问题解决:增加通路而不是通道
        • 说人话:把一个设备连接到多个控制器上,一个控制器连接到多个通道上
      • 通道控制控制器,设备在控制器控制下工作
  • 中断机构和中断处理程序
    • 中断简介
      • 中断和陷入
        • 外中断:CPU暂停正在执行的程序,保留CPU环境后,自动转去执行该I/O设备的中断处理程序;执行完后,再回到断点,继续执行原来的程序。
        • 陷入(内中断):由CPU内部事件所引起的中断,如非法指令、地址越界等。
      • 中断向量表和中断优先级
        • 中断向量表:存放每个中断的处理程序的入口地址,由中断控制器确定中断请求的中断号,然后用中断号查中断向量表获得处理程序的入口地址,以便可以执行处理程序。
        • 中断优先级:多个中断同时出现时,用以区别它们的紧急程度。
      • 对多中断源的处理方式
        • 屏蔽(禁止)中断:中断处理不再响应中断
        • 嵌套中断:在优先级的中断处理中响应更高优先级的中断,从而形成嵌套
    • 中断处理程序
      • 测定是否有未响应的中断信号。通常的中断在一条指令执行完后进行检查并处理。
      • 保护被中断进程的CPU环境。
      • 转入相应的设备处理程序。
      • 中断处理。
      • 恢复CPU的现场并退出中断。
  • 设备驱动程序
    • 主要任务
      • 接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。
    • 设备驱动程序概述
      • 设备驱动程序的功能
        • 接受上层命令并转换为设备的低级命令
        • 检查I/O命令的合法性
        • 启动I/O设备,但不执行I/O操作(由控制器执行)
        • I/O设备中断处理
      • 设备驱动程序的特点
      • 设备处理方式
    • 设备驱动程序的处理过程
      • 抽象I/O请求转换为具体要求
      • 对请求服务进行合法性检查
      • 读取设备的状态寄存器检查设备的状态
      • 传送必要的参数
      • 启动I/O设备
    • 对I/O设备的控制方式(重点)
      • 程序轮询
        • 启动I/O操作时把状态寄存器中的忙/闲标志busy 置为1,然后循环检查状态寄存器中的忙/闲标志busy是否变为0,以判断I/O操作是否结束,在确定结束后再进行下一步操作。(不停地问数据输入好了没有)
      • 中断
        • 即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。
        • 字(节)为单位进行I/O的
      • 直接存储访问DMA
        • (1) 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块。   
        • (2) 所传送的数据是从设备直接送入内存的,或者相反。   
        • (3) 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的
      • I/O通道和I/O处理机
        • 数据传输的单位由一个数据块变为一组数据块
        • 通道是通过执行通道程序并与设备控制器共同实现对I/O设备的控制的。通道程序是由一系列通道指令(或称为通道命令)所构成的。 
  • 与设备无关的I/O软件
    • 与设备无关软件的基本概念
      • 设备独立性:应用程序中所用的设备,不局限于使用某个具体的物理设备。
      • 为了实现设备独立性,必须再在设备驱动程序之上设置一层软件,称为与设备无关的I/O软件,或设备独立性软件.
      • 1. 以物理设备名使用设备
      • 2. 引入了逻辑设备名
      • 3. 逻辑设备名称到物理设备名称的转换
    • 与设备无关的软件
      • 1. 设备驱动程序的统一接口
      • 2. 缓存管理
      • 3. 差错控制
      • 4. 对独立设备的分配与回收
      • 5. 独立于设备的逻辑数据块
    • 设备分配
      • 设备分配中的数据结构
        • 设备控制表DCT
        • 控制器控制表COCT、通道控制表CHCT、系统设备表SDT
      • 设备分配时应考虑的因素
        • 设备的固有属性(独占、共享、虚拟设备)
        • 设备分配算法(先来先服务、优先级高者优先)
        • 设备分配中的安全性(安全分配方式、不安全分配方式)
      • 独占设备的分配程序
        • 基本的设备分配程序(分配设备、分配控制器、分配通道)
    • 逻辑设备名到物理设备名映射的实现
      • 逻辑设备表LUT
        • 在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址
      • 逻辑设备表的设置问题
        • 第一种方式,是在整个系统中只设置一张LUT。   
        • 第二种方式,是为每个用户设置一张LUT。 
  • 用户层的I/O软件
    • 系统调用与库函数
      • 系统调用:应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。
      • 库函数:用户程序通过调用对应的库函数使用系统调用,这些库函数与调用程序连接在一起,被嵌入在运行时装入内存的二进制程序中。
    • 假脱机系统Spooling
      • 假脱机技术:利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反。
      • 系统组成
        • 输入井:收容I/O设备输入的信息;输出井:收容用户程序的输出数据
        • 输入缓冲区和输出缓冲区:缓和CPU和磁盘之间速度不匹配
        • 输入进程和输出进程
        • 井管理程序:控制作业与磁盘井之间信息的交换
      • 系统特点
        • 提高了I/O的速度
        • 将独占设备改造为共享设备
        • 实现了虚拟设备功能
      • 假脱机打印机系统
        • 磁盘缓冲区
        • 打印缓冲区
        • 假脱机管理进程和假脱机打印进程
      • 守护进程daemon:为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程实现的功能,如为用户在磁盘缓冲区中申请一个空闲盘块,并将要打印的数据送入其中,将该盘块的首址返回给请求进程。
  • 缓冲区管理
    • 缓冲的引入
      • (1) 缓和CPU与I/O设备间速度不匹配的矛盾。
      • (2) 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。   
      • (3) 解决数据粒度不匹配的问题。   
      • (4) 提高CPU和I/O设备之间的并行性。
    • 单缓冲区和双缓冲区
      • 单缓冲区:在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区
      • 双缓冲区:解决生产者和消费者在使用缓冲区时的互斥问题
    • 环形缓冲区:将多个缓冲区构成环形,通过三个指针指明可用的缓冲区访问及当前使用的缓冲区
    • 缓冲池:存在于主存,通过三个队列管理缓冲区
  • 磁盘存储器的性能和调度
    • 磁盘简述
      • 磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface),每个盘面上有若干个磁道(Track),磁道之间留有必要的间隙(Gap)。为使处理简单起见,在每条磁道上可存储相同数目的二进制位。 
      • 磁盘类型:固定头磁盘、移动头磁盘
      • 磁盘访问时间:寻道时间+旋转延迟+传输时间
    • 早期的磁盘调度算法
      • 先来先服务FCFS
      • 最短寻道时间优先SSTF
    • 基于扫描的磁盘调度算法
      • 扫描SCAN算法:解决优先级低的进程饥饿
        • 当磁头正在自里向外移动时,下一个访问的磁道是在当前磁道之外,又是距离最近的,直到访问到最外面的磁道后,更改磁臂为自外向里(顺着一个方向扫描到头)
      • 循环扫描CSCAN算法:解决新进程等待时间过长
        • 当扫描到头之后,直接从最里面的磁道开始扫描
      • NStepSCAN和FSCAN调度算法