I/O复用--select、poll、epoll

本文详细对比了select、poll和epoll三种I/O复用机制的特点和区别,包括它们的具体实现、工作模式、支持的最大文件描述符数目限制及事件集的不同。深入探讨了LT和ET模式的工作原理,以及epoll在高效场景下的优势和潜在局限。

I/O复用–select、poll、epoll

select, poll, epoll 这三组系统调用用以实现I/O复用

共同点

  1. 可以同时监听多个文件描述符。
  2. 都支持等待时间 timeout,直到有一个或者多个文件描述符上有时间发生时返回;等于-1,永远阻塞,直到有事件发生;等于0,不阻塞,立即返回。
  3. 返回值就是就绪的文件描述符的数量。

不同点

这三者的区别主要是具体实现、工作模式、支持的最大文件描述符数目限制以及事件集四个方面的不同:

1. 具体实现:

select 和 poll 采用 轮询 方式。每次调用都要扫描整个已经注册的文件描述符集,将就绪的文件描述符返回给调用者。时间复杂度为 O(n)。

epoll (准确地说,是epoll_wait()的实现) 采用的是 回调 方式。当内核检测到就绪的文件描述符时,将会触发回调函数,再有回调函数将该文件描述符上对应的事件插入到内核就绪事件队列,最后,内核再将就绪事件队列中的内容拷贝到用户空间。所以 epoll 无需检测整个文件描述符集。时间复杂度为 O(1)。

2. 工作模式

select 和 poll 只能工作在相对低效的 LT 模式

epoll 可以工作在高效的 ET 模式

什么是 LT、ET 模式?

epoll 对文件描述符的操作有两种模式:LT(Level Trigger,电平触发)模式和ET (Edge Trigger,边缘触发)模式。LT模式是默认地工作模式。

对于文件描述符fd,如果fd采用 LT模式,当epoll_wait()检测到该文件描述符上有事件发生时,程序不会立即处理该事件。当程序下一次调用epoll_wait()时,epoll_wait()会再次响应通告该事件,直到该事件被处理。

如果fd采用 ET模式,当epoll_wait()检测到该文件描述符上有事件发生时,程序会立即处理该事件。当程序下一次调用epoll_wait()时,epoll_wait()不会再次响应通告该事件。

那么很容易得出,ET 模式的确效率要高,因为它很大程度上降低了同一个事件被重复触发的次数。

3. 支持的最大文件描述符数目限制

poll 和 epoll_wai 支持系统所能打开的最大最大文件描述符数目(cat /proc/sys/fs/filemax);
select 允许监听的最大文件描述符数目通常是有限制的,虽然用户可以修改,但是系统不保证结果。

4. 事件集

select, poll, epoll 都是通过结构体变量告诉内核监听哪些文件描述符上的哪些事件,并使用结构体类型的参数返回内核处理结果。具体不同:

select 参数类型 fd_set 没有把事件和文件描述符绑定,只提供了一个文件描述符集合, 需要向 select 提供可读、可写、异常等事件。内核对 fd_set 集合同时修改,因此程序要对其进行专门的重置。

poll 的参数类型 pollfd 将事件和文件描述符绑定。所有事件统一处理,内核每次修改 revents 成员,对于 events 不变,因此也就无需重置了。

epoll 则是采用了在内核中维护一个事件表,并且提供单独的系统调用控制事件的添加、删除、修改。epoll_wait 直接从内核中取得用户注册事件,不需要反复从用户空间获取事件,效率更高。

总结

通过比较,似乎 epoll 就是完胜,但是不然。
epoll 只是适用于连接数目多,但是活动连接少的情况,如果活动连接太多,回调函数的触发就会非常频繁,效率还不如 poll 和 select。

基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理流程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值