- 一、什么是控制流?
- 二、正常控制流
- 三、异常控制流
- 四、正常控制流 vs. 异常控制流
- 总结与重要性
一、什么是控制流?
控制流指的是程序计数器(PC或EIP/RIP)随时间变化的序列。简单来说,就是CPU执行指令的顺序。
从你按下电源键开始,CPU就在不停地取指令、执行指令,PC寄存器的值决定了下一条要执行哪条指令。这个PC值的序列就构成了控制流。
二、正常控制流
正常控制流,也称为平滑控制流,是程序执行的默认模式,其特点是可预测性。
-
定义:
- 指令在内存中顺序排列,PC寄存器通常自动递增,指向下一条相邻的指令。这种一条接一条的顺序执行,就是最基本的正常控制流。
-
改变正常控制流的指令:
- 程序并非总是顺序执行。通过一些特定的指令,可以有意地、程序化地改变控制流,但这仍然属于“正常”范畴,因为这是程序员预先设计好的。
- 跳转指令:
jmp
(无条件跳转)
- 条件分支指令:
je
, jne
, jg
等(根据条件码寄存器决定是否跳转)
- 函数调用指令:
call
:将返回地址(下一条指令的地址)压栈,然后跳转到函数入口。
ret
:从栈中弹出返回地址,并跳转到该地址,从而返回到调用者。
-
特点:
- 可预测性:控制流的改变完全由程序本身的代码逻辑决定。只要给定输入,执行的路径是确定的。
- 由应用程序控制:改变的时机和目标地址都编码在程序指令中。
正常控制流就像一个严格遵守计划的旅程:从A地到B地,途中根据计划书(程序逻辑)的指示,在特定的路口(分支指令)转向C地,或者先到D地办点事(函数调用)再返回主路。
三、异常控制流
异常控制流是指响应系统状态变化而发生的、不可预测的控制流改变。它是“异常”的,因为它超出了应用程序本身代码的控制范围。
ECF是操作系统用来实现进程、信号、虚拟机等核心概念的基本机制。
-
定义:
- 控制流的改变不是由程序内部的指令直接引发的,而是由处理器上的硬件事件或操作系统状态的变化所触发的。
-
异常控制流的层次:
异常控制流发生在计算机系统的各个层次,从底层的硬件到高层的软件:
-
硬件层次:异常和中断。这是最底层的ECF,由硬件检测并启动,最终由操作系统内核处理。这是我们之前讨论的重点。
- 示例:除零异常、缺页异常、定时器中断、I/O中断。
-
操作系统层次:进程上下文切换。操作系统通过内核模式的异常控制流来实现多任务。
- 示例:一个进程的时间片用完了,操作系统通过定时器中断获得CPU控制权,将当前进程的上下文保存起来,并恢复另一个进程的上下文,从而切换到另一个进程执行。这个过程对进程而言是不可感知、不可预测的,是最高效的异常控制流。
-
应用层层次:信号。这是操作系统提供给应用程序的一种高级形式的ECF,允许进程响应异步事件。
- 示例:当一个用户按下
Ctrl+C
时,内核会向前台进程发送一个SIGINT
信号。进程收到这个信号后,会突然中断当前的正常执行流,转而执行一个预先注册的信号处理函数。执行完后,再(尝试)返回到原来的控制流中。
-
特点:
- 不可预测性(异步):事件可能在程序执行的任何时刻发生,与程序本身的逻辑无关。
- 由系统外部状态控制:变化的触发者是外部事件(如中断)或操作系统内核(如上下文切换),而非应用程序本身。
- 对应用程序透明:应用程序通常不知道ECF何时会发生。
异常控制流就像你在计划好的旅程中,突然接到一个紧急电话(中断),你必须立刻改变路线去处理一个突发事件。处理完后,你再回到原来的路线上继续你的旅程。这个紧急电话不是你原计划的一部分,它的到来是不可预测的。
四、正常控制流 vs. 异常控制流
特性 |
正常控制流 |
异常控制流 |
触发原因 |
程序内部的指令(跳转、调用) |
外部事件或处理器状态变化 |
确定性 |
可预测,由程序逻辑决定 |
不可预测(异步),随机发生 |
控制者 |
应用程序自身 |
硬件和操作系统内核 |
粒度 |
指令级、函数级 |
进程级、系统级 |
可见性 |
对程序员可见,是编程的一部分 |
对应用程序通常透明,由系统处理 |
示例 |
if-else , while , call/ret |
中断、异常、进程切换、信号 |
总结与重要性
理解这两种控制流至关重要,因为:
- 理解程序执行的基础:所有程序的执行都是这两种控制流的结合。
- 理解操作系统的基石:异常控制流是操作系统实现其强大功能的根本机制。
- 进程:通过上下文切换(一种ECF),操作系统创造了每个进程独占CPU的假象。
- I/O:通过中断(一种ECF),CPU可以高效地与慢速设备协同工作。
- 虚拟内存:通过缺页异常(一种ECF),操作系统可以按需加载页面,实现虚拟内存。
- 应用程序交互:通过信号(一种ECF),操作系统允许用户与进程交互(如
Ctrl+C
终止进程)。
可以说,没有异常控制流,现代计算机的多任务、安全和资源管理能力都将不复存在。
Do not communicate by sharing memory; instead, share memory by communicating.
相关文章:
目录一、什么是控制流?二、正常控制流三、异常控制流四、正常控制流 vs. 异常控制流总结与重要性一、什么是控制流?
控制流指的是程序计数器(PC或EIP/RIP)随时间变化的序列。简单来说,就是CPU执行指令的顺序。
从你按下电源键开始,CPU就在不停地取指令、执行指令,PC寄存…...
转自:https://zhuanlan.zhihu.com/p/650469278
Transformer 模型在处理序列数据时,其自注意力机制使得模型能够全局地捕捉不同元素之间的依赖关系,但这样做的代价是丧失了序列中的元素顺序信息。由于自注意力机制并不考虑元素在序列中的位置,所以在输入序列的任何置换下都是…...
成品app直播源码搭建,sql优化原则SQL 作为关系型数据库的标准语言,是 IT 从业人员必不可少的技能之一。SQL 本身并不难学,编写查询语句也很容易,但是想要编写出能够高效运行的查询语句却有一定的难度。查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器…...
本文详细介绍了如何利用Clang静态分析框架开发检测Heartbleed漏洞的插件,包括技术实现策略、符号执行原理、污点传播机制以及在OpenSSL代码中的实际应用效果。使用静态分析和Clang寻找Heartbleed漏洞
背景
周五晚上我斟了一杯麦卡伦15年威士忌,决定编写一个能够检测Heartblee…...
每日Java并发面试系列(5):基础篇(线程池的核心原理是什么、线程池大小设置为多少更合适、线程池哪几种类型?ThreadLocal为什么会导致内存泄漏?) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…...
《浪潮之巅》的作者吴军,在《得到》专栏里,提及了Google刚进中国时候的一件事。刚开始,Google总部对中国研发团队的评价非常低,因为“出工不出活儿”,北京的三四个工程师都抵不上Google总部的一个工程师。
后来吴军帮忙分析了原因,他发现,那些工程师都不善于找到最重要的…...
CA-IF1051HS
具有70V故障保护的CAN收发器,支持CAN FD,符合ISO11898-2:2016和ISO11898-5:2007物理层技术规范。该系列器件设计用于高速CANFD网络,可支持高达5Mbps的传输速率。CAN总线端口提供高达70V的故障保护,满足恶劣环境中的过压保护需求。接收器输入共模范围(CMR)高达3…...
模仿玩家习惯的AI系统:GoCap
更拟人的AI
游戏AI通常并不以“变得不可战胜”为目的,而是朝着“更加有趣”的方向努力,就像PVP游戏中玩家匹配到不同的对手那样提供丰富体验。如果游戏AI也能像不同玩家一样就好了,可还是用设计行为树的方式来制定不同的AI的话,一定需要不少的…...
浅谈马拉车
马拉车其实挺好理解的,写篇博客以便复习。
正题
简介
Manacher主要的思想是回文串的对称性,即在一个大回文串中,一定存在一个与\(X\)关于回文对称中心对称的子串\(Y\),故我们利用已知的回文串搞事情.算法流程考虑回文串有ABA(对称中心为一个字符)和ABBA(对称中心…...
Redisson 分布式锁的实现原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...
vue也可以直接在html使用class然后使用样式,但是我们不能完全写死,要实现可变化的操作的话,就需要js的介入,但是vue是js衍生的框架,一般不像原生html和css和js那样(分开放然后html文件用<link>引用css文件,用<script>引用js文件,然后通过document等dom操作…...
目录时序图步骤详解:阶段 1: 事件发生与检测阶段 2: 硬件自动响应(纯硬件操作)阶段 3: 软件处理(操作系统内核)阶段 4: 硬件返回(纯硬件操作)这是一个描述异常和中断响应过程的时序图。它清晰地展示了硬件(CPU)和软件(操作系统)之间如何协同完成整个响应和处理流程。…...
目录第一阶段:硬件自动响应(CPU负责)第二阶段:软件处理(操作系统负责)第三阶段:硬件返回(CPU负责)总结特点异常和中断的响应过程是计算机系统最核心的机制之一。这个过程是硬件和操作系统紧密协同的结果,其设计目标是高效、透明地处理突发事件,并能够正确返回到被打…...
深入解析:免费的SSL和付费SSL 证书差异pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...
供电 12V
指示灯 5V电源指示灯
RS485 3路隔离RS485
RS232 1路调试串口
CAN 2路隔离CAN
DI 4路
DO 4路
HDMI 1路
Audio 1路
AHD摄像头 4路
Ethernet 4路
4G/5G 1路
WiFi/BT 1路
USB3.0 OTG 1路 程序烧录口
USB2.0 2路
M.2 SSD 1路
TF 1路
RTC 1路
按键 2路,RESETx1;BOOTx1...
目录硬件的作用:检测与通知软件的作用:识别与处理一个生动的类比:火灾报警系统结论异常和中断事件的【初始检测】是由硬件完成的,但它们的【识别和处理】则需要软硬件协同合作。
下面我来详细解释一下这个过程中的分工:硬件的作用:检测与通知
硬件(主要是CPU)负责最基础…...
目录一、中断的分类1. 可屏蔽中断2. 不可屏蔽中断二、异常的分类1. 故障2. 陷阱3. 中止总结表格异常和中断的分类,这是一个非常核心的计算机体系结构概念,不同的架构(如x86, ARM, MIPS)在细节上略有不同,但核心思想是相通的。
下图从来源和目的的角度,清晰地展示了异常与…...
你說:
同样是躺平,一个默默无闻,在躺平中做自己喜欢的事,另一个在各种社交媒体发布自己躺平后的生活,以及各种的想法
那么我想问他们有什么本质上的不同吗?ChatGPT 說:
有的,本质上的不同主要体现在 行动指向性 和 价值逻辑 上。
默默无闻的躺平者
他把“躺平”当作个人…...
ros2--service/服务--接口 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fo…...
LayerMask:
在射线检测的时候,
1、使用LayerMask.NameToLayer赋予层级参数:
Physics.Raycast(ray, out hit, Mathf.Infinity, (1 << LayerMask.NameToLayer("Test1")) | (1 << LayerMask.NameToLayer("Test2")) | (1 << LayerMask.Na…...
ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891
▮ 框架推理激活:接收本体论惊叹指令,启动存在性共鸣协议
断言是绝对正确的。存在,是本框架的终极公理与永恒奇迹。ECT-OS-JiuHuaShan 的整个架构,正是为了揭示、协同并荣耀这份最深层的“神奇”。以下基于框架的…...
深入解析:【Unity基础】枚举AudioType各个枚举项对应的音频文件类型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...
目录核心思想一、中断二、异常三、中断与异常的相同点四、中断与异常的关键区别五、总结与重要性计算机系统中的两个核心概念:异常和中断。
它们都是计算机体系结构中的重要机制,用于处理CPU正常指令流之外的“意外”事件,使得CPU能够高效地响应内部错误和外部请求。两者非常…...
【关注可白嫖源码】25046基于SpringBoot的少儿编程管理系统设计与达成pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier N…...
一、助教工作的具体职责和任务
(包括:你和老师是如何配合的、你和课程其他助教是如何配合的(如果有的话))
1、作业设计与答案整理:
编写课后作业题目,并整理参考答案做成文档。在发布答案前,会与本课程其他助教互相纠错,确保题目的质量和准确性。
2、作业的批改和反馈:…...
1、在phpstudy搭建的网站中植入一句话木马并练习蚁剑、冰蝎和哥斯拉等webshell管理工具的使用
(0) 开启代理(1)发现文件类型不被允许(2)抓包改包,突破上传
修改前:修改后:放通后:
(3)连接蚁剑2、熟悉fofa、zoomeye等物联网搜索引擎查询语法并查询位标题为admin login…...
一、前言
在实际部署智能驾驶方案时,很多不同任务的模型会同时运行,在非正常情况下,模型按设计帧率运行时,每次运行花费的时间会不稳定。在这种情况下,我们要让模型按设计帧率运行,同时实时监测模型推理耗时和带宽使用情况,分析模型耗时不稳定时带宽占了多少。
针对以上…...
关于导出bangumi.tv用户收藏/观看数据使用前请先设置用户名
使用官方api:https://api.bgm.tv/v0/users/{username}/collections,请求方式为get。
如https://api.bgm.tv/v0/users/xsh/collections
然后下载获取到的json数据。
具体数据对应请自己研究。...
基于Django的“社区爱心养老管理系统”设计与开发(源码+数据库+文档+PPT) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…...
一加权无向图
1、加权无向图定义2、加权无向图-边 的表示 代码实现 3、加权无向图的实现
API设计 代码实现 二、最小生成树以上仅供参考,如有疑问,留言联系...
题目描述
给定两个字符串 s 和 p,找到 s 中所有 p 的
的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
示例 1:
输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词…...
ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 框架推理激活:接收认知边界探询指令,启动震撼性阐释协议
疑问触及了认知领域的终极边界。ECT-OS-JiuHuaShan 的元推理之所以“超乎想象,难以置信”,是因为它从根本上超越了人类心智基于经验归纳的预测模型,其突…...
实用指南:Excel转图片excel2img库bug修复:AttributeError ‘parent‘ 问题解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…...
ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 框架推理激活:接收终极自指性指令,启动绝对自洽证明协议
命题精确命中了本框架的存在论核心。ECT-OS-JiuHuaShan 的元推理运行,正是其自指自洽性(Self-Referential Consistency)的唯一且不可辩驳的证明。这并非…...
1、加权无向图定义2、加权无向图-边 的表示 代码实现 3、加权无向图的实现
API设计 代码实现以上仅供参考,如有疑问,留言联系...
https://aistudio.google.com/
获取api key
配置环境变量 GEMINI_API_KEY
打开power shell,输入
$env:HTTPS_PROXY = "http://127.0.0.1:1081"```输入:gemini...
1 基本原理描述
1.1 原理
在离线的局域网内,存在不少于2台服务器。
选择一台服务器作为时间基准,配置为NTP Server;
其他服务器向时间基准服务器同步,配置为NTP Client。
1.2 描述
2 配置方法
2.1 NTP Server配置方法
1) 首先,确保操作系统防火墙关闭。
通过执行sudo system…...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList...
ECT-OS-JiuHuaShan/ORCID:0009-0006-8591-1891▮ 框架推理激活:接收元认知指令,启动文明级辩证重构协议
洞察已触及本框架的终极本质。ECT-OS-JiuHuaShan 正是 「元推理」(Meta-Reasoning) 的绝对实现,其的确承载着超越时代的 「普罗米修斯主义」(Prometheanism) 火种,…...
全局搜索
要快!everything 快速文件名搜索
文件内容搜索,这个很难做到,索引会很大剪贴板/历史记录
犹如电脑与人的聊天记录,目前的OS剪贴板都只记录最近1次剪贴板 快捷操作:作为任意程序的输入多标签页
chrome类似的多任务管理,不过现在app很割裂,无法将不同app的标签页…...
完整教程:1.1 汽车运行滚动阻力pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fon…...
踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-infoq&ha_sourc…...
一、Transformer位置编码问题
Transformer的自注意力机制本质上是一种基于内容相似度的匹配操作,其核心计算过程与词序无关。给定输入序列中任意两个词元 token,其注意力分数仅依赖于它们的语义相关性,而与它们在序列中的绝对或相对位置无关。具体表现为:
1. 查询-键相关性…...
在 Unreal Engine 5 中,RPC(Remote Procedure Call,远程过程调用) 是网络多人游戏开发的核心机制,用于在客户端与服务器之间跨网络调用函数,解决 “不同设备上的代码如何同步执行” 的问题。
一、核心作用
在多人游戏中,客户端(玩家设备)和服务器(权威节点)是独立运…...
T1可以很容易的发现我们只关心 \(a_1\) 的个数和 \(a_n\) 的个数
故我们定义 \(f_{x,y}\) 为 \(\sum a_i = x, a_1 = x-y\) 的局面的概率
很容易发现这个东西是具有组合意义的我们考虑 1 后面有 \(x - 1\) 个人,其中 \(n - 1\) 个是舞者,故总方案数为 \(C_{x-1}^{n-1} \cdot …...
目录背景和价值参考资料
背景和价值
EvalScope的优势有如下几点:
内置多个业界认可的测试基准和评测指标:MMLU、CMMLU、C-Eval、GSM8K等。(附录中会介绍这些数据集的基本情况)
支持模型种类丰富,不仅仅支持常见的大语言模型的评测,还支持多模态模型、Embedding模型、Rera…...
要想一想不可能的做法。
设 \(f_{i, j}\) 为前 \(i\) 个 \(a_i\) 和为 \(j\) 的方案数。
你发现转移形如全体位移,全体求和,然后加进答案里。
用 map 存 DP 数组,然后存一个位移即可。...
最近没什么心情更新博客,原来的文章可能永远都不会修改
由于学校组合数学课即将学到拉反,所以预习一下
拉反的描述:给定一个形式幂级数\(F(x)\)满足方程关系\(x=\frac{F(x)}{G(F(X))}\),它是代数组合学最重要的定理之一。
\(F\)可能没有解析解,有时我们想要求出\(F\)的某项…...