epoll专题
Epoll专题讲座 技术研究部开发三组:邹加城 目录 什么是IO多路复用? Select EPOLL Epoll的优点有哪些? Epoll的两种工作模式 Epoll的具体操作 Epoll的事件类型 编程注意事项 什么是IO多路复用? 我们知道利用介质的位传输率大于传输一路信号的能力这一特性,将多路信号同时在同一介质上传输(复用)的技术称为多路复用技术。这个解释来自无线,但是对我们也一样,就是将多个数据放在一个IO中进行传输我们称之为IO多路复用. 要想完全理解I/O多路复用,我们先了解五种I/O模型: 阻塞I/O模型 我们已TCP通讯为例当进程调用recv函数,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回,期间一直在等待。我们就说进程在从调用recv开始到它返回的整段时间内是被阻塞的。 非阻塞I/O模型 进程把一个套接口设置成非阻塞是在通知内核:当所请求的I/O操作非得把本进程投入睡眠才能完成时,不要把本进程投入睡眠,而是返回一个错误。也就是说当数据没有到达时并不等待,而是以一个错误返回。 I/O复用模型 调用select或poll,在这两个系统调用中的某一个上阻塞,而不是阻塞于真正I/O系统调用。 阻塞于select调用,等待数据报套接口可读。当select返回套接口可读条件时,调用recev将数据报拷贝到应用缓冲区中。 信号驱动I/O模型 首先开启套接口信号驱动I/O功能, 并通过系统调用sigaction安装一个信号处理函数(此系统调用立即返回,进程继续工作,它是非阻塞的)。当数据报准备好被读时,就为该进程生成一个SIGIO信号。随即可以在信号处理程序中调用recv来读数据报,并通知主循环,让它来读数据。 异步I/O模型 告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核拷贝到用户自己的缓冲区)通知我们。这种模型与信号驱动模型的主要区别是:?????????? 信号驱动I/O:由内核通知我们何时可以启动一个I/O操作,?????????? 异步I/O模型:由内核通知我们I/O操作何时完成 I/O多路复用的典型应用场合 当客户处理多个描述字时,必须使用I/O复用 如果一个服务器要处理多个服务或者多个协议(例如既要处理TCP,又要处理UDP),一般就要使用I/O复用。 支持I/O复用的系统调用 目前在linux下支持I/O复用的系统调用有select、poll、epoll: select int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds, struct timeval *timeout); readfds:用于存放我们要检测的可读的文件描述符 writefds:用于存放我们要检测的可写的文件描述符 exceptfds:用于存放我们要检测的是否发生异常的文件描述符 Timeout:用于设置超时 SELECT的操作调用 FD_SET(int fd, fd_set *set); 将一个文件描述符加入到文件描述符集合里 FD_CLR(int fd, fd_set *set); 删除一个文件描述符 FD_ISSET(int fd, fd_set *set); 判断文件描述符是否在这个集合里 FD_ZERO(fd_set *set); FD_ZERO是将这个集合清零。 EPOLL epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPUs利用率。 Epoll的优点 支持一个进程打开最大数目的socket描述符为一个进程最大能打开的文件数量. 我们可以用cat /proc/sys/fs/file-max命令来查看而select能打开的最大数目为1024.其实这个值也可以通过修改linux/posix_types.h这个配置文件再重新编译内核来改变。 IO效率不随FD数目增加而线性下降 传统的select/poll另一个致命弱点就是当你拥有一个很大的socket集合,不过由于网络延时,任一时间只有部分的socket是“活跃”的,但是select/poll每次调用都会线性扫描全部的集合,导致效率呈现线性下降。但是epoll不存在这个问题,它只会对“活跃”的socket进行操作 。 加速内核与用户空间的消息传递 无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。 思考? 从epoll的优点来看我觉得他完
您可能关注的文档
- dhd不论你买不买保险你都已经投保了13页.ppt
- Delphi教学_第01章_Delphi概述.ppt
- Directindustry-工业领航.ppt
- Django嵌入式论文Django发展历史以及功能简介.doc
- Disc测试题及讲解.pptx
- DMA传输原理.ppt
- DCYX世联-江云山墅2012年度营销策略.ppt
- DNA实验室要求.doc
- DISC人格分析 2.ppt
- dna提取的各种方法介绍.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 虹口区2009学年第一学期高三英语期终教学质量监控测试卷(附答案).doc VIP
- CNAS-CL01-2018检验和校准实验室能力认可准则培训教材.ppt
- GMP标准简介(程克文)课件.pptx VIP
- 2025年中国大唐集团有限公司校园招聘笔试参考题库附带答案详解.docx
- 民族药四数九里香.pptx VIP
- 2022年四川省雅安市中考数学试卷真题(附答案详解)文字可复制.pdf
- 2026年春季北师大版(2024)三年级下册数学教学计划(含进度表).docx VIP
- 党支部2025年度组织生活会个人对照在学习贯彻党的创新理论、在加强党性锤炼、在联系服务群众、在发挥先锋模范作用、在改作风树新风存在的不足.docx VIP
- 职业生涯规划与就业创业指导 第3版 第4章 生涯目标与职业决策.ppt VIP
- 2026年Shopee店铺运营实战手册.pptx
原创力文档

文档评论(0)