This shows you the differences between two versions of the page.
so2:teme:tema1 [2019/03/16 10:19] daniel.baluta |
so2:teme:tema1 [2020/03/17 17:42] (current) lucian.teodorescu [Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Tema 1 - Kprobe based tracer ====== | ====== Tema 1 - Kprobe based tracer ====== | ||
- | * Termen de predare: **TBD ** | + | * Termen de predare: 29 Martie 2020, ora 23:00 |
===== Scopul temei ===== | ===== Scopul temei ===== | ||
- | * dobândirea de cunoștinţe legate de instrumentarea funcțiilor din nucleul Linux (mecanismul ''kprobes'') | + | * dobândirea de cunoștinţe legate de instrumentarea funcțiilor din nucleul Linux (mecanismul ''kretprobes'') |
* obținerea de cunoștințe legate de interacțiunea cu sistemul de fişiere ''/proc'' din nucleul Linux. | * obținerea de cunoștințe legate de interacțiunea cu sistemul de fişiere ''/proc'' din nucleul Linux. | ||
* obținerea de deprinderi de lucru cu structurile de date specifice nucleului Linux (''hash table'', ''list''). | * obținerea de deprinderi de lucru cu structurile de date specifice nucleului Linux (''hash table'', ''list''). | ||
Line 27: | Line 27: | ||
==== Detalii de implementare ==== | ==== Detalii de implementare ==== | ||
- | Interceptarea se va face întregistrând câte o probă (''kprobe'') pentru fiecare din funcţiile de mai sus. Inspectorul va reține o listă/tabelă de dispersie cu procesele monitorizate și va contabiliza informațiile de mai sus pentru aceste procese. | + | Interceptarea se va face întregistrând câte o probă (''kretprobe'') pentru fiecare din funcţiile de mai sus. Inspectorul va reține o listă/tabelă de dispersie cu procesele monitorizate și va contabiliza informațiile de mai sus pentru aceste procese. |
Pentru controlul listei/tabelei de dispersie cu procesele monitorizate, se va folosi un char device denumit ''/dev/tracer'', cu majorul ''10'' și minorul ''42''. Acesta va expune o interfață ioctl cu două argumente: | Pentru controlul listei/tabelei de dispersie cu procesele monitorizate, se va folosi un char device denumit ''/dev/tracer'', cu majorul ''10'' și minorul ''42''. Acesta va expune o interfață ioctl cu două argumente: | ||
Line 80: | Line 80: | ||
$ cd linux/tools/labs | $ cd linux/tools/labs | ||
$ LABS=assignments/1-tracer make skels | $ LABS=assignments/1-tracer make skels | ||
- | # dezvoltarea temei se va efectua în directorul 1-tracer/ | + | # dezvoltarea temei se va efectua în directorul skels/assignments/1-tracer/ |
$ make build | $ make build | ||
$ make copy | $ make copy | ||
Line 106: | Line 106: | ||
Depunctările generale pentru teme se găsesc pe pagina de [[so2:teme:general| Indicații generale]]. În plus, se vor avea în vedere următoarele elemente: | Depunctările generale pentru teme se găsesc pe pagina de [[so2:teme:general| Indicații generale]]. În plus, se vor avea în vedere următoarele elemente: | ||
- | ***-2**: omiterea eliminării corespunzătoare a resurselor (kprobes, intrări în ''/proc'') | + | ***-2**: omiterea eliminării corespunzătoare a resurselor (kretprobes, intrări în ''/proc'') |
***-2**: probleme de sincronizare la date folosite de mai multe instanțe de execuție (spre exemplu, lista/tabela de dispersie cu procese) | ***-2**: probleme de sincronizare la date folosite de mai multe instanțe de execuție (spre exemplu, lista/tabela de dispersie cu procese) | ||
Line 120: | Line 120: | ||
===== Resurse ===== | ===== Resurse ===== | ||
- | * [[http://lxr.free-electrons.com/source/Documentation/kprobes.txt|Documentation/kprobes.txt]] - descrierea subsystemului kprobes din sursele nucleului Linux. | + | * [[https://www.kernel.org/doc/Documentation/kprobes.txt|Documentation/kprobes.txt]] - descrierea subsystemului kprobes din sursele nucleului Linux. |
- | * [[http://lxr.free-electrons.com/source/samples/kprobes/|samples/kprobes/]] - câteva exemple de folosire a kprobes din sursele nucleului Linux. | + | * [[https://elixir.bootlin.com/linux/latest/source/samples/kprobes|samples/kprobes/]] - câteva exemple de folosire a kprobes din sursele nucleului Linux. |
<note important> | <note important> |