操作系统-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 数组) 动态分配(内核维护)
性能 低效(线性扫描) 低效(线性扫描) 高效(事件驱动)
相关推荐
..过云雨7 分钟前
11.【Linux系统编程】文件系统详解——从磁盘硬件到文件系统
linux·c++·后端·缓存
qq_2715817932 分钟前
Ubuntu OpenCV C++ 获取MYNT EYE S1030-IR摄像头图像
linux·opencv·ubuntu
檀越剑指大厂38 分钟前
从被动查询到主动贡献:Answer的知识社区进化论
网络
1560820721939 分钟前
在Ubuntu20.04下安装iperf3
linux·ubuntu
广然1 小时前
跨厂商(华为 & H3C)防火墙 GRE 隧道部署
网络·华为·防火墙·h3c
Hello.Reader1 小时前
Flink DataStream 从 WindowStrategy 到 WindowProcessFunction 的全链路
网络·数据库·flink
交换机路由器测试之路1 小时前
交换机路由器基础(一)基础概念
网络·智能路由器·路由器·交换机·网络基础·通信基础
G31135422731 小时前
云服务器系统 选择Windows和Linux的理由
linux·服务器·windows
BS_Li1 小时前
【Linux系统编程】调试器-gdb/cgdb
linux·调试器·gdb/cgdb
luoganttcc1 小时前
介绍一下 multiprocessing 的 Manager模块
linux·运维·服务器