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.寄存器独立编址。

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

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

相关推荐
奈斯ing13 分钟前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构
鳄鱼皮坡39 分钟前
仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器
运维·服务器
即将头秃的程序媛1 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin1 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
小Mie不吃饭1 小时前
FastAPI 小白教程:从入门级到实战(源码教程)
运维·服务器
fo安方2 小时前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
爱奥尼欧2 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天3 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
搬码临时工3 小时前
小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问
运维·服务器
tan77º3 小时前
【Linux网络编程】网络基础
linux·服务器·网络