【JavaEE初阶】 计算机是如何工作的

news2024/11/27 13:38:01

文章目录

  • 🌲计算机发展史
  • 🎋冯诺依曼体系(Von Neumann Architecture)
  • 🎍CPU 基本工作流程
    • 📌逻辑门
      • 🎈电子开关 —— 机械继电器(Mechanical Relay)
      • 🎈门电路(Gate Circuit)
        • NOT GATE(非门)
        • AND GATE(与门)
        • OR GATE(或门)
        • XOR GATE(异或门)
    • 📌算术逻辑单元 ALU(Arithmetic & Logic Unit)
      • 🎈进制的理解
        • 算术单元(Arithmetic Unit)
      • 🎈逻辑单元(Logic Unit)
      • 🎈ALU 符号
    • 📌寄存器(Register) 和内存(RAM)
    • 📌控制单元 CU(Control Unit)
    • 📌指令(Instruction)
    • 📌CPU 的基本工作流程
    • 📌小结
  • 🌳编程语言(Program Language)
    • 📌程序(Program)
    • 📌早期编程
    • 📌编程语言发展
  • 🎄操作系统(Operating System)
    • 📌操作系统的定位
    • 📌什么是进程/任务(Process/Task)
    • 📌进程控制块抽象(PCB Process Control Block)
    • 📌CPU 分配 —— 进程调度(Process Scheduling)
    • 📌内存分配 —— 内存管理(Memory Manage)
    • 📌进程间通信(Inter Process Communication)
  • ⭕总结

学习目标:
本篇博客,我们会从软件工程师的角度解释计算机是如何工作的,我们的主要目标既不是让大家可以造出自己的计算机,也不是介绍如何编程,而是希望让大家了解计算机的核心工作机制后,打破 计算机的神秘感,并且有利于理解我们平时编程时的一些行为、动作的历史渊源。

大家如果感兴趣的话,还可以去看看以下视频做更详尽的学习和了解。

计算机科学速成课

🌲计算机发展史

计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。

  1. 公元前2500 年前,算盘已经出现了;除此之外,人类还创造了各种工具以
    辅助计算

  2. 1694 年,德国博物学家 戈特弗里德·莱布尼兹建造了“步进计算器”。

  3. 1822 年,英国科学家 查尔斯·巴贝奇设计了“差分机”模型;1991年,才被现代科学家根据手稿建造完成

  4. 十九世纪三十年代,英国科学家 查尔斯·巴贝奇更进一步设计了“分析机”模型;是第一台“通用计算机”。

  5. 1890 年,美国科学家为了解决人口普查中的计算问题,发明了“打孔卡片制表机

  6. 1943年,英国制造了第一个大规模使用“真空管”的计算机 —— 巨人一号,用于破解纳粹通信密码。

  7. 1944 年,IBM 公司为二战同盟国制作了最大的“机电计算机” —— 哈佛 Mark一号,用于给“曼哈顿计划”跑模拟。

  8. 1945年,ENIAC在“宾夕法尼亚大学”完成建造,被视为第一台电子通用计算机。

  9. 1955年,AN/FSQ-7计算机,是“SAGE”防空计算机系统的一部分。

  10. 1947年,贝尔实验室科学家发明了“晶体管”,一种新的电子开关诞生了。也就是我们平时所谓的“半导体”材料。

人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待大家的努力

这里为大家推荐一部书有利于大家更好的了解计算机
《计算机简史》

🎋冯诺依曼体系(Von Neumann Architecture)

现代的计算机, 大多遵守冯诺依曼体系结构

结构大致组成为下图:
在这里插入图片描述

  • CPU 中央处理器: 进行算术运算和逻辑判断.

  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)

  • 输入设备: 用户给计算机发号施令的设备.

  • 输出设备: 计算机个用户汇报结果的设备.

对于存储器来说:

  • 针对存储空间:硬盘 > 内存 >> CPU

  • 针对数据访问速度:CPU >> 内存 > 硬盘

说到冯诺依曼体系结构不得不说我们的祖师冯诺依曼

