I/O设备的概念和分类,I/O控制器

文章目录

1.什么是I/O设备

"I/O"就是"输入/输出"(Input/Output)

I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。

UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。

2.按使用特性分类

1.人机交互类外部设备

用于人机交互,如:鼠标,键盘,打印机等。

数据传输速度慢。

2.存储设备

用于数据存储,如:移动硬盘,光盘。

数据传输速度块。

3.网络通信设备

用于网络通信,如:路由器,调制调节器。

数据 传输速度介于上述二者之间。

3.按传输速率分类

1.低速设备:

鼠标、键盘等------传输速率为每秒几个到几百字节。

2.中速设备:

如激光打印机等---―传输速率为每秒数千至上万个字节。

3.高速设备:

如磁盘等一一传输速率为每秒数千字节至千兆字节的设备。

4.按信息交换的单位分类

1.块设备:

如磁盘等――数据传输的基本单位是"块'。

传输速率较高,可寻址,即对它可随机地读/写任一块。

2.字符设备:

鼠标、键盘等―---数据传输的基本单位是字符。

传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式。

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

主要用来执行具体l/O操作。如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。

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

CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的"中介",用于实现CPU对设备的控制。

这个电子部件就是I/O控制器,又称设备控制器 。

CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。

1.接收和识别CPU发来的命令

如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数。

2.向CPU报告设备的状态

I/O控制器中会有相应的状态寄存器 ,用于记录I/O设备的当前状态。

如:1表示空闲,0表示忙碌。

3.数据交换

I/O控制器中会设置相应的数据寄存器 。

输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。

输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。

4.地址识别

类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的"地址"。

I/O控制器通过CPU提供的"地址"来判断CPU要读/写的是哪个寄存器。

5.I/O控制器的组成

注意:

  • ①一个I/O控制器可能会对应多个设备;
  • ②数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O ;另一些计算机则采用I/O专用地址,即寄存器独立编址。
1.内存映射I/O

控制器中的寄存器与内存地址统一编址。

优点:简化了指令。可以对内存进行操作的指令来对控制器进行操作。

2.寄存器独立编址。

控制器中的寄存器使用单独的地址。

缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号。

相关推荐
律宏阔6 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔6 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴6 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千6 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
imDwAaY6 小时前
Java中垃圾回收器 G1 和 CMS 有什么区别?
jvm·后端
yunwei376 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei376 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei376 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh6 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
xiaoqiMikko6 小时前
JVM 线上排查实战(五):升 JDK 17 后进程起不来,十几个老 GC 参数挨个实测(完结)
java·jvm