美文网首页禅与计算机程序设计艺术
select 与 epoll 的原理极简教程

select 与 epoll 的原理极简教程

作者: 光剑书架上的书 | 来源:发表于2021-04-08 23:44 被阅读0次

select 的三个细节:

1. select 调用需要传入 fd 数组,需要拷贝一份到内核,高并发场景下这样的拷贝消耗的资源是惊人的。(可优化为不复制)

2. select 在内核层仍然是通过遍历的方式检查文件描述符的就绪状态,是个同步过程,只不过无系统调用切换上下文的开销。(内核层可优化为异步事件通知)

3. select 仅仅返回可读文件描述符的个数,具体哪个可读还是要用户自己遍历。(可优化为只返回给用户就绪的文件描述符,无需用户做无效的遍历)

所以 epoll 主要就是针对这三点进行了改进。

1. 内核中保存一份文件描述符集合,无需用户每次都重新传入,只需告诉内核修改的部分即可。

2. 内核不再通过轮询的方式找到就绪的文件描述符,而是通过异步 IO 事件唤醒。

3. 内核仅会将有 IO 事件的文件描述符返回给用户,用户也无需遍历整个文件描述符集合。

相关文章

  • select 与 epoll 的原理极简教程

    select 的三个细节: 1. select 调用需要传入 fd 数组,需要拷贝一份到内核,高并发场景下这样的拷...

  • Linux下Socket编程(四)——epoll的使用

    简介 epoll与select epoll_create epoll_ctl epoll_wait ET、LT模式...

  • 2019-07-10 epoll, 单进程---单线程的非阻塞

    单进程服务器-----epoll IO多路复用 基本原理就是select,poll,epoll这个function...

  • epoll

    单进程服务器-----epoll IO多路复用 基本原理就是select,poll,epoll这个function...

  • 今日份打卡 226/365

    技术文章epoll与select

  • Select & Epoll原理

    预备知识 等待队列 等待队列有一个等待队列头,其他加入这个等待队列的需要加在这个头上。 需要加入等待队列的话,可以...

  • Select_poll_epoll详解

    Select_poll_epoll详解 Select_poll_epoll详解参考链接epoll函数closeep...

  • epoll和select的原理

    IO多路复用的原理 IO多路复用的四个关键词:监控者、内核态、用户态、文件句柄。IO多路复用的五个关键问题(步骤)...

  • Epoll实现原理

    Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么? 网上虽然也...

  • Epoll原理

    Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么? 网上虽然也...

网友评论

    本文标题:select 与 epoll 的原理极简教程

    本文链接:https://www.haomeiwen.com/subject/fuvbkltx.html