认识计算机的祖师爷 – 冯诺依曼 冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算 机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是布达佩斯大学数学博士,在 代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”.
在这里插入图片描述

🎍CPU 基本工作流程

接下来,我们用一个从无到有的过程,一步步搭建一个 CPU 出来,希望大家可以借助这个过程,理解CPU、内存等计算机主要部件的工作原理

📌逻辑门

🎈电子开关 —— 机械继电器(Mechanical Relay)

整个过程,类似一个水龙头:打开水龙头开关,有水流出;关闭水龙头开关,水流停止。
在这里插入图片描述
我们可以通过以下电子开关下方线圈通电,产生磁场,吸引上方机械臂闭合,完成上方电路闭合;下方线圈断电,磁场消失,导致上方机械臂弹起,断开上方电路闭合
在这里插入图片描述
在这里插入图片描述

通过电子开关,我们可以实现 1 位(bit) 的看似无用的逻辑运算,但至少它工作起来了,不是吗。怎么使用电子开关组合出真正有用的逻辑组件,我们接来下会做进一步的学习了解。

以后的真空管、晶体管的实质也是完成类似的工作,只是物理原理更加复杂,我就不带着大家做深入解读了

🎈门电路(Gate Circuit)

NOT GATE(非门)

在这里插入图片描述

AND GATE(与门)

在这里插入图片描述

OR GATE(或门)

在这里插入图片描述

XOR GATE(异或门)

在这里插入图片描述

📌算术逻辑单元 ALU(Arithmetic & Logic Unit)

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。接下来,我们用上一节构建的逻辑门来完成自己的一个 ALU,去学习理解它的工作模式,以便作为我们进一步理解现代计算机工作原理的基石。

以下为著名的 ALU —— Intel 74181

🎈进制的理解

我们已经熟悉数字的各种表示了,让我们再简单回顾下进制
在这里插入图片描述
进制相加:
在这里插入图片描述

算术单元(Arithmetic Unit)

算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远止这些。接下来我们会带着大家实现一个 8 位(bits)的加法器(adder)来,以演示整个过程,其他的运算器就不再详细讲解了。
首先为半加器
在这里插入图片描述
接下来为全加器
在这里插入图片描述
然后最后为8位数加法器
在这里插入图片描述
至此,一个 8 位(bits) 加法器就被我们从无到有制作了出来。算术单元支持的操作当然远不止这些,通过继续组合逻辑门,算数单元可以做到加减乘除甚至更多的算术运算,但一个加法器作为演示已经足够了。

实际上,乘法器和除法器的制作难度是要高于加、减法器的,有兴趣的同学可以尝试做更多的了解

🎈逻辑单元(Logic Unit)

逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位(bit)数的比较
在这里插入图片描述

🎈ALU 符号

经过我们的努力,通过基本的逻辑门电路,我们一步步地做出了一个 8 位(bits) ALU,甚至比 Intel74181 还要强大,Intel 74181 只是一个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的 ALU也是芯片工程师像我们这样,一层又一层,一步又一步地将其抽象出来的。ALU 是第一次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰
在这里插入图片描述

📌寄存器(Register) 和内存(RAM)

光有 ALU 还是远远不够的,我们无法为 ALU 提供存储的部件,所以接来下,我们利用门电路简单说明下存储的制作。注意,虽然图中没有明显的表示出来,但这些存储都是要求必须保持通电状态的,也就是这些存储都是易失的(volatile)
在这里插入图片描述
中间我们隐藏了一些实现细节,最后的效果就是:使能线置位时,输入为 1,保存 1;输入为 0,保存0。使能线不置位时,则写入无效。我们可以利用门锁,构建我们需要的寄存器和内存
在这里插入图片描述
内存的构建要比这个复杂一点,但基本原理一致。如此构建的内存被称为RAM(Random AccessMemory),可以支持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1)的硬件支持。
在这里插入图片描述
期间,为了我们学习的聚焦性,我们隐藏了大量的实现细节,对于这部分知识感兴趣的同学可以在看完博客做深入的学习。

