一. 内容总览

I/O系统是OS的重要组成部分,用于管理诸如打印机、扫描仪等I/O设备,以及用于存储数据,如磁盘驱动器和磁带机等各种存储设备。

操作系统——输入输出系统_操作系统

二. I/O系统

(1). I/O系统管理的主要对象

是I/O设备和相应的设备控制器

(2). I/O系统的主要任务

完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便的使用这些设备提供手段

(3). I/O系统的基本功能

操作系统——输入输出系统_信号线_02

三. I/O设备的基本概念和分类

操作系统——输入输出系统_操作系统_03

(1). 什么是I/O设备

操作系统——输入输出系统_操作系统_04

(2). I/O设备的分类

1. 按使用特性分类

操作系统——输入输出系统_操作系统_05

2. 按传输速率进行分类

操作系统——输入输出系统_数据_06

3. 按信息交换的单位进行分类

操作系统——输入输出系统_信号线_07

四. I/O控制器(设备控制器)

操作系统——输入输出系统_数据_08

(1). I/O设备所包含的内容

操作系统——输入输出系统_数据_09

1. 机械部件

I/O设备的机械部件主要用来执行具体的I/O操作。

如:我们看得见摸得着的鼠标/键盘的按钮,显示器的LED屏;移动硬盘的磁臂、磁盘的盘面。

2. 电子部件

I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板,用来对I/O设备执行控制

如:设备控制器或适配器、网卡

(2). I/O设备与控制器之间的接口

通常,设备并不是直接与CPU进行通信,而是与设备控制器进行通信,因此,在I/O设备中应该包含与设备控制器之间的接口,在该接口中有三种类型信号,各对应一条信号线

操作系统——输入输出系统_数据_10

1. 数据信号线

用于在设备与设备控制器之间传送数据信号

对输入设备而言,由外界输入的信号转换器转换后,所形成的数据通常先送人到缓冲器中,当数据量达到一定bit后,在从缓冲器通过一组数据信号线传送给设备控制器。

对输出设备而言,将从设备控制器经过数据信号线传送来的一批数据先暂存在缓冲器中,经转换器做适当的转换后,再逐个字符的输出

2. 控制信号线

作为由设备控制器向I/O设备发送控制信号时的通路

该信号规定了设备将要执行的操作

如:读操作、写操作

3. 状态信号线

用于传送指示设备当前状态的信号

(3). I/O设备的电子部件(I/O控制器)

1. I/O控制器的功能

主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换,接受CPU发来的命令,控制I/O设备工作

操作系统——输入输出系统_数据信号_11

2. I/O控制器的组成

操作系统——输入输出系统_数据信号_12

(1). 设备控制器与处理机的接口
(2). 设备控制器与设备的接口
(3). I/O逻辑
  1. 需要注意的小细节
  2. 内存映像I/O和寄存器独立编址的区别

五. I/O控制方式

操作系统——输入输出系统_数据_13

(1). 程序直接控制方式

  1. 当I/O设备没有准备好,CPU一直进行轮询的检查控制器的状态
  2. 操作系统——输入输出系统_数据_14


  3. 当I/O设备准备好了之后
  4. 操作系统——输入输出系统_数据信号_15


  5. 程序控制方式流程图
  6. 操作系统——输入输出系统_信号线_16


操作系统——输入输出系统_数据_17

(2). 中断驱动方式

操作系统——输入输出系统_操作系统_18


操作系统——输入输出系统_操作系统_19

(3). DMA方式

操作系统——输入输出系统_数据_20


操作系统——输入输出系统_数据_21


操作系统——输入输出系统_信号线_22

(4). 通道控制方式

操作系统——输入输出系统_操作系统_23


操作系统——输入输出系统_数据信号_24


操作系统——输入输出系统_数据信号_25

1. I/O通道设备的引入

2. 通道类型

3. 通道的瓶颈

  1. 瓶颈的原因

    通道价格昂贵,致使机器中所设置的通道数量势必较少,进而造成整个系统吞吐量的下降

操作系统——输入输出系统_数据信号_26

  1. 解决瓶颈的办法

    增加设备到主机间的通路而不增加通道

操作系统——输入输出系统_数据_27

(5). 上述四种I/O控制方式的比较

操作系统——输入输出系统_数据信号_28

六. I/O软件(I/O系统)的层次结构

I/O软件涉及的面很宽,向下与硬件有密切关系,向上又与文件系统,虚拟存储器系统和用户直接交互,它们都需要I/O系统来实现I/O操作。

为了使十分复杂的I/O软件能具有清晰的结构、更好的可移植性和易适应性,目前已普遍采用层次式结构的I/O系统

1. I/O系统中各种模块之间的层次视图

操作系统——输入输出系统_操作系统_29

(1). I/O接口

在I/O系统与高层之间的接口中,根据设备类型不同,有进一步分为若干个接口。

上图所示的接口:

  1. 块设备接口

    是块设备管理程序与高层之间的接口

    反映了大部分磁盘存储器和光盘存储器的本质特征,用于控制该类设备的输入或输出。
  2. 流设备接口

    是流设备管理程序与高层之间的接口,该接口又称字符设备接口

    反映了大部分字符设备的本质特征,用于控制字符设备的输入或输出
  3. 网络接口

    现代OS中,都提高面向网络功能,首先需要通过某种方式把计算机连接到网络上,
    同时OS必须提供相应的网络软件和网络通信接口,是计算机能通过网络与网络上的其他计算机进行通信或上网浏览

2. I/O系统的分层

操作系统——输入输出系统_操作系统_30


