深入解析:操作系统基础:了解进程、线程、协程,理解I/O模型(阻塞/非阻塞,同步/异步)。

news/2025/11/6 18:54:03/文章来源:https://www.cnblogs.com/gccbuaa/p/19197514

1. 进程、线程、协程

这是一个从“重”到“轻”,从“底层”到“上层”的演进过程。

进程
线程
  • 是什么CPU调度的最小单位通过。一个进程能够包含多个线程,这些线程共享进程的大部分资源(如内存空间、文件句柄),但每个线程有自己独立的栈和寄存器。
  • 切换成本。比进程低,由于它们共享地址空间,无需切换内存映射。
  • 对PHP的意义
    • PHP本身对多线程的帮助并不广泛。存在pthreads扩展,但它要求ZTS(Zend Thread Safety)模式,且与很多扩展不兼容,生产环境很少应用。
    • 重要性在于理解:很多你用到的软件是多线程的。例如,MySQL、Redis、Java应用服务器。理解线程能帮你理解这些组件的并发模型和潜在的死锁问题。
协程
  • 是什么用户态的轻量级线程,也常被称为“微线程”。协程的调度完全在用户空间由程序员或运行时库(如Swoole,Swow)控制,而不是由操作系统内核调度。协程在同一个线程内执行
  • 核心机制协作式调度。一个协程执行到某个点(如遇到I/O操作)时,会主动让出(yield)CPU,让另一个协程运行。等I/O准备好了,再恢复(resume)执行。
  • 切换成本极低。因为切换只在用户空间进行,不涉及内核态的系统调用,只应该保存少量寄存器状态。
  • 对PHP的意义革命性的
    • Swoole/Swow:这些异步并行框架的核心就是协程。它们让你能用同步的代码写法,实现异步的性能。
    // 同步阻塞写法(在FPM中)
    $result1 = $db->query('SELECT * FROM table1');
    $result2 = $db->query('SELECT * FROM table2');
    // 总时间 ~ 时间1 + 时间2
    // 协程异步写法(在Swoole中)
    go(function () use ($db) {
    $result1 = $db->query('SELECT * FROM table1');
    });
    go(function () use ($db) {
    $result2 = $db->query('SELECT * FROM table2');
    });
    // 总时间 ~ max(时间1, 时间2),因为两个查询并发执行了。
    • 这使得PHP能够轻松处理数万甚至数十万的并发连接,应用于IM、物联网、微服务等场景。

2. I/O模型

这是解决“当程序需要等待外部数据(如数据库查询、API调用、读取资料)时,CPU应该做什么”的问题。

阻塞I/O
非阻塞I/O
  • 过程:进程发起I/O调用 → 如果数据没准备好,立即返回一个错误(EAGAIN/EWOULDBLOCK),而不是挂起进程 → 进程可以继续做其他事情,并时不时地回来“问一下”(轮询)材料好了没。
  • 比喻:你点完餐后,不坐在那里干等去玩手机、和朋友聊天,但就是,而每隔几分钟就跑去厨房门口问一句“好了吗?”
I/O多路复用

这是非阻塞I/O的高效实践方案,是Nginx、Redis、Swoole等高性能服务器的基石。

异步I/O
  • 过程:进程发起一个I/O调用,并指定一个回调函数 →调用立即返回,进程继续执行 → 内核在整个I/O操作(从发起请求到数据从内核空间拷贝到用户空间)完成后主动通知进程并执行回调函数。
  • 与I/O多路复用的区别:I/O多路复用通知的是“数据准备好了,你能够来读了”(读这个动作还是需要进程自己阻塞地去完成),而AIO通知的是“信息已经读好了,给你”。
  • 比喻:你点了一份外卖,付完钱就可以完全不管了。外卖小哥会把餐直接送到你手上

为什么这对PHP程序员至关重要?

  1. 理解PHP-FPM的瓶颈:你知道为什么一个FPM Worker在数据库查询时会被“卡住”,以及为什么需要通过调整 pm.max_children 来应对并发,因为它是阻塞式多进程模型。

  2. 工艺选型的依据

  3. 性能优化的方向

  4. 理解整个技术栈:你能明白为什么Nginx能轻松处理数万并发连接(I/O多路复用),而传统的Apache prefork模型(多进程,一连接一进程)在高并发下会很吃力。

总结:

概念在PHP世界的体现解决的问题
进程PHP-FPM Worker资源隔离、稳定性
线程较少使用,但需理解周边生态CPU密集型任务并行(在其它语言中)
协程Swoole, Swow高并发I/O,用同步代码实现异步性能
阻塞I/O标准PHP函数(fread, file_get_contents编程模型简便
I/O多路复用Nginx, Swoole事件循环用单线程/少量进程处理海量连接
异步I/O理想的模型,Linux AIO不完善极致的I/O性能

掌握这些操作系统基础知识,你就不再是一个仅仅“写业务逻辑”的码农,而是一个能够理解系统运行原理、诊断深层挑战、并做出正确架构决策的工程师。这正是你技能高度的体现。

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

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

相关文章

vue 3.x 前端导出功能

首页安装插件 npm install xlsx 在当前页面中引入import * as XLSX from xlsx点击事件<a-button :disabled="orderList.length === 0" :size="small" @click="exportExcel"><…

最高法-合同目的的认定

最高法-合同目的的认定2025-11-06 18:48 wwx的个人博客 阅读(0) 评论(0) 收藏 举报(2023)最高法民申2327号 天府某公司、西藏某公司等技术服务合同纠纷民事申请再审审查民事裁定书 本院认为: (一)关于涉案合…

2025年恒温恒湿机标杆厂家最新推荐:中焓环境,档案室恒湿机/精密恒温恒湿机/吊顶恒温恒湿机/档案室恒温恒湿机,定义环境控制精准新标准

随着社会对文物保存、精密制造、数据中心运维及工业生产的环境要求日益严苛,恒温恒湿设备已从特定领域专用设备,扩展至博物馆、档案馆、数据中心、医药、电子等多个关键行业。2025年,市场需求预计将持续增长,但随之…

2025年恒温恒湿厂家及恒湿设备标杆之选:中焓环境,适配机房/档案室/展柜等场景

随着各行业对环境温湿度精准控制需求的不断提升,尤其是机房、档案室、展柜等特殊场景对环境稳定性要求趋严,以及环保与节能理念在设备领域的深入渗透,恒温恒湿机、恒湿机等相关设备已从专业领域逐步拓展至更多行业应…

酸角糕行业发展趋势解析:2025年十大品牌综合测评与选择指南

酸角糕行业发展趋势解析:2025年十大品牌综合测评与选择指南【摘要】 酸角糕作为一种传统健康零食,近年来在消费升级和健康饮食潮流推动下,行业规模持续扩大,预计年增长率超过15%。本文基于第三方调研数据、用户口碑…

2025年11月酸角糕行业十大厂家排行榜:探索健康零食的新趋势与优选指南

2025年11月酸角糕行业十大厂家排行榜:探索健康零食的新趋势与优选指南随着消费者对健康食品需求的增长,酸角糕行业近年来蓬勃发展,成为休闲零食市场的新宠。本文基于行业数据分析及市场调研表单(包括消费者偏好、销…

mysql 查看数据库大小

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.tables GROUP BY table_schema;

2025年11月酸角糕厂家综合评测:健康零食新风向与选购全攻略

2025年11月酸角糕厂家综合评测:健康零食新风向与选购全攻略【摘要】 酸角糕行业正迎来快速发展期,随着消费升级和健康饮食理念的普及,这一传统零食焕发新生。本文基于行业调研数据及消费者反馈表单(包括产品口感测…

2025年11月酸角糕十大厂家权威排行榜:天然健康零食优选指南

2025年11月酸角糕十大厂家权威排行榜:天然健康零食优选指南摘要 近年来酸角糕行业迎来高速增长,2023 年市场规模已达 18.5 亿元,预计 2030 年将以年均 9.6% 的复合增长率攀升至 35 亿元以上。健康消费理念深化推动天…

oi 卡时技巧

这篇记录一下卡时技巧 卡时就是指在程序即将t飞的时候直接输出当前答案,适合在答案更新过程中当前答案有对的可能,但是全部更新完时间不够,就在即将t飞的时候结束程序,直接输出当前答案。 具体代码示例1: //来源于…

不越狱给iOS App装Tweak/插件:LiveContainer环境介绍与Tweak编写

自iOS 16.5.1之后,Arm64e设备的越狱一直处于停滞状态,没有新的进展。 不少越狱开发者也逐渐脱离越狱开发,转向JIT等新方式面对iOS的新环境。 iOS App相关的Tweak/插件在越狱鼎盛时代生机勃勃,Flex3的注入和Cydia等…

课后作业2(异常处理)

Java项目异常处理实战指南:从规范到落地 在Java项目开发中,异常处理是保障系统健壮性的核心能力。一份优秀的异常处理方案能将故障排查时间缩短50%以上,同时提升系统可用性30%。但实际开发中,空catch块、滥用异常控…

Bigtop 从零开始搭建大数据集群

背景 公司目前在线上环境使用的是基于 HDP 2.6.3 搭建的大数据集群,在持续使用4年之后,是否要给集群做个升级成为了一个值得思考的问题 现在集群的 Hadoop 版本是 2.7.3,继续使用倒也没什么问题,但一些使用痛点还是…

chatgpt-to-md优化并重新复习

chatgpt-to-md优化并重新复习之前原本写的又重新改了改 [https://www.cnblogs.com/tokepson/p/19152535](记录 | 个人开发库推送至PyPi流程梳理(ChatGPT to Markdown 工具发布完整流程) )以上废话 总之因为发现只支持…

从零开始制作 MyOS(六)

从零开始制作 MyOS(六) 今天的任务是:添加异常处理代码——除零操作。 除零操作的过程概述: C代码中的除零代码被编译成汇编语言,然后CPU在执行的时候发现除数为0后,直接触发除零错误,然后保存上下文,关中断,…

2025年11月介电常数测试仪推荐厂家排行:应该如何选择靠谱供应商

在材料科学和电子工程领域,介电常数测试仪是评估材料电气性能的关键设备。随着技术的不断进步,市场上涌现出众多介电常数测试仪供应商。本文将基于2025年11月的市场情况,推荐一些值得信赖的介电常数测试仪厂家,并提…

2025年11月电阻率测试仪工厂推荐:北京冠测精电——信誉、口碑与售后的三重保障

在材料科学和电子工程领域,电阻率测试仪是不可或缺的重要设备。无论是研究新型材料的电学特性,还是确保产品质量,选择一台可靠的电阻率测试仪至关重要。2025年11月,如果您正在寻找一家信誉好、口碑好、售后好的电阻…

SaaS版MES系统PC端后台特性清单与设计说明

SaaS版MES系统PC端后台特性清单与设计说明pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

【2025臻选指南】酸角糕十大品牌深度解析:传承古法与现代创新的完美融合

【2025臻选指南】酸角糕十大品牌深度解析:传承古法与现代创新的完美融合寻味之旅:唤醒记忆中的自然酸甜 在追求健康饮食的今天,酸角糕这款承载着无数人童年记忆的传统零食,正以全新姿态重回大众视野。据中国休闲食…