📌控制单元 CU(Control Unit)

我们现在有 ALU、存储了,但这还是不足以让我们的计算机工作起来,我们需要有一个部件来指挥 ALU进行何种的运算,而这个部件就是控制单元(CU)

两者关系为:
在这里插入图片描述
关于 CU 如何由门电路从无到有搭建,我们就进行抽象了,我们只需要理解 CU 可以驱动 ALU 进行具体的计算工作即可,至于 ALU 是如何驱动 ALU 进行工作的,博主会在后面博客进行讲解;
在这里插入图片描述

📌指令(Instruction)

首先,我们先介绍下我们需要到的指令(instruction)。所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。指令本身也是一个数字,用二进制形式保存在内存的某个区域中
在这里插入图片描述

📌CPU 的基本工作流程

接下来,我们演示指令运行的一个周期,希望同学们可以学习到其流程,并完成剩余指令的运行过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
第一条指令的运行,其实没有用到我们之前制作的 ALU 部件,但这只是其中一些指令而已,大家尝试把剩余的 3 条指令自行运行一次,观察并理解这个过程

我们来总结下执行周期经过哪些阶段:
在这里插入图片描述
当然,电子计算机中的 CPU 可不像我们刚才那样,靠自己来驱动这个周期的运转,而是靠背后一个时钟来进行周期驱动的
在这里插入图片描述
上图框中为:CPU 主频,粗略地讲,CPU主频就是时钟的震荡的每秒次数,可以近似的看作每秒执行的指令数

最后,ALU + CU + 寄存器 + 时钟就组成了我们平时经常看到的一个词汇:中央处理器(Center ProcessUnit)简称 CPU
在这里插入图片描述

📌小结

通过上述的章节,我们带领大家从基本的电子开关开始,一步步的搭建了一个CPU和内存出来,虽然中间还是对很多过程和细节做了隐藏和抽象,但主要流程已经体现了出来,希望这节学习完成之后,同学们不在对CPU充满了神秘感。

然后我们把这一节中一些要点给大家做一个文字总结:

  1. CPU 中的 PC 寄存器,是决定 CPU 要执行哪条指令的关键;

  2. 指令是由 动作 + 操作对象组成

  3. CPU 眼中只有指令,没有其他的概念

🌳编程语言(Program Language)

这一节,我们借助上一节制作的 CPU 和 内存,来尝试还原下我们已经熟悉的编程语言,例如 Java 是如何和 CPU 指令对应起来的。

📌程序(Program)

所谓程序,就是一组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。

程序 = 指令 + 指令要处理的数据

在这里插入图片描述

📌早期编程

最早的电脑,要进行编程,是真的需要用0、1进行编程的(Σ(っ °Д °;)っ)下面图给大家展示了 Altair 8800 计算机,是最早的一批微型电脑。用户需要控制开关,一个一个 bit 的将程序录入该电脑中
在这里插入图片描述
如果要求计算机的用户都必须使用二进制编程,那大家都要疯掉了,这可是一件门槛太高的事情了。所以编程语言应运而生了

📌编程语言发展

为了提升编程效率,最早创造了汇编语言的概念。其实汇编语言和机器语言(也就是指令)直接是完全一一对应的,只是相对于 0、1 这些数字,发明了一些帮助人类记忆和理解的符号将其对应起来,也就是我们上面看到的类似 LOAD_A、LOAD_B 等。程序员完成编程之后,需要使用汇编器(assembler)

将汇编语言翻译成机器语言。虽然汇编降低了程序员的记忆成本,但要求程序还是必须掌握计算机硬件的所有知识,而且随着计算机厂商越来越多,一次编写的程序往往只适用于一类计算机。

这个是远远不够的,所以更为高级的语言诞生了,高级语言屏蔽了硬件细节,让程序员可以站在更高的层面上思考自己的业务。

这里以 C 语言为例,程序员完成程序的编写之后,需要使用编译器(compiler)和连接器(linker)将程序翻译成汇编语言,再借助汇编器变成最终的机器语言。

