epoll
文章平均质量分 80
wenfh2020
个人博客 - wenfh2020.com
展开
-
深入理解 epoll 回调用户数据
epoll 多路复用驱动是异步事件处理,在用户层它提供了用户数据(epoll_data),方便事件触发后回调给用户处理。glibc/* sys/epoll.h */typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64;} epoll_data_t;struct epoll_event{ uint32_t events; /* Epoll events */ epoll_原创 2021-09-02 12:08:26 · 740 阅读 · 0 评论 -
vscode + gdb 远程调试 linux (EPOLL) 内核源码
配套视频:vscode + gdb 远程调试 linux (EPOLL) 内核源码。前段时间才搭建起来 gdb 调试 Linux 内核网络源码(视频 ),但是 gdb 命令调试效率不高。磨刀不误砍柴工,所以折腾一下 vscode,使调试人性化一点。1. 搭建调试环境要搭建 vscode + gdb 调试 Linux 内核环境,首选要搭建:gdb 调试 Linux 内核源码(视频),然后再配置 vscode 进行测试调试。2. vscode 配置2.1. vscode 插件ms-vscod原创 2021-06-28 08:30:01 · 687 阅读 · 1 评论 -
高性能服务异步通信逻辑
最近整理了一下服务程序异步通信逻辑思路。异步逻辑与同步逻辑处理差别比较大,异步逻辑可能涉及多次回调才能完成一个完整的请求处理,逻辑被碎片化,切分成串行的步骤。习惯了写同步逻辑的朋友,有可能思维上转不过来。????文章来源:《高性能服务异步通信逻辑》1. 逻辑高性能异步非阻塞服务,底层一般用多路复用 I/O 模型对事件进行管理,Linux 平台用 epoll。epoll 支持异步事件逻辑。epoll_wait 会将就绪事件从内核中取出进行处理。服务处理事件,每个 fd 对应一个事件处理器原创 2020-12-05 12:15:10 · 181 阅读 · 0 评论 -
[epoll 源码走读] epoll 源码实现-预备知识
epoll 源码涉及到很多知识点:(socket)网络通信,进程调度,等待队列,socket 信号处理,VFS(虚拟文件系统),红黑树算法等等知识点。有些接口的实现,藏得很深,参考了不少网上的帖子,在此整理一下。本文主要为 《[epoll 源码走读] epoll 实现原理》,提供预备知识。1. 网络数据传输流程网络数据是如何从网卡传到内核,内核如何将数据传到用户层的。参考 Linux网络包收发总体过程参考 epoll源码分析2. 内核进程调度网络通信过程中,进程什么时候睡眠,什么时原创 2020-11-11 21:20:27 · 132 阅读 · 0 评论 -
epoll 多路复用 I/O工作流程
从业务逻辑上,了解一下 epoll 多路复用 I/O 的工作流程。有兴趣了解 epoll 源码实现,可以参考: 《[epoll 源码走读] epoll 实现原理》1. epollepoll 是一个 Linux 系统的一个事件驱动。简单点来说,是一个针对系统文件的事件管理器,可以高效管理大量网络链接下的数据并发。研发人员根据业务需要,通过事件管理器,监控对应文件描述符的读写事件。(详细解析请参考: 百度百科)???? 文章来源:《epoll 多路复用 I/O工作流程》1.1. 事件结构原创 2020-11-11 21:18:05 · 198 阅读 · 0 评论 -
[epoll 源码走读] LT 与 ET 模式区别
走读内核源码,看看 epoll 的 LT 和 ET 模式区别。详细信息可以参考文章《[epoll 源码走读] epoll 实现原理》,现在将部分代码提取出来。1. 原理核心逻辑在 ep_send_events_proc 函数里实现,关键在 就绪列表。epoll 监控的 fd 产生事件,fd 信息被添加进就绪列表。epoll_wait 发现有就绪事件,进程持续执行,或者被唤醒工作。epoll 将 fd 信息从就绪列表中删除。fd 对应就绪事件信息从内核空间拷贝到用户空间。拷贝完成后,检原创 2020-11-11 21:16:08 · 151 阅读 · 0 评论 -
[epoll 源码走读] epoll 实现原理
文章主要对 tcp 通信进行 epoll 源码走读。Linux 源码:Linux 5.7 版本。epoll 核心源码:eventpoll.h / eventpoll.c。1. 应用场景epoll 应用,适合海量用户,一个时间段内部分活跃的用户群体。例如 app,正常用户并不是 24 小时都拿起手机玩个不停,可能玩一下,又去干别的事,回头又玩一下,断断续续地操作。即便正在使用 app 也不是连续产生读写通信事件,可能手指点击几下页面,页面产生需要的内容,用户就去浏览内容,不再操作了。换句话说,在海量原创 2020-11-11 21:12:55 · 309 阅读 · 0 评论