2020-02 [seminár] Trasovanie systémových volaní

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.