08-输入输出系统
Posted Oh,mydream!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了08-输入输出系统相关的知识,希望对你有一定的参考价值。
08-输入输出系统
一、概述
1. 输入输出系统的发展概况
1)早期
分散连接
CPU和I/O设备串行工作 程序查询方式
2)接口模块和DMA阶段
总线连接
CPU和I/O设备 并行工作 中断方式 DMA方式
3)具有通道结构的阶段
4)具有I/O处理机的阶段
2. 输入输出系统的组成
1) I/O软件
- I/O指令 CPU指令号的一部分 操作码 命令码 设备码 操作码指出是操作I/O设备 命令码指出I/O设备的执行命令 设备码指出操作哪台设备,设备码也被叫做I/O设备端口
- 通道指令 通道自身的指令 指出数组的首地址、传送字数、操作命令 如IBM/370 通道指令为64位
2) 硬件 - 设备 I/O接口
- 设备 设备控制器 通道
3. I/O设备与主机的联系方式
1)I/O设备编址方式
- 统一编址 用取数、存数指令
- 不统一编址 在内存地址空间之外,专门设置一块地址空间对外部设备进行编址 有专门的I/O指令
2)设备选址
用设备选择电路识别是否被选中
- 数据传送方式
- 串行
- 并行 通常情况下数据线个数是8的倍数
4)联络方式 - 立即响应
- 异步工作采用应答信号
I/O接口和I/O设备之间是异步通信 - 同步工作采用同步时标
5)I/O设备与主机的连接方式 - 辐射式链接 分散式连接 每台设备都配有一套控制线路和一组信号线 不便于增删设备
- 总线连接 便于增删设备
4. I/O设备与主机信息传送的控制方式
1)程序查询方式 cpu和外设采用串行工作方式
视频链接https://www.bilibili.com/video/BV1WW411Q7PF?p=49&spm_id_from=pageDriver&vd_source=3c88fb7dae36f53e6a15081fb7cf9ff8
2)程序中断方式 cpu和外设实现了部分并行工作
I/O工作
自身准备 CPU不查询
与主机交换信息 CPU暂停现行程序
例子:
CPU在运行程序的过程中,遇到一个启动I/O设备,读数据的命令,执行完之后就继续执行其他的命令,I/O设备收到请求后就准备数据,准备完成后,向cpu发送一个中断请求,CPU收到中断请求后就保存现在执行的命令及上下文状态,然后去执行中断服务程序,执行完成后,又回到之前保存的命令的下一行,恢复上下文状态,继续执行。
没有踏步等待的现象,但是保存和恢复上下文的状态比较耗时,如果每次都是读或写很少的数据,这样会很耗时
3)DMA方式 外设和内存实现了直接连接
主存和I/O之间有一条直接数据通道, 不需要中断现行程序 采用周期挪用(周期窃取)方式
4)通道方式和IO处理机方式没有详细讲
二、外部设备
1. 概述
1)人机交互设备 键盘、鼠标、打印机、显示器
2)计算机信息存储设备 磁盘、光盘、磁带
3)机-机通信设备 调制解调器等
2. 输入设备
1)键盘 按键->判断哪个键按下->将此键翻译成ASCII码(编码键盘法)
2)鼠标 机械式 金属球 电位器 光电式 光电转换器
3)触摸屏
3. 输出设备
1)显示器
- 字符显示 字符发生器
- 图像显示 主观图像
- 图像显示 客观图像
2)打印机 - 击打式 点阵式(逐字、逐页) 例如出租车发票
- 非击打式 激光(逐页) 喷墨(逐页)
4. 其他
- A/D D/A 模拟/数字(数字/模拟)转换器
- 终端 由键盘和显示器组成 完成显示空值与存储、键盘管理及通信控制
- 汉字处理 汉字输入、汉字存储、汉字输出
5. 多媒体技术
- 什么是多媒体
- 多媒体计算机的关键技术 数据压缩、解压缩、编码技术、专用芯片、语音识别、图像识别
I/O接口
1.概述
1)为什么要设置接口
- 实现设备的选择
- 实现数据缓冲达到速度匹配
- 实现数据串-并格式转换
- 实现电平转换
- 传送控制命令
- 反映设备的状态(忙、就绪、中断请求)
2.接口的功能和组成
1)总线连接方式的I/O接口电路
- 设备选择线 传输的是设备的地址或者端口,单向
- 数据线 完成数据的输入和输出,双向
- 命令线 来自主机的命令,单向
- 状态线 上报外部设备的状态,单向
2)接口的功能和组成
功能 | 组成 |
---|---|
选址功能 | 设备选择电路 |
传送命令的功能 | 命令寄存器、命令译码器 |
传送数据的功能 | 数据缓冲寄存器 |
反应设备状态的功能 | 设备状态标记 |
设备的状态
完成触发器 D
工作触发器 B
中断请求触发器INTR
屏蔽触发器 MASK
- I/O接口的基本组成
3.接口的类型
1)按数据传送方式分类
并行接口 Intel 8255
串行接口 Intel 8251
2)按照功能选择的灵活性分类
可编程接口 Intel 8255、Intel 8251
不可编程接口 Intel 8212
3)按通用性分类
通用接口 Intel 8255 Intel 8251
专用接口 Intel 8279 Intel 8275
4)按数据传送的控制方式分类
中断接口 Intel 8259
DMA接口 Intel 8257
4.程序查询方式
符号说明
& 与非门
B 工作触发器
D 完成触发器
程序查询工作过程(输入)
- 当CPU通过I/O指令启动输入设备时,改指令的设备码将通过地址线传入设备选择电路
- 若该设备码与地址线上的设备码吻合,则输出SEL有效
- I/O指令的启动命令经过与非门,将B置为1,D置为0
- B触发器启动设备工作
- 输入设备将数据送至缓冲寄存器DBR中
- 设备工作结束,结束信号传入,将B置为0,D置为1
- CPU执行输入指令,将数据缓冲寄存器中的额数据送达CPU通用寄存器中,再存入主存的相关单元
5.程序中断方式
1、什么是中断
CPU在执行程序的过程中,如果遇到特殊或者意外事件,cpu要中断当前程序的执行,转而处理特殊或者异常事件,通过执行中断服务程序的方式处理,处理完成之后,返回到被中断的程序的断点,继续执行
2、I/O中断的产生
首先是CPU发起对设备的读或写的命令,设备收到命令后开始准备,准备好之后向CPU发起中断请求,CPU响应中断请求,开始执行中断服务程序
3、程序中断方式的接口电路
-
配置中断请求触发器和中断屏蔽触发器
当D完成触发器值为1,即设备数据已经准备完成的情况下,且中断屏蔽触发器值为0即不屏蔽中断请求的情况下,中断请求触发器的输入端为1,如果来自CPU的中断查询信号也为1,则发出中断请求 -
排队器
如果有多个请求触发,需要用到排队机制
硬件实现 在CPU内或在接口电路中(链式排队器)
软件实现 -
中断向量地址形成部件
软件实现
硬件实现 由硬件产生向量地址 再由向量地址找到入口地址 -
程序中断方式接口电路的基本组成
INTR 中断请求触发器
MASK 中断屏蔽触发器
4、I/O中断处理路程
-
CPU响应中断的条件和时间
条件 允许中断触发器 EINT=1
时间 当D=1(随机) 且MASK=0时 在每条指令执行阶段结束之前 CPU发中断查询信号(INTR置1) -
I/O中断处理过程
5、中断服务程序流程
中断服务程序流程
- 保护现场
- 程序断点的保存 中断隐指令完成
- 寄存器内容的保护 进栈指令
- 中断服务
对不同的I/O设备具有不同内容的设备服务 - 恢复现场 出栈指令
- 中断返回 中断返回指令
单重中断和多重中断
单重中断 不允许中断现行的中断服务程序
多重中断 允许级别更高的中断源 中断现行的中断服务程序
单重中断和多重中断的服务程序流程
单重: 取指令->执行指令->是否中断->中断周期->中断服务程序
中断周期 中断响应 程序断点进栈 关中断 向量地址->PC
中断周期里面的操作都是由中断隐指令实现的
中断服务程序 保护现场->设备服务->恢复现场->开中断 中断返回
多重:
其他都一样
中断服务程序 保护现场->开中断->设备服务->恢复现场->中断返回
说明:在中断服务程序执行过程中 允许级别更高的中断源 中断现行的中断服务程序
将开中断提前,在设备服务过程中允许级别更高的中断源,中断现行的 中断服务程序
主程序和服务程序抢占CPU示意图
宏观上CPU和I/O并行工作
微观上CPU中断现行程序为I/O服务
6.DMA方式(直接存储器访问)
一、特点
- DMA和程序中断两种方式的数据通路
DMA 数据传送可以不经过CPU, 实现设备和内存的数据交换
而程序中断方式数据必须经过CPU的寄存器 - DMA与主存交换数据的三种方式 重点是周期挪用
-
停止CPU访问主存
控制简单
CPU处于不工作状态或保持状态
未充分发挥CPU对主存的利用率 -
周期挪用(周期窃取)
DMA访问主存有三种可能
CPU此时不访存
CPU正在访存
CPU与DMA同时请求访存
此时CPU将总线控制权让给DMA -
DMA与CPU交替访问
cpu工作周期 c1 专供DMA访存 c2专供CPU访存
不需要申请建立和归还总线的使用权
-
二、DMA接口的功能和组成
-
DMA接口功能
1)向CPU申请DMA传送
2)处理总线 控制权的转交
3)管理 系统总线、控制数据传送
4)确定 数据传送的首地址和长度 修正 传送过程中的数据地址和长度
5)DMA传送结束时,给出操作完成信号 -
DMA接口组成
-
DMA传送过程
预处理、数据传送、后处理
1) 预处理
通过几条输入输出指令预置如下信息- 通知DMA控制逻辑传送方向(入、出)
- 设备地址->DMA的DAR
- 主存地址->DMA的AR
- 传送字数->DMA的WC
CPU 执行预处理:
- 将主存起始地址->DMA
- 设备地址->DMA
- 传送数据个数->DMA
- 启动设备
2) 数据传送
CPU继续执行主程序
同时DMA完成一批数据传送DMA请求来了
判断是否允许传送
不允许则继续查询是否允许传送
允许则- 主存地址送总线
- 数据送I/O设备(或主存)
- 修改主存地址
- 修改字计数器
数据块传送结束?
未结束就判断是否允许传送
已结束则向CPU申请程序中断
3) 后处理
中断服务程序
做DMA结束处理
继续执行主程序
具体的后处理:- 校验送入主存的数是否正确
- 是否继续用DMA
- 测试传送过程是否正确,错则转诊断程序
由中断服务程序完成
三、DMA方式与程序中断方式的比较
中断方式 | DMA方式 | |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
四、DMA接口的类型
- 选择性 在物理上连接多个设备 在逻辑上只允许连接一个设备
- 多路型 在物理上连接多个设备 在逻辑上也允许连接多个设备同时工作
系统输入与输出
/dev/sda2 硬盘 /dev/shm 内存1.理解系统中的输入输出
shell程序中的指令------>cpu产生运算结果------->字符设备
在shell程序中输入指令,送到cpu中运算产生的结果,再送到字符设备中显示。
2.管理输入输出的符号
: 重定向正确输出
2>: 重定想错误输出
&>: 重定向所有输出
注意:
重定向会覆盖原文件内容
示例:(要截图)"注意:以下实验必须在student用户下完成"
find /etc/ -name passwd > file 定向正确输入到file
find /etc/ -name passwd 2> file.err 定向错误输入到file.err
find /etc/ -name passwd &> file.all 定向所有输入到file.all
清空一个文件命令: > 文件名
3.管道作用
1.wc命令
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
-c 显示bytes或chars 只显示bytes
-l 显示行数
-w 显示字数
$ wc 文件名 :显示文件的行数 单词数 字节数
$ wc 多个文件: 统计三个文件的信息
3.2.管道的作用
"|" 管道的作用是把前一条命令的输出变成后一条命令的输入
所以 ls /bin/ | wc -l 为1588 但是ls /bin/ | wc -l 就是1 的原因是1588就只有一行注意: 管道只允许正确输出通过
通过管道的输入将会变成输入,而比变成输入的这些输出是会被第二条命令处理的,如果需要输出保存内容,那么需要复制一输出,用到的命令是"tee"
此实验在普通用户下操作:
find /etc/ -name passwd | wc -l 会看到结果为2,因为错误输出不能通过管道
find /etc/ -name passwd 2>&1 | wc -l 会看到19,因为编号为2的输出被“2>&1”转换为编号为1
find /etc/ -name passwd 2>&1 |tee file| wc -l 保存一份输出到file在统计行数
4.3.输入重定向
cat >file <<EOF
tr ‘a-z‘ ‘A-Z’< westos
格式化输入内容到文件
cat >westos<<EOF
HELLO
WORLD
EOF
以上是关于08-输入输出系统的主要内容,如果未能解决你的问题,请参考以下文章