2020-02 [seminár] Trasovanie systémových volaní
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Seminár sa venuje praktickej príprave na úlohu trasovania systémových volaní v operačnom systéme xv6. Vyučujúci prechádza súbory user/user.h, user/usys.pl a kernel/syscall.h/.c, kde vysvetľuje, ako sa deklarujú, registrujú a dispatchujú systémové volania cez tabuľku smerníkov na funkcie a makro na automatický výpočet ich počtu. Ukazuje mechanizmus prenosu argumentov z používateľského priestoru do jadra pomocou funkcií argint, argaddr a argstr, ako aj štruktúry proc a trapframe v kernel/proc.h. Na záver predstavuje zadanie novej úlohy – implementáciu systémového volania trace, ktoré pomocou bitovej masky umožní sledovať a vypisovať vybrané systémové volania volajúceho procesu a jeho potomkov. Vysvetľuje aj postup nastavenia repozitára (git fetch, prepnutie na vetvu syscall, make grade) a prvé kroky pridania trace do zoznamu užívateľských programov.
- - Deklarácie systémových volaní sú v user/user.h, ich prepojenie s jadrom generuje Perlový skript user/usys.pl
- - kernel/syscall.h obsahuje čísla systémových volaní, kernel/syscall.c ich dispatching cez pole smerníkov na funkcie (syscalls)
- - Počet systémových volaní sa počíta automaticky pomocou makra sizeof(x)/sizeof(x[0])
- - Argumenty zo systémových volaní sa do jadra prenášajú cez argint, argaddr a argstr z trapframe (registre A0–A5)
- - Trapframe uchováva stav registrov procesu pri prechode do jadra, štruktúra proc obsahuje metadáta procesu
- - Zadanie novej úlohy: implementovať syscall trace s bitovou maskou určujúcou, ktoré volania sa majú trasovať u volajúceho a jeho potomkov
- - Postup práce: git fetch, prepnutie na vetvu syscall, spustenie make grade a pridanie programu trace do Makefile
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky