九. I/O系统

时间:2024-03-05 22:09:11

I/O系统

I/O管理概述

计算机I/O系统结构

I/O管理示意图

I/O的特点

  • I/O性能经常成为系统性能的瓶颈 
  • 操作系统庞大复杂的原因之一: 资源多、杂,并发,均来自I/O 
    • 速度差异很大
    • 应用
    • 控制接口的复杂性
    • 传送单位 
    • 数据表示 
    • 错误条件
  • 与其他功能联系密切, 特别是文件系统

 

设备的分类 - 按数据组织分

块设备, 以数据块为单位存储、传输信息 传输速率较高、可寻址(随机读写)

字符设备, 以字符为单位存储、传输信息 传输速率低、不可寻址

* 存储设备(磁盘、磁带)
* 传输设备(网卡、Modem)

* 人机交互设备(显示器、 键盘、鼠标)

设备的分类 - 从资源分配角度
  • 独占设备 - 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备(如打印机,磁带等) 
  • 共享设备 - 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘)
  • 虚设备 - 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备. 目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率   (实例: Spooling技术, 利用虚设备技术 - 用硬盘模拟输出输入设备)

I/O管理的目标和任务

(1) 按照用户的请求,控制设备的各种操作,完成I/O设 备与内存之间的数据交换,最终完成用户的I/O请求

  • 设备分配与回收
    • 记录设备的状态
    • 根据用户的请求和设备的类型,采用一定的分配算 法,选择一条数据通路
  • 执行设备驱动程序, 实现真正的I/O操作 
  • 设备中断处理: 处理外部设备的中断
  • 缓冲区管理: 管理I/O缓冲区

(2) 建立方便、统一的独立于设备的接口

  •     方便性: 向用户提供使用外部设备的方便接口, 使用户编程时不考虑设备的复杂物理特性
  •  统一性: 对不同的设备采取 统一的操作方式,即在用户 程序中使用的是逻辑设备
    • 逻辑设备与物理设备
    • 屏蔽硬件细节(设备的物理 特性、错误处理、不同I/O过程的差异性) 
  •     通用性:  种类繁多、结构各异 →设计简单、避免错误→采用统一的方式处理所有设备

(3) 充分利用各种技术(通道,中断,缓冲,异步I/O等)提高CPU与设备、设备与设备之间的并行工作能 力,充分利用资源,提高资源利用率. (性能CPU与I/O的速度差别大→减少由于速度差异造成 的整体性能开销→尽量使两者交叠运行)

  •  并行性
  •  均衡性(使设备充分忙碌)

(4) 保护设备传送或管理的数据应该是安全的、不被破坏的、保密的 

I/O硬件组成

I/O设备组成

I/O设备一般由机械和电子两部分组成

(1)机械部分是设备本身(物理装置) (2)电子部分又称设备控制器(或适配器)

– (端口)地址译码

– 按照主机与设备之间约定的格式和过程接受计算 机发来的数据和控制信号 或 向主机发送数据和 状态信号

– 将计算机的数字信号转换成机械部分能识别的模 拟信号,或反之

– 实现设备内部硬件缓冲、数据加工等提高性能或 增强功能

设备接口 - 控制器的作用

  •  操作系统将命令写入控制器的接口寄存器(或接口缓冲 区)中,以实现输入/输出,并从接口寄存器读取状态 信息或结果信息
  •  当控制器接受一条命令后,可独立于CPU完成指定操作,CPU可以另外执行其他计算;命令完成时,控制器产生一 个中断,CPU响应中断,控制转给操作系统;通过读控制 器寄存器中的信息,获得操作结果和设备状态
  •   控制器与设备之间的接口常常是一个低级接口
  •   控制器的任务:把串行的位流转换为字节块,并进行必 要的错误修正:首先,控制器按位进行组装,然后存入 控制器内部的缓冲区中形成以字节为单位的块;在对块 验证检查和并证明无错误时,再将它复制到内存中

I/O端口地址

  • I/O端口地址:接口电路中每个寄存器具有的、唯一的地 址,是个整数
  • 所有I/O端口地址形成I/O端口空间(受到保护)
  • I/O指令形式与I/O地址是相互关联的, 主要有两种形式: 
    • 内存映像编址(内存映像I/O模式)
    • I/O独立编址(I/O专用指令)

内存映像编址

  • 分配给系统中所有端口的地址空间与内存的地址空 间统一编址
  • 把I/O端口看作一个存储单元,对I/O的读写操作等 同于对内存的操作
  • 优点
    • 凡是可对内存操作的指令都可对I/O端口操作 
    • 不需要专门的I/O指令
    • I/O端口可占有较大的地址空间
  • 缺点
    • 占用内存空间

内存映射I/O的优点

  • 不需要特殊的保护机制来阻止用户进程执行I/O操作  操作系统必须要做的事情:避免把包含控制寄存器的那部分地址空间放入任何用户的虚拟地址空间之中
  • 可以引用内存的每一条指令也可以引用控制寄存器.  例如,如果指令TEST可以测试一个内存字是否为0,那么它 也可以用来测试一个控制寄存器是否为0

内存映射I/O的缺点

  •  对一个设备控制寄存器不能进行高速缓存

  • 考虑以下汇编代码循环,第一次引用PORT_4将导致它被高 速缓存,随后的引用将只从高速缓存中取值并且不会再查 询设备,之后当设备最终变为就绪时,软件将没有办法发 现这一点,结果循环将永远进行下去

  • 为避免这一情形,硬件必须针对每个页面具备选择性禁用 高速缓存的能力,操作系统必须管理选择性高速缓存,所 以这一特性为硬件和操作系统两者增添了额外的复杂性

I/O控制方式 

轮询:

中断驱动I/O:

I/O软件组成 

I/O软件设计

分层的设计思想:

  • 把I/O软件组织成多个层次

  • 每一层都执行操作系统所需要的功能的一个相关子集, 它依赖于更低一层所执行的更原始的功能,从而可以 隐藏这些功能的细节;同时,它又给高一层提供服务

  • 较低层考虑硬件的特性,并向较高层软件提供接口

  • 较高层不依赖于硬件,并向用户提供一个友好的、清 晰的、简单的、功能更强的接口

I/O软件层次

设备独立性(设备无关性, 好处: 1. 设备分配时的灵活性 2.易于实现I/O重定向)

用户编写的程序可以访问任意I/O设备,无需事先指定设备

从用户角度:用户在编制程序时,使用逻辑设备名, 由系统实现从逻辑设备到物理设备(实际设备)的 转换,并实施I/O操作

从系统角度:设计并实现I/O软件时,除了直接与设备打交道的低层软件之外,其他部分的软件不依赖于硬件

I/O相关技术

 

I/O性能问题

I/O性能问题

使CPU利用率尽可能不被I/O降低 

使CPU尽可能摆脱I/O

 减少或缓解速度差距 → 缓冲技术
 使CPU不等待I/O → 异步I/O
 让CPU摆脱I/O操作 → DMA、通道

异步传输

  • Windows提供两种模式的I/O操作: 异步和同步
  • 异步模式: 用于优化应用程序的性能
    • 通过异步I/O,应用程序可以启动一个I/O操作,然后在I/O请求执行的同时继续处理
    • 基本思想:填充I/O操作间等待的CPU时间
  • 同步I/O: 应用程序被阻塞直到I/O操作完成

同步传输I/O流程

异步传输I/O流程