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

eBPF系列:开发流程

简介

eBPF程序分为用户态程序和内核态程序,其中内核态程序是运行在eBPF虚拟机(内核中)上的;

eBPF内核态程序是需要采用C语言编写,通过BCC编译器,编译成eBPF字节码,然后才能从用户态加载到内核中的eBPF虚拟机里运行;

eBPF虚拟机就是将eBPF字节码转换成机器码,以便在主机内核中运行;为了提升运行性能,eBPF内集成了JIT(及时编译),可以在字节码程序首次运行之前,即时编译成可以在硬件上直接运行的机器码,之后就无需再进行翻译,可以直接运行一直编译好的机器码;

eBPF的用户态程序和内核态程序的数据交互是通过一种eBPF特有的map数据结构来实现的;

eBPF map是位于内核态,采用键值存储模式,可以持久化存储,可以被多个不同BPF程序访问,具有全局性,支持很多不同的数据类型,例如数组,哈希表,队列,栈,环形缓存等;

eBPF内核态程序字节码是通过系统调用bpf操作,加载到内核态的;

eBPF map的数据结构的创建也是通过系统调用bpf来完成的;

用户态程序通过一个整型句柄fd来操作map数据,句柄fd与BPF文件系统是一一对应的,

BPF 文件系统可以将每个map数据映射到文件系统上,方便多个eBPF程序通过文件获取句柄fd,来操作map数据;(不同程序中,同一个map文件对应的fd可能不同,但map id一定是相同的)

开发工具链

目前支持eBPF内核态程


http://www.mrgr.cn/news/34878.html

相关文章:

  • 数据科学的秘密武器:defaultdict——Python字典的自动化填充神器,让数据结构更灵活
  • python 实现word frequency functions词频函数算法
  • 卷积神经网络(CNN)图像处理与识别原理
  • 汽车HMI:UI设计进入了3D时代,设计师准备好了吗?
  • LabVIEW提高开发效率技巧----使用状态机架构
  • 低侧双向电流检测电路设计
  • GoJs 节点动态添加样式
  • AI驱动TDSQL-C Serverless 数据库技术实战营-Vanna配合ollama分析TDSQL-C Serverless 数据库
  • Mybatis基础操作
  • 奇迹再现!帕金森患者6年后停药,竟能自如行走:背后的故事与启示
  • 【Python】多个dataframe存入excel的不同的sheet表里,而不会被覆盖的方法
  • 全面解析 Apache Pulsar
  • 数据结构(顺序表)
  • lamda表达式例子全集详解
  • JAVA智能匹配真情传递红娘婚恋交友系统小程序源码
  • PyCharm远程连接AutoDL服务器实现程序调试
  • vue2实现提取字符串数字并修改数字样式(正则表达式)
  • 【linux内核】eBPF基础及应用调研
  • DeiT(ICML2021):Data-efficient image Transformer,基于新型蒸馏且数据高效的ViT!
  • 分布式锁实现与原理探究:介绍总结