OS-S5 设备管理

§5 设备管理

C1 IO 管理

1)功能:

  • 提供统一的独立于设备的用户接口:命令接口和编程接口
  • 分配和释放设备
  • 设备访问控制:并发访问和差错处理、访问权限控制
  • IO缓冲和IO调度,提升IO效率

2)分层设计思想:每一层执行OS功能的一个子集,依赖于第一层的更原始的功能,同时为高一层服务。高层不依赖于硬件,为用户提供友好清晰简单的功能强的接口

  • 用户层次:IO系统调用
  • 中间层:逻辑IO → 设备IO → 调度控制
    • 逻辑IO:完成设备工作,分配回收设备,准备数据
    • 设备驱动:驱动设备控制器
    • 设备控制器:IO调度
  • 底层硬件

3)设备分类:

  • 数据组织形式:

    • 块设备:数据块传输,高速率,可寻址(随机读写)
    • 字符设备:字符传输,低速率,不可寻址
  • 按用途:存储设备、传输设备、人机交互设备

  • 按资源分配:

    • 独占设备:只允许进程互斥使用,通常是慢速设备,如打印机

    • 共享设备:多个进程交叉使用,如硬盘

    • 虚设备:一类设备上模拟另一类设备,共享设备上模拟独占设备,高速设备上模拟低俗设备,如Spooling技术将打印机变成共享设备

4)设备控制器

  • 功能:

    • 识别CPU指令
    • 数据交换:CPU ↔ 控制器 ↔ 设备
    • 设备状态记录和报告
    • 缓冲区
    • 数据差错检测
  • 组成:

    • 面向CPU接口:数据寄存器、控制寄存器、状态寄存器,采取内存映射/专门IO指令访问
    • 面向设备接口:数据信号、控制信号、状态信号
    • IO逻辑:用于实现CPU对IO设备控制
  • IO端口地址:接口电路中每个寄存器有唯一地址

    • 所有IO端口地址形成IO端口地址空间,受OS保护

    • IO编制与IO指令形式:

      • 内存映射编址- 内存映像IO

        • 控制器内存/寄存器作为物理内存空间一部分)
        • 不允许对控制寄存器的内存进行高速缓存
        • OS不应将其地址空间放入用户虚拟地址空间
      • IO独立编址 -专用IO指令

        • 优点:外设不占用内存地址空间;编程时易区分是内存操作还是IO操作
        • 缺点:IO指令少,不灵活
        • Intel体系架构in/out指令

5)设备驱动程序

  • 存放与设备密切相关的代码,每个处理一种设备类型

  • 接受与设备无关的抽象请求并执行。驱动程序负责设置设备寄存器,并监督执行

  • 组成

    • 自动配置和初始化子程序:检测设备并初始化,仅初始化一次
    • IO操作子程序:此时和调用程序仍是同一程序,只是转入内核态
    • 中断服务子程序:负责处理中断
  • 和应用程序区别:没有main,以模块初始化函数为入口;初始化后不再允许,等待系统调用;不使用标准C库

  • 动态装载:

    • UNIX将内核与设备驱动程序链接后重启系统
    • Windows使用一个文件告知操作系统,在重启时装载
    • USB及IEEE1384设备动态加载驱动程序,不需要重启

6)IO控制技术:

  • 程序控制IO:轮询,适用于高速设备

    • 向设备驱动程序提出IO请求
    • 设备驱动程序查询状态寄存器,若准备好则设置控制寄存器
    • 轮询状态寄存器
    • 将数据寄存器数存回用户空间,告知完成
  • 中断驱动方式:

    • 向设备驱动程序提出IO请求
    • 设备驱动程序查询状态寄存器状态,若准备好则设置控制寄存器
    • 将设备状态记录在设备状态表后执行其它工作
    • 设备完成IO后产生中断信号,中断处理程序交付设备管理程序
    • 查询设备状态表,拷贝数据给请求进程,解除请求进程IO阻塞
  • 直接存储访问:DMA,适用于高速设备

    • 设置DMA控制器寄存器值

    • DMA控制器自动完成外设与内存数据拷贝

    • 完成后DMA发出中断


    • 优点:CPU无需控制

    • 缺点:每个设备都占用一个DMA控制器,设备增加时需要新的控制器;DMA操作可能竞争总线

  • IO通道控制方式:

    • IO通道:专门的IO处理器,独立于CPU,有自己的指令体系。通道指令组成通道程序,存放在内存中,允许复杂IO控制。

    • 优点:一个通道程序可完成多做IO操作,完成复杂IO控制。减少CPU干预;

      一个IO通道可控制多台设备(DMA不行)

    • 缺点:贵

    • 种类:

      • 字节多路通道:在多台设备间轮流切换,每次发一字节数据,适合中低速
      • 数组选择通道:为一台设备成组传送数据,适合高速设备
      • 数组多路通道:适用了多道程序设计的通道程序,为多台设备成组传送

