2020-03 [cvičenie] sysinfo - otázky a odpovede
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
Cvičenie sa venuje riešeniu praktických otázok pri implementácii systémového volania sysinfo v xv6. Najprv sa vysvetľuje spôsob diagnostiky chyby S-Course (page fault) pomocou hodnôt sepc a stval a ich prepojenia s assemblerovým výpisom programu. Následne sa na príklade existujúcich volaní sys_fstat a filestat demonštruje, ako sa má načítať argument (adresa štruktúry) zo systémového volania a ako naplnenú štruktúru v jadre preniesť do používateľského priestoru pomocou funkcie copyout. Podrobne sa rozoberá princíp fungovania copyout a funkcie walk, teda prechádzanie viacúrovňovej tabuľky stránok a preklad virtuálnej adresy na fyzickú, ako aj dôvod, prečo je možné vo funkcii kernelu priamo pracovať s fyzickými adresami vďaka ich priamemu namapovaniu. Na záver sa diskutuje o návratovom type Uint64 pri systémových volaniach a možnom podtečení pri chybovej hodnote -1.
- - Diagnostika chyby S-Course cez hodnoty sepc (adresa chyby) a stval (adresa page faultu)
- - Priradenie assemblerového kódu k pôvodnému C kódu pomocou súboru .asm na nájdenie miesta chyby
- - Sysinfo sa implementuje analogicky k existujúcim volaniam sys_fstat a filestat
- - Načítanie argumentu (adresy) zo systémového volania pomocou argaddr namiesto argfd
- - Naplnenie štruktúry sysinfo v jadre pomocnými funkciami (počet procesov, voľná pamäť)
- - Prenos dát do používateľského priestoru pomocou funkcie copyout a walkaddr (prechod tabuľkou stránok)
- - Fyzické adresy sú v jadre priamo namapované, preto je možné použiť memmove bez ďalšieho prekladu
- - Diskusia o použití typu uint64 ako návratovej hodnoty systémových volaní a riziku podtečenia pri -1
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky