
(以下内容全部出自上述课程)
目录
- I/O设备的概念和分类
-
- [1. 什么是I/O设备](#1. 什么是I/O设备)
- [2. I/O设备的分类](#2. I/O设备的分类)
-
- [2.1 按使用特性](#2.1 按使用特性)
- [2.2 按传输速率分类](#2.2 按传输速率分类)
- [2.3 按信息交换的单位分类](#2.3 按信息交换的单位分类)
- [3. 小结](#3. 小结)
- I/O控制器
-
- [1. I/O设备的机械部件](#1. I/O设备的机械部件)
- [2. I/O设备的电子部件--I/O控制器](#2. I/O设备的电子部件--I/O控制器)
- [3. I/O控制器的组成](#3. I/O控制器的组成)
- [4. 内存映像I/O vs 寄存器独立编址](#4. 内存映像I/O vs 寄存器独立编址)
- [5. 小结](#5. 小结)
- I/O控制方式
-
- [1. 程序直接控制方式](#1. 程序直接控制方式)
- [2. 中断驱动方式](#2. 中断驱动方式)
- [3. DMA方式](#3. DMA方式)
- [4. 通道控制方式](#4. 通道控制方式)
- [5. 小结](#5. 小结)
- I/O软件层次结构
-
- [1. 用户层软件](#1. 用户层软件)
- [2. 设备独立性软件](#2. 设备独立性软件)
- [3. 为什么需要不同的驱动?](#3. 为什么需要不同的驱动?)
- [4. 设备驱动程序](#4. 设备驱动程序)
- [5. 中断处理程序](#5. 中断处理程序)
- [6. 小结](#6. 小结)
- 输入输出应用程序接口和驱动程序接口
-
- [1. 输入/输出应用程序接口](#1. 输入/输出应用程序接口)
- [2. 阻塞/非阻塞I/O](#2. 阻塞/非阻塞I/O)
- [3. 设备驱动程序接口](#3. 设备驱动程序接口)
- I/O核心子系统
-
- [1/ I/O调度](#1/ I/O调度)
- [2. 设备保护](#2. 设备保护)
- [3. 小结](#3. 小结)
- 假脱机技术
-
- [1. 什么是脱机技术](#1. 什么是脱机技术)
- [2. 假脱机技术](#2. 假脱机技术)
-
- [2.1 输入井和输出井](#2.1 输入井和输出井)
- [2.2 输入进程和输出进程](#2.2 输入进程和输出进程)
- [2.3 输入/输出缓冲区](#2.3 输入/输出缓冲区)
- [3. 共享打印机原理分析](#3. 共享打印机原理分析)
- [4. 小结](#4. 小结)
I/O设备的概念和分类

1. 什么是I/O设备


2. I/O设备的分类
2.1 按使用特性

2.2 按传输速率分类

2.3 按信息交换的单位分类

3. 小结

I/O控制器

1. I/O设备的机械部件

2. I/O设备的电子部件--I/O控制器
- 控制寄存器:接受和识别CPU发出的命令
- 状态寄存器:向CPU报告设备的状态
- 数据寄存器:数据交换(中转站)
- 地址:地址识别(识别每个寄存器的位置)

3. I/O控制器的组成
- CPU --数据总线--> 数据控制器/控制寄存器
- CPU --地址线/控制线--> I/O逻辑 -->数据存储器/控制器与设备的接口

- 一个I/O控制器可能对应多个设备:就是控制器与设备的接口用得多
- 这三个寄存器打包成一个套装,一个套装对应一个设备,所以设备多套餐多,也就是这三个寄存器会不止一组。

4. 内存映像I/O vs 寄存器独立编址
区别就是寄存器有没有和内存统一编址。

5. 小结

I/O控制方式

1. 程序直接控制方式
标志:不断轮询
- CPU-->读-->1-->轮询
- 数据√-->控制器-->数据寄存器&0-->CPU√
- CPU-->数据:数据寄存器->CPU寄存器->内存
- 指令继续

输入和输出的数据最终都需要放入内存。

缺点:CPU如果没有接收到可以继续的信号就一直轮询,会一直占用CPU导致CPU的利用率降低。

2. 中断驱动方式
为了使CPU的利用率提高,就需要打断轮询,所以出现了中断驱动方式。
主要就是在CPU因为无法进行下一步导致轮询的时候,打断他让他去做别的事儿,等可以进行下一步了再让他回来。
但是,CPU被打断去做别的事情的时候,用的是别人的环境,回来做没做完的事儿肯定要恢复之前的环境。
然而保存运行环境 就又是一个很大的工程。


3. DMA方式
前几次数据的传送单位都是字 ,改进之后的传送单位是块 。
因为使用到CPU的缺点实在是太多了,所以干脆直接把他优化掉。
数据:设备-->内存

因为把CPU优化掉了,所以需要有取代它的东西,就是DMA控制器。
DMA控制器内部结构和I/O控制器差不多。


4. 通道控制方式
就相当于CPU把自己应该干的事情托管给通道了。
CPU告诉通道自己需要完成什么任务,交代之后就去忙别的事儿了。(像极了人与ai)


5. 小结

I/O软件层次结构

1. 用户层软件
就是我们平时使用的软件,比如我们打字什么的就算交互,给了我们打字的这个功能。
但是实际上打字的底层原理是利用了接口调用库函数来实现打字操作的。

2. 设备独立性软件







3. 为什么需要不同的驱动?
一句话概括就是,每个商家的硬件配置都不同(比如状态位什么的),需要驱动 来告诉软件自己的各种信息。
相当于一个毛遂自荐的说明书。




4. 设备驱动程序

5. 中断处理程序

6. 小结


输入输出应用程序接口和驱动程序接口

1. 输入/输出应用程序接口
不同的硬件所具备的输入输出方式都不同,所以我们不能用单一的系统调用接口来调用所有的设备。
硬件大致分为三类,相对应接口也就分为三类:字符设备、块设备、网络设备。

- 字符:仅输入输出、无查找作用
- 块:输入输出、查找
- 网络:绑定协议

网络设备传送数据的过程示意图: - fd-->socket:设备无关性软件 调用网络控制器驱动程序,socket创建一个网络套接字,bind同时绑定本地端口
- 数据:用户空间-->内核空间-->网卡
- connect将套接字连接到远程地址
- 接收方也fd-->socket:创建套接字,绑定端口,用来接收这个数据
- 然后数据就穿越网线到达目的主机了

2. 阻塞/非阻塞I/O

3. 设备驱动程序接口



I/O核心子系统

1/ I/O调度

2. 设备保护

3. 小结

假脱机技术

1. 什么是脱机技术
手工操作阶段,因为纸带机过慢,CPU处理速度过快,就导致速度分离(就是速度相差太大了)

为了改变速率差,批处理阶段引入了脱机技术,就是用速度比纸带机更快的磁带在中间作为中转站 ,CPU和磁带之间够快就可以多输出,磁带和纸带机中间慢慢处理信息,也不会拉慢CPU的利用率。
ps:其实好多东西都可以用加一层来改善,比如耦合度、速率、利用率神马的。一层不够就再加一层√

2. 假脱机技术
脱机技术是用硬件来搞定的,假脱机技术就是用软件来实现脱机技术。
2.1 输入井和输出井
就是上文的磁带,起到一个中转站的作用。


2.2 输入进程和输出进程
就是上文磁带和纸带机中间 进行传输的进程。
进行真输入和真输出的操作(叫作真,其实是为了区分主机和磁带之间的假输入输出)


2.3 输入/输出缓冲区
就是上文纸带机和磁带中间额外存放数据的区域。

3. 共享打印机原理分析
一句话总结就是利用缓冲区,缓冲区就好比你去打印的时候的老板,打印机在打印别人的东西,你就把自己要打印的东西交给老板,让他打印完别人的就打印你自己的。



4. 小结
