一文理解I/O多路复用模型
创作时间:
作者:
@小白创作中心
一文理解I/O多路复用模型
引用
CSDN
1.
https://blog.csdn.net/qq_73360961/article/details/145464594
I/O 多路复用模型
Linux 系统为了提高 I/O 效率,在用户空间和内核空间都引入了缓冲区的概念:
- 写数据时:将用户缓冲区的数据拷贝到内核缓冲区,然后写入硬件设备。
- 读数据时:从硬件设备读取数据到内核缓冲区,再拷贝到用户缓冲区。
I/O 多路复用模型前的 I/O 模型
在了解 I/O 多路复用模型之前,我们需要了解几种常见的 I/O 模型,以便区分它们的优缺点。
1. 阻塞型 I/O(Blocking I/O)
阻塞型 I/O 是最简单的一种 I/O 模型,分为两个阶段:
- 阶段一:用户进程尝试读取数据。如果数据尚未到达内核缓冲区,用户进程会被阻塞,直到数据可用。
- 阶段二:当数据到达内核缓冲区后,数据会被拷贝到用户缓冲区。在数据拷贝过程中,用户进程仍然被阻塞,直到拷贝完成,才会解除阻塞,继续处理数据。
2. 非阻塞型 I/O(Non-blocking I/O)
非阻塞型 I/O 也分为两个阶段,但与阻塞型不同的是:
- 阶段一:用户进程尝试读取数据。如果数据还没有到达内核缓冲区,内核进程会返回一个异常给用户进程。用户进程接收到异常后会不断尝试读取数据,直到数据准备就绪。
- 阶段二:与阻塞型 I/O 相似,当数据到达内核缓冲区后,会将数据拷贝到用户缓冲区,拷贝过程中用户进程仍然处于阻塞状态,直到拷贝完成,才能处理数据。
3. I/O 多路复用(I/O Multiplexing)
I/O 多路复用技术使得一个线程能同时处理多个 I/O 操作。当某个 I/O 操作变得可读或可写时,程序会得到通知,从而避免了不必要的等待,并充分利用 CPU 资源。
I/O 多路复用流程:
- 阶段一:用户进程通过调用
select()等方法,指定需要监听的多个 Socket。监听过程中,用户进程会阻塞,直到某个 Socket 的数据准备好。 - 阶段二:当某个或多个 Socket 变得可用时,用户进程会被通知,随后遍历可用的 Socket 并调用
recvfrom等方法读取数据。内核将数据从缓冲区拷贝到用户缓冲区,用户进程可以进行数据处理。
I/O 多路复用的优势:
- 减少无效等待:通过只关注那些就绪的 I/O 操作,避免了无谓的等待,提升了效率。
- CPU 资源优化:通过单线程实现多个 Socket 的监听,提高了系统资源利用率,尤其在高并发场景中表现优异。
4. I/O 多路复用的实现方式
I/O 多路复用有三种常见的实现方式:select、poll 和 epoll。select 和 poll 只会通知用户进程有 Socket 准备就绪,需要用户进程遍历所有 Socket 来确认到底是哪个,而 epoll 会直接把就绪的 Socket 写入用户空间。
1. select
- 特点:早期实现的 I/O 多路复用机制,每次调用时都需要将所有文件描述符从用户态拷贝到内核态。
- 限制:支持的文件描述符数量有限(一般为 1024 个),当连接数较多时,性能会急剧下降。
- 适用场景:小规模并发,连接数较少的应用。
2. poll
- 特点:类似于
select,但取消了文件描述符数量的限制,改为链表管理文件描述符。 - 缺点:性能随着文件描述符数量增加而下降,因为每次都需要遍历整个文件描述符集合。
- 适用场景:中等规模并发。
3. epoll(Linux)
- 特点:高效的 I/O 多路复用机制,适用于高并发场景。内核通过红黑树管理文件描述符,只返回发生事件的文件描述符,避免了遍历所有连接。
- 优势:性能优异,支持成千上万的并发连接。
- 适用场景:大规模并发、高吞吐量的网络服务,如 Nginx 和 Redis。
5. 总结
I/O 多路复用技术使得一个线程能够高效地处理大量并发 I/O 请求。通过非阻塞 I/O 和事件驱动机制,它显著减少了线程创建和切换的开销。三种常见实现方式(select、poll、epoll)各有优缺点,适用于不同规模和场景的应用。尤其是 epoll,在 Linux 系统中常用于高并发服务的实现,具备出色的性能表现。
热门推荐
家常炒粉丝:简单美味的下饭菜
七杀大运流年正财:命理解析与应对策略
AI时代下,如何调整情绪焦虑? 心理学教授彭凯平教你用“八正法”改变emo状态
如何理解直接经验和间接经验是源和流的关系呢?
如何应对高峰期限行的交通政策?这种应对策略对出行计划有何影响?
如何一句话表述机器学习的原理
背单词的思路:从目标设定到具体实施
苏州楼市回暖:新房认购量增五成,二手房签约量涨近七成
五行缺金的人是不是没有财运 五行缺金的人命运好不好
固态硬盘格式化选什么格式
打破性别刻板印象:培养孩子的多元发展
生产小说软件哪个好用一点
澳超第9轮前瞻:布里斯班狮吼vs珀斯光荣,副班长能否客场爆冷?
有趣的老人健脑益智小游戏有哪些 2025好玩的老人健脑益智手游合集
沙王渭河大桥实施交通管制,车辆需绕行至渭富或渭蒲公路大桥
如何进行安全合规的证券交易?这种交易如何降低风险?
“收到退款才知道新闻”,海底捞小便事件获退款顾客反应不一,十倍补偿款需等约7日
帕金森病的治疗方法有哪些?
MIC是什么接口?详解麦克风接口的类型与功能
平板支撑的标准练法,90%的人都没练对,教你正确姿势,防止腰痛
中评数据:香港鼓励生育政策初见效
借钱赖账高消费犯法吗?法律视角下的债务违约与高消费行为解析
什么是服务器端和客户端?它们之间有什么区别?
莫泊桑创作风格 莫泊桑人物介绍
梅花易数中的“宫看本宫与对冲”原理详解
10首写蝉的诗词,独怡乐而长吟,似贞士之介心
浴室柜镜柜尺寸一般是多少 卫生间镜柜安装多高
牛股产业链|光线传媒大涨背后:票房分账预期支撑股价 行业整体复苏有待时日
一战爆发环环相扣:奥匈宣战,沙俄跟进,德国再跟进,英法也跟进
大型锅炉房隔声降噪设计与治理方案