OS 核心知识点全解析(七)
1. 同步和异步的区别一、先给“一句话本质版”面试直接用同步和异步的核心区别在于发起操作的一方是否需要主动等待并参与结果的完成。同步我发起我等结果异步我发起不等结果好了再通知我⚠️ 注意同步 ≠ 阻塞异步 ≠ 非阻塞这是面试最爱卡人的点二、从“谁在等”这个角度理解最稳维度同步异步发起方是否等待结果是否完成通知方式调用返回回调 / 事件 / 通知主动权用户线程内核 / 运行时谁等谁就是同步三、用网络 I/O 讲清楚你现在的主线1️⃣ 同步 I/OBlocking / Non-blocking / epoll共同点重点数据拷贝这一步都是用户线程主动调用的。举例epollepoll_wait() // 等事件同步 recv() // 主动拷贝数据同步你得亲自去收没人帮你“送上门” 所以epoll 是同步 I/O2️⃣ 异步 I/OAIO / io_uring特点io_uring_submit() → 立即返回 → 内核完成数据准备 拷贝 → 通知用户用户线程不参与等待数据已经在用户缓冲区这才是真正的异步四、一个经典对比面试官最爱同步你亲自去取外卖下单 → 去店里等 → 拿到外卖 → 回家异步外卖送到你门口下单 → 继续打游戏 → 外卖敲门关键不是走没走而是等没等五、再拆一个“最容易混”的点同步 vs 阻塞必须会同步异步关注点结果获取方式结果获取方式是否阻塞不一定不一定四种常见组合组合是否存在举例同步 阻塞✅阻塞 socket同步 非阻塞✅非阻塞 轮询异步 阻塞❌逻辑上矛盾异步 非阻塞✅AIO / io_uring六、面试官“致命追问”怎么答Q为什么 epoll 不是异步标准回答epoll 只负责事件通知真正的数据读取仍然需要用户线程调用 read/recv 来完成因此它属于同步 I/O。Q那为什么大家常说“epoll 是异步的”加分回答那是一种工程上的“异步编程模型”但在操作系统 I/O 语义上它仍然是同步 I/O。七、一句“总结版”给你收尾同步和异步的区别不在于是否阻塞而在于结果是由调用方主动获取还是由系统在完成后通知调用方在 I/O 场景下只要数据拷贝需要用户线程参与就属于同步 I/O。2. 到底什么是Reactor这个问题问得非常到位。 因为Reactor 不是一个 API不是 epoll不是 NIO而是一种架构思想 / 设计模式。 很多人学到后面就是卡在这里。我按“一句话 → 拆开 → 对比 → 落地”的方式给你彻底讲清楚。一、先给一句“本质定义”面试直接用Reactor 是一种事件驱动的网络编程模型它通过一个事件分发器监听 I/O 事件并将事件分发给对应的处理器从而用少量线程高效处理大量连接。关键词只有三个事件驱动、分发、回调处理二、为什么会有 Reactor背景非常重要传统阻塞模型的问题一个连接 → 一个线程 → 阻塞 read()问题线程多切换频繁内存开销大扛不住高并发Reactor 是为了解决“高并发连接”问题而生的三、Reactor 的核心角色必须能说出来一个完整的 Reactor 至少有4 个角色1️⃣ Reactor事件分发器监听所有 I/O 事件本身不处理业务只负责“发生了什么” 通常就是select / poll / epoll2️⃣ Demultiplexer多路分发器内核中的事件机制将事件分离出来⚠️ 在面试中Reactor 和 Demultiplexer 常合在一起说3️⃣ Handler事件处理器真正处理事件的地方比如AcceptHandlerReadHandlerWriteHandler4️⃣ Event Loop事件循环while (true) { events wait_for_events(); dispatch(events); } Reactor 的“心跳”四、Reactor 的完整工作流程以 TCP 服务端为例服务端启动监听 socketReactor 把 listen_fd 注册到 epoll客户端连接到来 →EPOLLINReactor 分发给AcceptHandler新连接 fd 注册到 epoll客户端发数据 →EPOLLINReactor 分发给ReadHandler处理完后可能注册EPOLLOUT可写事件到来 →WriteHandler核心事件 → 分发 → 回调五、Reactor 和你前面学的 epoll 是什么关系这是一个非常高频面试点。正确关系是epoll 是 Reactor 的底层实现工具之一而 Reactor 是一种设计模式。Reactor思想 / 架构epollLinux 提供的事件通知机制不要把它们等号六、三种经典 Reactor 模型 面试重点1️⃣ 单 Reactor 单线程Reactor 事件处理 业务处理 全在一个线程✅ 实现简单❌ 业务逻辑会阻塞 Reactor适合教学、小工具2️⃣ 单 Reactor 多线程Reactor 负责 I/O Worker 线程池处理业务Reactor 不阻塞业务异步处理最常见3️⃣ 主从 Reactor 多线程 Nginx / NettyMain Reactoraccept Sub Reactorread/write Worker Poolbusinessaccept 和 I/O 分离极致高并发七、Reactor vs Proactor经常一起问对比ReactorProactor事件类型I/O 就绪I/O 完成谁读数据应用内核I/O 模型同步 I/O异步 I/O典型实现epollAIO / io_uring一句话总结Reactor 是“你来读”Proactor 是“我帮你读好再通知你”。八、一个极其容易加分的回答点Q为什么 Redis / Nginx 用 Reactor标准回答因为 Reactor 模型基于事件驱动和非阻塞 I/O能够用少量线程高效管理大量连接避免线程切换和锁竞争非常适合高并发网络服务器。九、一句话总结终极版Reactor 本质是一种基于事件分发的网络架构模式它通过事件循环监听 I/O 就绪事件并将事件分发给对应的处理器从而在少量线程下实现高并发、低开销的网络处理。

