See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 209|Vastuse: 3

[Ohutusteadmised] Lingid EBPF-iga seotud teadmistele

[Kopeeri link]
Postitatud 2025-10-20 16:47:02 | | |
Seda postitust viimati redigeeris Summer 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框架,探针 *




Eelmine:. PriorityQueue prioriteediga järjekord NET6-s
Järgmine:AI agent ja AI MCP

Seotud postitused

 Üürileandja| Postitatud 2025-10-20 16:50:38 |
Nii EBPF kui ka kerneli moodulid vastavad tuumasondide andmeallikale, mitte EBPF-i omadele
 Üürileandja| Postitatud 2025-10-20 16:59:33 |
Linuxi viited: Brother Birdi Linuxi autor Taiwani keeles

Hüperlingi sisselogimine on nähtav.
 Üürileandja| Postitatud 2025-10-20 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Seos eBPF uprobe programmi ja kernel/events/uprobe.c vahel seisneb sisuliselt selles, et eBPF mehhanism kasutab tuuma natiivset uprobe infrastruktuuri, et rakendada kasutaja oleku funktsioonide hook-funktsiooni. Täpsemalt on eBPF uprobe tuuma uprobe raamistiku "rakendus", mis on seotud sisemise kerneli kutseahela ja andmestruktuuri kaudu.
Põhiühendus: eBPF tugineb kernel uprobe raamistikule konksude rakendamiseks
Kernel uprobe.c on Linuxi tuuma natiivse kasutajaseisundi proovi (uprobe) põhirakendus ja vastutab järgmise eest:
Halda kasutaja-oleku sondide registreerimist ja tühistamist (nt register_uprobe(), unregister_uprobe()).
Haldab katkestuspunkti lisamist (kirjutab katkestuspunkti käske sihtfunktsiooni aadressile, näiteks x86 int3).
Katkestuspunkti päästiksündmuste jäädvustamine (mis jäävad kerneli oleku töötlemisse kinni, kui programm käivitatakse katkestuspunkti).
Kutsu eelregistreeritud tagasikõne funktsiooni (st konksu loogika).
eBPF uprobe programm (näiteks hook libc.so nagu sa kirjutasid) registreerib põhimõtteliselt uprobe-põhise eBPF tagasikõne funktsiooni kerneliga läbi eBPF laadija (nt bcc, libbpf), mis tugineb täielikult uprobe.c pakutavale infrastruktuurile.
Spetsiifiline kõneahel: voog eBPF programmist uprobe.c-sse
Kui registreerid uprobe eBPF laadija kaudu (näiteks BCC attach_uprobe), on aluseks olev protsess järgmine:
eBPF laadija algatab registreerimistaotluse. Laadija (näiteks bcc Python kood) ütleb kernelile süsteemikutse (näiteks bpf() või perf_event_open()) kaudu, et "Ma tahan riputada eBPF konksu libc.so openat-funktsioonile" ja edastab eBPF programmi baitkoodi.
Tuuma verifitseerimine ja eBPF programmide ettevalmistamine Kernel eBPF kontrollija kontrollib programmi legitiimsust, et veenduda, et see ei ohusta tuuma turvalisust. Kui see on läbitud, laadi eBPF programm kerneli ja loo "eBPF tagasikõnefunktsioon" (st uprobe_openat loogika, mille sa kirjutasid).
Uprobe.c registreerimisliidese tuuma taaskasutamine kutsub uprobe.c-s register_uprobe() funktsiooni, registreerib "natiivse uprobe" ja kasutab eBPF tagasikõne funktsiooni selle uprobe "päästikukäitlejana".
Oluline on see: eBPF uprobe olemus on siduda tüüpi eBPF tagasikutsumine kerneli natiivse uprobe'iga.
uprobe.c lisab katkestuspunkti ja ootab, kuni see käivitub. Uprobe.c kirjutab katkestuspunkti käsu (näiteks x86 int3) kasutaja oleku mällu registreeritud sihtaadressi (Openat aadress libc.so-s) alusel ning salvestab katkestuspunkti algse käsu (käivitamise jätkamiseks pärast käivitamist).
Funktsioonikutsed käivitavad katkestuspunkte, uprobe.c kutsub eBPF tagasikutsumisi Kui rakendus kutsub libc.so:openat, käivitab katkestuspunkti käsu täitmine lõksu ja langeb kerneli olekusse. Praegu:
Tuum kutsub uprobe_handler() funktsiooni (kerneli töötlemise loogika) uprobe.c-s.
uprobe_handler() kontrollib registreerimisinfot, mis vastab katkestuspunktile, ja leiab, et see on seotud eBPF tagasikõnega, seega kutsub ta eBPF programmi (st uprobe_openat, mille sa kirjutasid).
Pärast eBPF programmi käivitamist (nt parameetrite kogumine või ringbufi kirjutamine) taastab uprobe_handler() algse käsu ja võimaldab programmil jätkata täitmist.
Kokkuvõte: nende kahe omavaheline suhe
kernel/events/uprobe.c on aluseks olev infrastruktuur, mis pakub põhivõimalusi nagu kasutajaoleku katkestuspunktide lisamine, salvestamine ja taastamine ning on aluseks kõigile kasutajaoleku sondidele (sh eBPF uprobe, gdb silumine jne).
eBPF uprobe programm on sellel infrastruktuuril põhinev ülemise kihi rakendus, mis registreerib eBPF tagasikõne funktsioonid ja võimaldab kernelil käivitada eBPF loogikat, kui uprobe käivitub, saavutades seeläbi tõhusa kasutajaoleku funktsioonide jälgimise.
Lühidalt: uprobe eBPF jaoks on "kasutaja" ja uprobe.c on "teenusepakkuja", ning esimene sõltub teisest konksude registreerimise, käivitamise ja täitmise lõpuleviimiseks.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com