当前位置: 首页 > news >正文

Netty笔记4:Epoll

Netty笔记1:线程模型

Netty笔记2:零拷贝

Netty笔记3:NIO编程

Netty笔记4:Epoll

Netty笔记5:Netty开发实例

Netty笔记6:Netty组件

Netty笔记7:ChannelPromise通知处理

Netty笔记8:ByteBuf使用介绍

Netty笔记9:粘包半包

Netty笔记10:LengthFieldBasedFrameDecoder很简单

Netty笔记11:编解码器

Netty笔记12:模拟Web服务器

Netty笔记13:序列化

文章目录

  • 前言
  • Epoll是什么

前言

该篇是纯理论知识点,是对NIO理解的一个重要知识点,不需要深入理解,只需要简单了解,所以这篇是以简单的方式进行说明,为后续的知识打一个小基础。

Epoll是什么

Epoll是什么?

Epoll是Linux的高性能IO多路复用机制。

之前我们提到的IO多路复用和Epoll有何不同?

首先之前我们提到并且编程实例中使用的Selector是程序上的,而epoll是系统程序上的,程序是基于系统之上的,并且他们IO复用的逻辑也不同:

selector:当网卡接收到数据后,发出中断信号给CPU,CPU便中断当前正在执行的进程,而后将数据写入到socket的缓冲区,唤醒等待队列中的进程,低效在进程遍历所有的socket确定就绪的socket。

epoll:当网卡接收到数据后,发出中断信号给CPU,CPU便中断当前正在执行的进程,而后将数据写入到socket缓冲区,并将等待队列中的进程添加到eventpoll的等待队列中,以及将socket的引用添加到eventpollrdlist就绪队列中,高效在:epoll通过控制eventpoll里的就绪进程和rdlist避免了socket的遍历。

下面是系统收到数据包的流程(中断信号的应用),通过中断信号通知CPU,而后CPU就停止当前正在执行的任务;

image-20240512193929754

epoll工作原理图:

image-20240512194225694

这里涉及CPU调度以及epoll执行的一个过程,工作队列就是计算机中的工作队列,在系统中存在多个进程以维持系统问题以及处理用户任务,那么当网络发来数据,也就是socket接收到数据后,会把接收到数据的socket添加到eventpoll,并将rdlist的引用指向socket,并让等待的进程(如图中的进程A)进入就绪状态等待CPU调度,等进程执行时,就遍历rdlist的引用列表。

相关文章:

  • 如何用脚本启动一个cmd命令行控制台窗口,并且执行命令 ; cmd /k /c /s 笔记250303
  • Spring Boot集成Minio笔记
  • Vue3 Teleport原理与实战指南:突破组件层级限制的传送门
  • 《OpenCV》——dlib(人脸应用实例)
  • Franka机器人FR3快速安装指南
  • shell逐行读取文件 远程操作服务器
  • AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例
  • 张驰咨询:用六西格玛重构动力电池行业的BOM成本逻辑
  • 国内支持Stable Diffusion模型的平台
  • Spring Boot如何利用Twilio Verify 发送验证码短信?
  • 安卓binder驱动内核日志调试打印开放及原理(第一节)
  • 玩转顺序表:用 C 语言实现数据的插入与删除
  • [vue] 缩放比适配问题
  • QT--事件系统
  • 智能合约安全指南 [特殊字符]️
  • 【音视频】封装格式与音视频同步
  • 六、Redis 高级功能详解:BitMap、HyperLogLog、Geo、Stream
  • 《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》
  • 【第13节】C++设计模式(行为模式)-Template(模板)模式
  • 【leetcode100】全排列
  • 肥城网站建设推广/facebook海外推广
  • 企业购网站建设/灰色行业seo大神
  • 云优网站建设程序模版/steam交易链接怎么获取
  • 东莞做微网站建设/网站建设山东聚搜网络
  • 做音乐网站的栏目/互联网推广怎么做
  • 电商数据平台/百度关键词优化平台