借助封装的思想,我们学习编程变得越来越容易。不过有利则有弊,高度的抽象,导致很多的程序员把计算机视为一个黑箱,完全无法理解自己的程序是如何工作起来的,希望我们大家不要做这种程序员。

我们使用的 Java 语言相对于 C 语言更高级一点,但基本抽象原理上没有太大的差异,这里就暂时就不展开说明了。
在这里插入图片描述
注意:高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成

🎄操作系统(Operating System)

操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

📌操作系统的定位

在这里插入图片描述
操作系统由两个基本功能:

  1. 防止硬件被时空的应用程序滥用;

  2. 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

📌什么是进程/任务(Process/Task)

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位

📌进程控制块抽象(PCB Process Control Block)

计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/对象来描述这一特征。

// 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
class PCB {
// 进程的唯一标识 —— pid;
// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
// 分配给该资源使用的各个资源
// 进度调度信息(留待下面讲解)
}

这样,每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。

操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作

📌CPU 分配 —— 进程调度(Process Scheduling)

为了便于讨论和理解,我们大部分的场景下假设是单CPU单核的计算机。
操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

📌内存分配 —— 内存管理(Memory Manage)

操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干
扰。

📌进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性(Isolation)“。

但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。

目前,主流操作系统提供的进程通信机制有如下:

  1. 管道

  2. 共享内存

  3. 文件

  4. 网络

  5. 信号量

  6. 信号

其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信

⭕总结

关于《【JavaEE初阶】 计算机是如何工作的》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序算法之【快速排序】

📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

关于RabbitMQ你了解多少?

关于RabbitMQ你了解多少? 文章目录 关于RabbitMQ你了解多少?基础篇同步和异步MQ技术选型介绍和安装数据隔离SpringAMQP快速入门Work queues交换机Fanout交换机Direct交换机Topic交换机 声明队列和交换机MQ消息转换器 高级篇消息可靠性问题发送者的可靠性…

泡泡玛特城市乐园即将开园 解锁“文化+科技”潮流空间

近年来,泡泡玛特以潮玩IP为核心,不断拓展业务版图,推进国际化布局同时实现集团化运营,而泡泡玛特首个城市乐园即将开业。 据了解,泡泡玛特城市乐园是由泡泡玛特精心打造的沉浸式IP主题乐园,占地约4万平方米…

四、浏览器渲染过程,DOM,CSSDOM,渲染,布局,绘制详细介绍

知识点: 1、为什么不能先执行 js文件?? 我们不能先执行JS文件,必须等到CSSOM构建完成了才能执行JS文件,因为前面已经说过渲染树是需要DOM和CSSOM构建完成了以后才能构建,而且JS是可以操控CSS样式的&#…

【Java 进阶篇】深入理解 JDBC:Java 数据库连接详解

数据库是现代应用程序的核心组成部分之一。无论是 Web 应用、移动应用还是桌面应用,几乎都需要与数据库交互以存储和检索数据。Java 提供了一种强大的方式来实现与数据库的交互,即 JDBC(Java 数据库连接)。本文将深入探讨 JDBC 的…

Linux系统编程(七):线程同步

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. 同步概念 所谓同步,即同时起步、协调一致。不同的对象,对 “同步” 的理解方式略有不同 设备同步,是指在两个设备之间规定一个共同的时间参考数据库同步,是指让…

从 低信噪比陆上地震记录 解决办法收集 到 走时层析反演中的折射层析调研

目录 (前言1) 关于背景的回答:(前言2) 现有的降低噪声, 提高信噪比的一些特有方法的论文资料 (传统策略):1. 关于波形反演与走时层析反演2. 折射层析3. 用一个合成数据来解释折射层析反演的思路4. 其他层析反演方法:5. 关于层析反演的一些TIPS (可补充)参考文献: 降噪有关资料参…

ElementUI之CUD+表单验证