操作系统——输入输出系统_数据信号_31

(1). 用户层软件实现的功能

操作系统——输入输出系统_数据_32

操作系统——输入输出系统_信号线_33

(2). 设备独立性软件实现的功能

操作系统——输入输出系统_数据信号_34

1. 向上层提供统一的调用接口

操作系统——输入输出系统_操作系统_35

2. 设备的保护

操作系统——输入输出系统_信号线_36

3. 差错处理

操作系统——输入输出系统_操作系统_37

4. 设备的分配与回收

操作系统——输入输出系统_操作系统_38

5. 数据缓冲区管理

操作系统——输入输出系统_数据信号_39

6. 建立逻辑设备名到物理设备名的映射关系

操作系统——输入输出系统_操作系统_40


操作系统——输入输出系统_数据信号_41

  1. 为什么不同的设备需要不同的设备驱动程序?
  2. 操作系统——输入输出系统_数据_42

  3. 举例:
  4. 操作系统——输入输出系统_操作系统_43


  5. 操作系统——输入输出系统_数据_44

  6. 总结:不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作

(3). 设备驱动程序实现的功能

操作系统——输入输出系统_操作系统_45


操作系统——输入输出系统_数据_46

(4). 中断处理程序实现的功能

操作系统——输入输出系统_信号线_47


操作系统——输入输出系统_操作系统_48

1. 中断简介

2. 中断处理流程

操作系统——输入输出系统_操作系统_49

(5). I/O核心子系统

操作系统——输入输出系统_数据_50

1. 这些功能在哪些层次实现呢?

操作系统——输入输出系统_数据_51

2. I/O调度

操作系统——输入输出系统_数据_52

3. 设备保护

操作系统——输入输出系统_数据信号_53

4. 假脱机技术(SPOOLing技术)

操作系统——输入输出系统_数据_54


操作系统——输入输出系统_数据信号_55

(1). 什么是脱机技术

操作系统——输入输出系统_操作系统_56


操作系统——输入输出系统_信号线_57

(2). 假脱机技术(SPOOLing技术)
1. 输入井和输出井

操作系统——输入输出系统_信号线_58


操作系统——输入输出系统_操作系统_59

2. 输入进程和输出进程

操作系统——输入输出系统_信号线_60


操作系统——输入输出系统_操作系统_61

3. 输入缓冲区和输出缓冲区

操作系统——输入输出系统_信号线_62

(3). SPOOLing技术的应用

操作系统——输入输出系统_数据信号_63


操作系统——输入输出系统_数据信号_64


操作系统——输入输出系统_操作系统_65

5. 设备的分配与回收

操作系统——输入输出系统_数据_66


操作系统——输入输出系统_操作系统_67

(1). 设备分配时应考虑的因素

操作系统——输入输出系统_数据_68

1. 设备的固有属性

操作系统——输入输出系统_操作系统_69

2. 设备的分配算法

操作系统——输入输出系统_信号线_70

3. 设备分配中的安全性

操作系统——输入输出系统_数据_71

(2). 静态分配与动态分配

操作系统——输入输出系统_数据_72

(3). 设备分配管理中的数据结构

操作系统——输入输出系统_信号线_73


操作系统——输入输出系统_信号线_74


操作系统——输入输出系统_操作系统_75


操作系统——输入输出系统_操作系统_76


操作系统——输入输出系统_操作系统_77

(4). 设备分配的步骤

操作系统——输入输出系统_数据信号_78


操作系统——输入输出系统_数据_79


操作系统——输入输出系统_数据信号_80


操作系统——输入输出系统_信号线_81

(5). 设备分配步骤的改进方法

操作系统——输入输出系统_操作系统_82


操作系统——输入输出系统_信号线_83


操作系统——输入输出系统_数据_84

6. 缓冲区管理

操作系统——输入输出系统_信号线_85

操作系统——输入输出系统_操作系统_86


操作系统——输入输出系统_数据_87

(1). 什么是缓存区?

操作系统——输入输出系统_数据_88

(2). 缓冲区有什么作用?

操作系统——输入输出系统_操作系统_89


操作系统——输入输出系统_信号线_90

(3). 单缓冲

操作系统——输入输出系统_操作系统_91

  1. 计算每处理一块数据平均需要时间
    情况一:
  2. 操作系统——输入输出系统_数据_92

  3. 情况二:
  4. 操作系统——输入输出系统_信号线_93

  5. 结论:
  6. 操作系统——输入输出系统_操作系统_94

  7. 使用单缓冲区进行通信举例:
  8. 操作系统——输入输出系统_信号线_95


(4). 双缓冲

操作系统——输入输出系统_数据_96

  1. 计算每处理一块数据平均需要时间
    情况一:
  2. 操作系统——输入输出系统_操作系统_97

  3. 情况二:
  4. 操作系统——输入输出系统_操作系统_98

  5. 结论:
  6. 操作系统——输入输出系统_数据_99

  7. 使用双缓冲区进行通信举例:
  8. 操作系统——输入输出系统_数据信号_100


(5). 循环缓冲区

操作系统——输入输出系统_数据信号_101

(6). 缓冲池
  1. 输入进程请求输入数据
  2. 操作系统——输入输出系统_数据_102


  3. 计算进程想要取得一块输入数据
  4. 操作系统——输入输出系统_数据_103


  5. 计算进程想要将准备好额数据冲入缓冲区
  6. 操作系统——输入输出系统_数据信号_104


  7. 输出进程请求输出数据
  8. 操作系统——输入输出系统_操作系统_105