相关新闻

Comsol 激光脉冲熔池的奇妙探索

Comsol 激光脉冲熔池的奇妙探索

comsol 激光脉冲熔池在材料加工和制造领域,激光脉冲熔池的研究至关重要。Comsol 作为一款强大的多物理场仿真软件,为我们深入探究激光脉冲熔池现象提供了有力工具。 Comsol 中的物理场设定 在 Comsol 里模拟激光脉冲熔池,首先要考虑多个物理场…

2026/7/4 21:32:21 阅读更多 →
day 43 动态规划

day 43 动态规划

文章目录LeetCode 1143 最长公共子序列LeetCode 1035 不相交的线LeetCode 53 最大子序和LeetCode 392 判断子序列LeetCode 1143 最长公共子序列 字符不相等时dp数组的递推可以有dp[i - 1][j]和dp[i][j - 1]得。 class Solution {public int longestCommonSubsequence(String …

2026/7/2 23:02:25 阅读更多 →
基于SSM+VUE的戏曲文化传播平台[java]-计算机毕业设计源码+LW文档

基于SSM+VUE的戏曲文化传播平台[java]-计算机毕业设计源码+LW文档

摘要:戏曲作为中华民族传统文化的瑰宝,承载着丰富的历史与艺术价值。本文阐述了一个基于SSM(Spring SpringMVC MyBatis)后端框架与Vue前端框架的戏曲文化传播平台的设计与实现过程。该平台整合了戏曲信息展示、资讯评论、演出预…

2026/7/4 1:36:36 阅读更多 →

最新新闻

BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数

BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数

BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数 【免费下载链接】bigfunctions Supercharge BigQuery with BigFunctions 项目地址: https://gitcode.com/gh_mirrors/bi/bigfunctions 想要快速掌握BigFunctions的强大功能吗?这篇终极指…

2026/7/4 21:32:02 阅读更多 →
CANN/hccl代码示例集

CANN/hccl代码示例集

HCCL Code Examples 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…

2026/7/4 21:30:02 阅读更多 →
CANN/mat-chem-sim-pred PID阶跃响应特征算法

CANN/mat-chem-sim-pred PID阶跃响应特征算法

PidStepResponseFeatures Algorithm 【免费下载链接】mat-chem-sim-pred 面向工业领域,聚焦计算仿真、预测两大核心场景,构建面向流程工业"机理数据"双轮驱动的领域计算层,推动AI for Science在材料化学领域的深度应用。 项目地址…

2026/7/4 21:30:02 阅读更多 →
ReScript genType 实战案例:电商平台前端架构中的类型安全实践 [特殊字符]

ReScript genType 实战案例:电商平台前端架构中的类型安全实践 [特殊字符]

ReScript genType 实战案例:电商平台前端架构中的类型安全实践 🛒 【免费下载链接】genType Auto generation of idiomatic bindings between Reason and JavaScript: either vanilla or typed with TypeScript/FlowType. 项目地址: https://gitcode.c…

2026/7/4 21:24:00 阅读更多 →
如何自定义Cosmos-Transfer1-DiffusionRenderer:从模型权重到推理参数的高级配置

如何自定义Cosmos-Transfer1-DiffusionRenderer:从模型权重到推理参数的高级配置

如何自定义Cosmos-Transfer1-DiffusionRenderer:从模型权重到推理参数的高级配置 【免费下载链接】cosmos-transfer1-diffusion-renderer Cosmos-Transfer1-DiffusionRenderer: High-quality video de-lighting and re-lighting based on Cosmos video diffusion fr…

2026/7/4 21:21:59 阅读更多 →
opmsg高级功能:Cc/Bcc支持、密钥链接和会话密钥管理

opmsg高级功能:Cc/Bcc支持、密钥链接和会话密钥管理

opmsg高级功能:Cc/Bcc支持、密钥链接和会话密钥管理 【免费下载链接】opmsg opmsg message encryption 项目地址: https://gitcode.com/gh_mirrors/op/opmsg opmsg是一款专注于消息加密的工具,提供了强大的安全通信能力。本文将深入介绍opmsg的三…

2026/7/4 21:19:58 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