目录 前言&#xff1a; 增删改查 表单验证 前言&#xff1a; 继上篇博客来写我们的增删改以及表单验证 增删改查 首先先定义接口 数据样式&#xff0c;我们可以去elementUI官网去copy我们喜欢的样式 <!-- 编辑窗体 --><el-dialog :title"title" :visib…

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄 国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

leetcode-----二叉树习题

目录 前言 1. 二叉树的中序遍历 2. 相同的树 3. 二叉树的最大深度 4. 二叉树的最小深度 5.二叉树的前序遍历 6. 二叉树的后序遍历 7. 对称二叉树 前言 前面我们学习过了二叉树的相关知识点&#xff0c;那么今天我们就做做练习&#xff0c;下面我会介绍几道关于二叉树的…

如何实现一个业务系统的自动化框架搭建

1、框架结构 我在该项目采用的是关键字驱动测试的框架类型。首先创建如下几个目录common&#xff08;公共模块&#xff09;、config&#xff08;公共配置&#xff09;、logs&#xff08;运行日志&#xff09;、reports&#xff08;测试报告&#xff09;、resources&#xff08…

前端的多种克隆方式和注意事项

克隆的意义和常见场景: 意义: 保证原数据的完整性和独立性常见场景: 复制数据, 函数入参, class构造函数等 浅克隆: 对象常用的浅克隆 es6扩展运算符...Object.assign 数组常用的浅克隆 es6的扩展运算符...slice>arr.slice(0)[].concat 深度克隆: 克隆对象的每个层级如…

YOLOv8改进算法之添加CA注意力机制

1. CA注意力机制 CA&#xff08;Coordinate Attention&#xff09;注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息&#xff0c;以便模型可以更好地理解不同位置之间的关系。如下图&#xff1a; 1. 输入特…

【RocketMQ】【源码】Dledger日志复制源码分析

消息存储 在 【RocketMQ】消息的存储一文中提到&#xff0c;Broker收到消息后会调用CommitLog的asyncPutMessage方法写入消息&#xff0c;在DLedger模式下使用的是DLedgerCommitLog&#xff0c;进入asyncPutMessages方法&#xff0c;主要处理逻辑如下&#xff1a; 调用serial…

leetCode 122.买卖股票的最佳时机 II 动态规划 + 状态转移 + 状态压缩

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&…

006:连续跌三天,第四天上涨的概率--用python统计

我们已经可以获取到K线信息了&#xff0c;然后我们来进行一些统计&#xff0c;就统计连续三天下跌&#xff0c;第四天上涨的概率。 我们用宁波银行&#xff08;002142&#xff09;最近三年的数据来统计。先用上一篇的程序下载到K线数据&#xff0c;得到文件002142.csv。然后在…

Spring修炼之旅(4)静态/动态代理模式与AOP

一、代理模式概述 代理模式 为什么要学习代理模式&#xff0c;因为AOP的底层机制就是动态代理&#xff01; 代理模式&#xff1a; 静态代理 动态代理 学习aop之前 , 我们要先了解一下代理模式&#xff01; 1.1静态代理 静态代理角色分析 抽象角色 : 一般使用接口或者抽象…

【数据结构练习】二叉树相关oj题集锦二

目录 前言 1.平衡二叉树 2.对称二叉树 3.二叉树遍历 4.层序遍历 5.判断一棵树是不是完全二叉树 前言 编程想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#xff01;为此我开启了一个弯道超车必做好题锦集的系列&#xff0c;此为…

2023/9/30 使用消息队列完成进程间通信

发送方 ​ #include <myhead.h> //消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds) - sizeof(long) //正文大小 int main(int argc, const char *argv[]) {//1.创建key值key_t key ;if((key …

中断向量控制器(NVIC)

1. 什么是中断 在处理器中&#xff0c;中断是一个过程&#xff0c;即CPU在正常执行程序的过程中&#xff0c;遇到外部/内部的紧急事件需要处理&#xff0c;暂时中止当前程序的执行&#xff0c;转而去为处理紧急的事件&#xff0c;待处理完毕后再返回被打断的程序处继续往下执行…