2020 [konzultácia] Skúška

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

Konzultácia sa venuje mechanizmu prepínania medzi užívateľským a jadrovým režimom v operačnom systéme xv6 pri vzniku systémového volania alebo výnimky. Vysvetľuje sa priebeh ukladania registrov do trap frame v trampolíne, výmena hodnôt medzi registrami A0 a scratch, prepnutie tabuľky stránok na jadrovú a spracovanie prerušenia vo funkcii userTrap. Ďalej sa rozoberá nastavovanie registra stvec na kernelVec počas obsluhy v jadre a späť na trampolínu pri návrate do usera, aby sa prípadná nová výnimka spracovala správnym handlerom. V druhej časti sa diskutuje o súborovom systéme – význame bitmapy obsadenosti blokov a výpočte adresy i-uzla na disku, pričom sa objasňuje, že i-uzol s indexom 0 sa nepoužíva podobne ako null pointer, a koreňový adresár má inum rovné 1.

  • - Pri prechode user-kernel sa všetky registre ukladajú do trap frame v trampolíne (user vek).
  • - A0 a sscratch sa navzájom vymenia, aby A0 mohla ukazovať na trap frame.
  • - Po uložení kontextu sa prepne tabuľka stránok na jadrovú a pokračuje sa funkciou userTrap.
  • - Register stvec sa počas behu v jadre nastaví na kernelVec, aby sa prípadné ďalšie výnimky riešili na úrovni jadra a nedošlo k zacykleniu.
  • - Pred návratom do užívateľského režimu (userTrapRet) sa stvec znovu nastaví na adresu trampolíny (userVec) a obnovia sa pôvodné registre vrátane programového počítača (sepc, sret).
  • - Bitmapa blokov na disku indikuje obsadenosť dátových blokov vrátane systémových (boot, super blok), počíta sa od bloku 0.
  • - Adresa i-uzla na disku sa počíta ako 32*blok + 64*inum, pričom inum je index do poľa i-uzlov a i-uzol s indexom 0 sa nevyužíva (analógia s null pointerom); koreňový adresár má inum = 1.

Zhrnutie pripravené s pomocou AI z prepisu videa.