操作系统-I/O多路复用

I/O 多路复用:

通过内核监控多个文件描述符(如 TCP 连接),当某个文件描述符就绪(如数据到达或可写)时,内核通知用户态程序进行处理。

程序无需阻塞等待每个文件描述符,而是通过一次系统调用(如 selectpollepoll)批量检查状态,减少用户态和内核态的频繁切换。

对于 TCP 连接,I/O 多路复用可以高效管理大量并发连接,避免为每个连接创建独立线程或进程,提升性能和资源利用率。

selectpollepoll 的特性对比:

特性 select poll epoll
文件描述符数量 通常限制为 1024(FD_SETSIZE) 无限制 无限制
效率 每次调用需要遍历所有文件描述符 每次调用需要遍历所有文件描述符 仅返回就绪的文件描述符
触发模式 仅支持水平触发(LT) 仅支持水平触发(LT) 支持水平触发(LT)和边缘触发(ET)
适用场景 文件描述符数量较少 文件描述符数量较少 文件描述符数量较多
可移植性 跨平台 跨平台 Linux 特有
API 复杂度 简单 较简单 较复杂
内存开销 固定大小(FD_SETSIZE) 动态分配(pollfd 数组) 动态分配(内核维护)
性能 低效(线性扫描) 低效(线性扫描) 高效(事件驱动)
相关推荐
ybdesire3 分钟前
注入型漏洞以及agent-audit的检测原理
网络·安全·风险·智能体·ai安全
末代iOS程序员华仔5 分钟前
Cursor 编辑器 + Figma‑MCP 服务器(真正让 Codex 直接读取 Figma 链接,高级方案)
服务器·编辑器·figma
小此方8 分钟前
Linux加餐(二):藏在Linux中的设计模式(二)单例模式与线程池
linux·单例模式·设计模式
李白你好9 分钟前
今日网络技术热点:【计算机网络 | 数据链路层8:CSMA/CD
网络·计算机网络
猫吃了源码11 分钟前
Linux系统制作 Ubuntu Server 24.04 启动U盘详细教程
linux·服务器·ubuntu
hehelm12 分钟前
仿muduo库实现高并发服务器—EventLoop
linux·服务器·网络·c++
Lucky092815 分钟前
codex 安装前置软件
linux·运维·macos
今儿敲了吗16 分钟前
CN——HTTP 工作流程
网络·网络协议·http
mengge.cloud24 分钟前
0823Keepalived + LVS(DR) + MariaDB主主 小白完整实战教程
linux·运维·网络·oracle·负载均衡·mariadb·lvs
爱吃苹果的梨叔5 小时前
训练集群网络中断怎么办?智算机房的 Console 串口排障方案
网络·python·智能路由器·php