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

1.2 什么是eBPF?(下)

四,eBPF的优势

4.1 eBPF程序的动态加载

    eBPF程序可以动态地加载到内核中,或从内核中删除。这个要与内核模块的加载与卸载区分开来。这里顺便讨论下eBPF程序与内核模块的区别,如下:

  • 而Linux内核模块是面向内核API编程的,可以直接运行在内核当中。eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。
  • eBPF架构更强调安全性和稳定性,eBPF程序只能通过 BPF Helper 函数调用,不能直接调用内核函数。此外eBPF程序在通过加载器加载到内核时,必须通过验证器进行检查,这极大的保障六内核安全。而开发者编写的内核模块,在内核进行加载运行时可以直接调用内核函数,因为没有经过内核维护者的评审发布,风险很高,可能会引入安全漏洞或直接导致内核Panic。
  • eBPF可以通过map映射与用户空间的进程进行交互,而内核模块只能通过传统的打印日志或文件节点进行交流,灵活性差。
  • 让做过内核Porting的同学很头疼的就是内核模块的移植性差,这一点在eBPF上得到了极大地改善。

    加载到内核的eBPF程序一旦被附加到一个事件上,无论是什么导致了该事件的发生,它就会被该事件触发。例如如果你将一个eBPF程序附加到用于打开文件的系统调用上,则只要有其他任何进程试图打开这个文件,它就会被触发。eBPF被加载时,那个进程是否已经运行起来并不重要。

4.2 eBPF程序的高性能

    eBPF程序被加载并进行JIT编译后,该程序将作为本机机器指令在CPU上运行。此外,无需承担在内

http://www.lryc.cn/news/89777.html

相关文章:

  • 掌握哪些测试技术才能说自己已经学成了?
  • 什么是C语言?
  • SAP-物料主数据-质量管理视图字段解析
  • TOP RPA·脱普×实在丨日用品企业脱普签约实在智能,构建全域数据智能运营系统
  • 【Android】Handler(四)Looper的相关知识点
  • Redis缓存雪崩及解决办法
  • Maven私服仓库配置-Nexus详解
  • Systrace系列10 —— Binder 和锁竞争解读
  • React Hooks中使用useState异步回调获取不到最新值的问题
  • JavaScript 高级 (完结)
  • 【P30】JMeter 事务控制器(Transaction Controller)
  • 【MySQL】MySQL的事务原理和实现?
  • S7-300Smart1200的ISO on TCP通信
  • Spark写入Hive报错Mkdir failed on :com.alibaba.jfs.JindoRequestPath
  • 分布式id解决方法--雪花算法
  • 5年经验之谈:月薪3000到30000,测试工程师的变“行”记
  • PMP考试都是什么题?
  • macbook2023系统清理软件cleanmymac中文版
  • 基于Python+AIML+Tornado的智能聊天机器人(NLP+深度学习)含全部工程源码+语料库 适合个人二次开发
  • 算法Day15 | 层序遍历,102,107,199,637,429,515,116,117,104,111,226,101
  • Prometheus+Grafana学习(十一)安装使用pushgateway
  • 深入理解C/C++预处理器指令#pragma once以及与ifndef的比较
  • git 环境配置 + gitee拉取代码
  • 港联证券|港股拥抱特专科技企业 内资券商“修炼内功”蓄势而为
  • 多项创新技术加持,实现零COGS的Microsoft Editor语法检查器
  • Python编程环境搭建:Windows中如何安装Python
  • Sui Builder House首尔站倒计时!
  • Java设计模式-状态模式
  • 智慧社区用什么技术开发
  • 多线程 线程池饱和策略