操作系统 · 单选题 · 第 29 题
计算机基础面试八股 · 第 29 题
Linux 下 epoll 相比 select 的优势是?
- A只返回就绪的文件描述符,不必每次线性扫描全部描述符,也没有 1024 的默认上限
- Bepoll 是真正的异步 IO,内核会把数据直接读到用户缓冲区后再通知应用
- Cepoll 只能监听 UDP 套接字,因此省去了 TCP 连接管理带来的那部分开销
- Depoll 每次调用都要把整个描述符集合从用户态拷贝到内核态,保证数据一致
答案
A A. 只返回就绪的文件描述符,不必每次线性扫描全部描述符,也没有 1024 的默认上限
解析
select 每次调用都要拷贝整个 fd 集合并线性扫描,还受 FD_SETSIZE(通常 1024)限制。epoll 用 epoll_ctl 把 fd 注册一次,内核用回调把就绪的 fd 放进就绪链表,epoll_wait 只返回就绪的那些。epoll 仍是同步 IO 多路复用,数据要应用自己读;真正的异步 IO 是 io_uring、AIO 一类。