操作系统-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 数组) 动态分配(内核维护)
性能 低效(线性扫描) 低效(线性扫描) 高效(事件驱动)
相关推荐
linux kernel8 小时前
第六部分:数据链路层
服务器·网络
Coder个人博客13 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统
较劲男子汉15 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
Doro再努力16 小时前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
wypywyp16 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
Doro再努力16 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene16 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
不像程序员的程序媛16 小时前
Nginx日志切分
服务器·前端·nginx
忧郁的橙子.16 小时前
02-本地部署Ollama、Python
linux·运维·服务器
chian-ocean16 小时前
深入 CANN:使用 `tbe-op` 构建自定义高性能算子
网络