6)设备独立性:

  • 逻辑设备:用户使用逻辑设备名称请求使用设备,实际使用必须使用物理设备
  • 逻辑设备表LUT:逻辑设备名+物理设备名+驱动入口地址。
    • 单LUT设备表:不允许有重复的逻辑设备名,多用户实用
    • 多LUT设备表:每个用户一张LUT
  • 优点:设备分配灵活,可调度设备而不是固定设备;易于实现IO重定向

7)IO设备分配:

  • 控制结构
    • 系统设备表SDT:记录设备状态和设备控制表DCT入口
    • 设备控制表DCT:
      • 设备(请求)队列队首指针:请求设备IO进程的PCB
      • 设备状态
      • 控制器表指针:设备的设备控制器
      • 重复执行次数:用于传输失败重试
    • 控制器表COCT:每个设备控制器有一张,描述IO控制器配置和状态,如DMA中断号、DMA数据通道的分配
    • 通道控制表CHCT:每个通道一张,描述通道状态
  • 分配策略:
    • 安全性:
      • 安全分配:请求设备IO后阻塞
      • 不安全分配:请求IO后可继续请求其它设备IO,但应当进行安全性检测
    • 分配算法
    • 设备固有属性:独享、共享、虚拟
  • 单/多通路IO设备分配:
    • 单/多通路:一个设备对应一个/多个控制器,控制器对应一个/多个通道
    • 分配设备:查SDT,找到DCT,死锁检测后分配
    • 分配设备控制器:DCT中找到COCT,若控制器空闲则分配
    • 分配通道:找到通道控制表CHCT,分配通道

8)假脱机技术(虚拟设备技术):在设备和用户进程间建立缓冲区,中介IO

  • 组成:
    • 输入井和输出井:模拟脱机输入输出的磁盘
    • 输入缓冲和输出缓冲区:缓解磁盘和CPU速度不匹配
    • 输入进程和输出进程:模拟脱机IO时的外围控制机。输入设备的输入先进入缓冲区,再送到输入井。数据输出先放到输出井,再送到输出缓冲区
  • 作用:模拟共享设备;将虚拟IO时间和实际IO时间分离

C2 缓冲技术

1)缓冲技术:提高设备利用率(匹配CPU与外设处理速度、减少COU中断、提升CPU和IO设备并行度)

2)单缓冲:每发出一个IO请求边分配一个缓冲区

  • 除第一块,每块处理时间为 max { T , T } + T \max \{T_{处理},T_{取出}\}+T_{移动}

3)双缓冲:CPU和外设连续处理而不必等待对方。即移动和处理同时

  • 要求CPU与外设处理速度相近

  • 除第一块,每块处理时间为 max { T , T } \max \{T_{处理},T_{取出}\}

4)环形缓冲:多个缓冲组织成环形。

  • CPU与外设处理速度差异大
  • 管理:
    • 缓冲区分空缓冲区、正在工作缓冲区、满缓冲区
    • 使用3个指针指示上述缓冲区的位置

5)缓冲池:提供多个可供进程共享的缓冲区

  • 管理:
    • 缓冲区分输出缓冲、输入缓冲、空缓冲区
    • 相同类型缓冲组成链表
    • 四种工作方式:收容输入,收容输出,提取输入,提取输出

6)缓冲带来的问题:多次复制一个数据包

C3 IO性能

1)IO流程:

  • 进程发起IO系统调用
  • 陷入内核,进入IO处理
  • 磁盘将文件载入内核内存空间
  • 内核将文件复制到用户内存空间
  • 数据完成复制,唤醒进程,退出内核态

2)阻塞与非阻塞IO

  • 阻塞IO:调用结果返回前,进程被阻塞挂起

  • 非阻塞IO:进程发起IO调用后,返回执行其它任务

3)IO多路复用:允许进程发起多个IO请求。当某个请求到位后,执行其它请求。全部请求到位再通知相应的进程。一二阶段都是阻塞的

5)事件驱动IO:IO第一阶段完成后,通知进程,使其第一阶段非阻塞。而第二阶段仍需要阻塞等待

6)异步IO:第二阶段数据复制完成再通知进程

猜你喜欢

转载自blog.csdn.net/weixin_42935837/article/details/106485649