eBPF系列:开发流程

简介

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

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

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

BPF应用程序包含一个或多个BPF程序(这些程序相互协作或完全独立)、BPF maps和全局变量;

BPF全局变量可以在所有BPF程序之间共享;

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

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

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

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

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

BPF 文件系统可以将每个map数据映射到文件系统上,方便多个eBPF程序通过文件获取句柄fd,来操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值