2020-03 [cvičenie] sysinfo - otázky a odpovede

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

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.