Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 209|Atsakyti: 3

[Saugos žinios] Nuorodos į su EBPF susijusias žinias

[Kopijuoti nuorodą]
Publikuota: 2025-10-20 16:47:02 | | |
Šį įrašą paskutinį kartą redagavo Vasara 2025-10-21 09:20

https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md  ebpf对应的 内核版本特性 能解决什么问题 *
https://lore.kernel.org/bpf/ ebpf对应的内核ebpf补丁的信息讨论 *
https://juejin.cn/post/7084515511576313864 linux tracing system 各种tracing框架的对比 分为前端,tracing框架,探针 *




Ankstesnis:. PriorityQueue prioriteto eilė NET6
Kitą:AI agentas ir AI MCP

Susijusios žinutės

 Savininkas| Publikuota: 2025-10-20 16:50:38 |
Tiek EBPF, tiek branduolio moduliai atitinka branduolio zondų duomenų šaltinį, o ne EBPF
 Savininkas| Publikuota: 2025-10-20 16:59:33 |
Linux Nuorodos: Brother Bird's Linux Autorius Taivaniečių

Hipersaito prisijungimas matomas.
 Savininkas| Publikuota: 2025-10-20 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Ryšys tarp eBPF uprobe programos ir kernel/events/uprobe.c iš esmės yra tas, kad eBPF mechanizmas pakartotinai naudoja branduolio vietinę uprobe infrastruktūrą, kad įgyvendintų vartotojo būsenos funkcijų kablio funkciją. Tiksliau, eBPF uprobe yra branduolio uprobe sistemos "taikymas", kuris yra susietas per vidinę branduolio iškvietimo grandinę ir duomenų struktūrą.
Pagrindinis ryšys: eBPF remiasi branduolio uprobe sistema, kad įdiegtų kabliukus
Branduolys uprobe.c yra pagrindinis Linux branduolio vietinio vartotojo būsenos zondo (uprobe) įgyvendinimas ir yra atsakingas už:
Valdyti vartotojo būsenos zondų registraciją ir atšaukimą (pvz., register_uprobe(), unregister_uprobe()).
Tvarko stabdos taško įterpimą (stabdos taško instrukcijų rašymas į tikslinės funkcijos adresą, pvz., x86 int3).
Užfiksuokite lūžio taško paleidimo įvykius (įstrigo branduolio būsenos apdorojime, kai programa vykdoma iki lūžio taško).
Iškvieskite iš anksto užregistruotą atgalinio skambinimo funkciją (t. y. kablio logiką).
eBPF uprobe programa (pvz., jūsų parašytas kabliuko libc.so pavyzdys) iš esmės registruoja uprobe pagrįstą eBPF atgalinio iškvietimo funkciją su branduoliu per eBPF krautuvą (pvz., bcc, libbpf), kuri visiškai remiasi uprobe.c teikiama infrastruktūra.
Specifinė skambučių grandinė: srautas iš eBPF programos į uprobe.c
Kai užregistruojate uprobe per eBPF krautuvą (pvz., BCC attach_uprobe), pagrindinis procesas yra toks:
eBPF krautuvas inicijuoja registracijos užklausą Krautuvas (pvz., bcc Python kodas) per sistemos iškvietimą (pvz., bpf() arba perf_event_open()) praneša branduoliui, kad "Noriu pakabinti eBPF kabliuką ant libc.so openat funkcijos" ir perduoda eBPF programos baitų kodą.
Branduolio tikrinimas ir eBPF programų paruošimas Branduolio eBPF tikrintojas patikrina programos teisėtumą, kad įsitikintų, jog ji nekelia pavojaus branduolio saugumui. Kai praėjo, įkelkite eBPF programą į branduolį ir turėkite "eBPF atgalinio iškvietimo funkciją" (t.y. uprobe_openat logiką, kurią parašėte).
Pakartotinis uprobe.c registracijos sąsajos branduolio naudojimas iškvies register_uprobe() funkciją uprobe.c, užregistruos "vietinį uprobe" ir naudos eBPF atgalinio skambinimo funkciją kaip šio uprobe "trigerio apdorojimo priemonę".
Svarbiausia čia yra tokia: eBPF uprobe esmė yra susieti eBPF tipo atgalinį iškvietimą su branduolio vietiniu uprobe.
uprobe.c įterpia lūžio tašką ir laukia, kol jis bus suaktyvintas Uprobe.c rašo lūžio taško instrukciją (pvz., x86 int3) į vartotojo būsenos atmintį pagal užregistruotą tikslinį adresą (openat adresą libc.so) ir įrašo pradinę lūžio taško instrukciją (tęsti vykdymą po paleidimo).
Funkcijos iškvietimai suaktyvina lūžio taškus, uprobe.c iškviečia eBPF atgalinius skambučius Kai programa iškviečia libc.so:openat, vykdant lūžio taško instrukciją suveikia spąstai ir patenka į branduolio būseną. Šiuo metu:
Branduolys iškviečia uprobe_handler() funkciją (branduolio apdorojimo logiką) uprobe.c.
uprobe_handler() patikrins registracijos informaciją, atitinkančią lūžio tašką, ir nustatys, kad ji yra susieta su eBPF atgaliniu skambučiu, todėl ji iškvies eBPF programą (ty uprobe_openat parašėte).
Paleidus eBPF programą (pvz., renkant parametrus, rašant į ringbuf), uprobe_handler() atkuria pradinę instrukciją ir leidžia programai tęsti vykdymą.
Santrauka: Santykis tarp šių dviejų
kernel/events/uprobe.c yra pagrindinė infrastruktūra, kuri suteikia pagrindines galimybes, tokias kaip vartotojo būsenos stabdymo taškų įterpimas, fiksavimas ir atkūrimas, ir yra visų vartotojo būsenos zondų (įskaitant eBPF uprobe, gdb derinimą ir kt.) pagrindas.
eBPF uprobe programa yra viršutinio lygmens programa, pagrįsta šia infrastruktūra, kuri registruoja eBPF atgalinio iškvietimo funkcijas ir leidžia branduoliui vykdyti eBPF logiką, kai suveikia uprobe, taip užtikrinant efektyvų vartotojo būsenos funkcijų sekimą.
Trumpai tariant: uprobe for eBPF yra "vartotojas", o uprobe.c yra "paslaugų teikėjas", o pirmasis pasikliauja antruoju, kad užbaigtų kabliukų registraciją, suaktyvinimą ir vykdymą.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com