news 2026/8/3 4:23:42

理解系统补充--硬件,网络

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
理解系统补充--硬件,网络

硬件

1.设备控制器
为了屏蔽设备之间的差异,每个设备都有一个叫设备控制器(Device Control) 的组件,比如硬盘有硬盘控制器、显示器有视频控制器等。

因为这些控制器都很清楚的知道对应设备的用法和功能,所以 CPU 是通过设备控制器来和设备打交道的。
设备控制器里有芯片,它可执行自己的逻辑,也有自己的寄存器,用来与 CPU 进行通信,比如:

  • 通过写入这些寄存器,操作系统可以命令设备发送数据、接收数据、开启或关闭,或者执行某些其他操作。
  • 通过读取这些寄存器,操作系统可以了解设备的状态,是否准备好接收一个新的命令等。

实际上,控制器是有三类寄存器,它们分别是状态寄存器(Status Register)、 命令寄存器(Command Register)以及数据寄存器(Data Register),如下图:

这三个寄存器的作用:

  • 数据寄存器,CPU 向 I/O 设备写入需要传输的数据,比如要打印的内容是「Hello」,CPU 就要先发送一个 H 字符给到对应的 I/O 设备。
  • 命令寄存器,CPU 发送一个命令,告诉 I/O 设备,要进行输入/输出操作,于是就会交给 I/O 设备去工作,任务完成后,会把状态寄存器里面的状态标记为完成。
  • 状态寄存器,目的是告诉 CPU ,现在已经在工作或工作已经完成,如果已经在工作状态,CPU 再发送数据或者命令过来,都是没有用的,直到前面的工作已经完成,状态寄存标记成已完成,CPU 才能发送下一个字符和命令。

CPU 通过读写设备控制器中的寄存器控制设备,这可比 CPU 直接控制输入输出设备,要方便和标准很多。
这可比 CPU 直接控制输入输出设备,要方便和标准很多。
另外, 输入输出设备可分为两大类 :块设备(Block Device)和字符设备(Character Device)。

  • 块设备,把数据存储在固定大小的块中,每个块有自己的地址,硬盘、USB 是常见的块设备。
  • 字符设备,以字符为单位发送或接收一个字符流,字符设备是不可寻址的,也没有任何寻道操作,鼠标是常见的字符设备。

块设备通常传输的数据量会非常大,于是控制器设立了一个可读写的数据缓冲区。

  • CPU 写入数据到控制器的缓冲区时,当缓冲区的数据囤够了一部分,才会发给设备。
  • CPU 从控制器的缓冲区读取数据时,也需要缓冲区囤够了一部分,才拷贝到内存。

这样做是为了,减少对设备的频繁操作。
那 CPU 是如何与设备的控制寄存器和数据缓冲区进行通信的?

  • 端口 I/O,每个控制寄存器被分配一个 I/O 端口,可以通过特殊的汇编指令操作这些寄存器,比如 in/out 类似的指令。
  • 内存映射 I/O,将所有控制寄存器映射到内存空间中,这样就可以像读写内存一样读写数据缓冲区。

I/O 控制方式:
每种设备都有一个设备控制器,控制器相当于一个小 CPU,它可以自己处理一些事情,但有个问题是,当 CPU 给设备发送了一个指令,让设备控制器去读设备的数据,它读完的时候,要怎么通知 CPU 呢?
控制器的寄存器一般会有状态标记位,用来标识输入或输出操作是否完成。

  • 第一种轮询等待的方法,让 CPU 一直查寄存器的状态,直到状态标记为完成。
  • 第二种方法 —— 中断,通知操作系统数据已经准备好了。我们一般会有一个硬件的中断控制器,当设备完成任务后触发中断到中断控制器,中断控制器就通知 CPU,一个中断产生了,CPU 需要停下当前手里的事情来处理中断。

中断有两种:

  • 一种软中断,例如代码调用 INT 指令触发。
  • 一种是硬件中断,就是硬件通过中断控制器触发的。
    但中断的方式对于频繁读写数据的磁盘,并不友好,这样 CPU 容易经常被打断,会占用 CPU 大量的时间。

对于这一类设备的问题的解决方法是使用 DMA(Direct Memory Access) 功能,它可以使得设备在 CPU 不参与的情况下,能够自行完成把设备 I/O 数据放入到内存。那要实现 DMA 功能要有 「DMA 控制器」硬件的支持。

DMA 的工作方式如下:

  • CPU 需对 DMA 控制器下发指令,告诉它想读取多少数据,读完的数据放在内存的某个地方就可以了;
  • 接下来,DMA 控制器会向磁盘控制器发出指令,通知它从磁盘读数据到其内部的缓冲区中,接着磁盘控制器将缓冲区的数据传输到内存;
  • 当磁盘控制器把数据传输到内存的操作完成后,磁盘控制器在总线上发出一个确认成功的信号到 DMA 控制器;
  • DMA 控制器收到信号后,DMA 控制器发中断通知 CPU 指令完成,CPU 就可以直接用内存里面现成的数据了;

仅仅在传送开始和结束时需要 CPU 干预。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 4:20:10

8元无门槛优惠券免费领!下单立减,手慢无!

🎉 抓住机会,立省8元! 还在为购物车里的宝贝犹豫吗?现在,专属福利来了!下单直接抵扣,真金白银的优惠,不玩虚的! 领取方式:新用户福利100042

作者头像 李华
网站建设 2026/8/3 4:18:48

构建企业级AI热点预警系统(含开源工具链+告警阈值黄金公式)

更多请点击: https://intelliparadigm.com 第一章:构建企业级AI热点预警系统(含开源工具链告警阈值黄金公式) 企业级AI热点预警系统需兼顾实时性、可解释性与工程鲁棒性。核心架构采用“数据采集→语义增强→动态阈值判定→多通…

作者头像 李华
网站建设 2026/8/3 4:17:20

面向电机故障诊断的ZYNQ振动与温度一体化监测终端,针对工业电机、减速机、风机、泵类等旋转设备在线监测

面向电机故障诊断的ZYNQ振动与温度一体化监测终端摘要:针对工业电机、减速机、风机、泵类等旋转设备在线监测需求,本文设计一种基于 Xilinx ZYNQ 异构架构的一体化监测终端。该终端集成 IEPE 振动采集与多路温度采集,利用 FPGA(PL…

作者头像 李华
网站建设 2026/8/3 4:17:19

从电路分析到PCB制造:STM32与Type-C模块的硬件设计全流程实践

在实际硬件开发项目中,电路设计、PCB布局和最终制造是环环相扣的三个阶段。很多工程师能画出原理图,但在将设计转化为可靠、可制造的PCB时,却常常在电路分析、元器件选型、PCB布线和理解制造工艺上遇到瓶颈。这些问题直接导致板子回来无法工作…

作者头像 李华
网站建设 2026/8/3 4:13:17

Spring Security 403错误排查:从权限决策到生产实践

在实际开发中,我们常常会遇到一些看似简单、但调试起来却异常棘手的问题。这些问题往往不是由复杂的业务逻辑或高深的算法引起的,而是源于一些基础配置、环境差异或框架的默认行为。一个典型的例子就是 HTTP 状态码403 Forbidden,尤其是在使用…

作者头像 李华