2020-09 [seminár] súborový systém
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 nadväzuje na prednášku o súborových systémoch a je venovaný praktickej úlohe zväčšenia maximálnej veľkosti súboru v systéme xv6 pridaním dvojito nepriameho bloku (double indirect block) do štruktúry inodu. Vysvetľuje sa reprezentácia súboru na disku pomocou poľa adries priamych, nepriamych a dvojito nepriamych blokov, pričom celkový počet položiek v inode musí zostať zachovaný na 13. Podrobne sa preberá výpočet konštánt NDIRECT, NINDIRECT a maximálnej veľkosti súboru MAXFILE, ako aj úprava štruktúr dinode a inode v kóde. Následne sa rozoberá princíp fungovania funkcie bmap, ktorá mapuje logické číslo bloku súboru na fyzickú adresu bloku na disku, vrátane alokácie nových blokov a použitia funkcií bread a log_write pri práci s bufferom disku.
- - Cieľom úlohy je rozšíriť súborový systém xv6 o podporu väčších súborov pridaním dvojito nepriameho bloku.
- - Štruktúra inode obsahuje 13 adries blokov: pôvodne 12 priamych a 1 nepriamy, po úprave 11 priamych, 1 nepriamy a 1 dvojito nepriamy.
- - Definujú sa konštanty NDIRECT (počet priamych blokov), NINDIRECT (BSIZE/sizeof(uint)) a MAXFILE ako súčet priamych, nepriamych a dvojito nepriamych blokov.
- - Nutné je upraviť obe reprezentácie inode – dinode (na disku) aj in-memory štruktúru inode.
- - Funkcia bmap mapuje logické číslo bloku súboru na absolútne číslo bloku na disku a pri neexistujúcom bloku ho alokuje.
- - Pri prístupe k nepriamym blokom sa index prepočítava odpočítaním NDIRECT, pri dvojito nepriamych sa pracuje s vnorenou tabuľkou 256×256 záznamov.
- - Pri zápise do bufferu je potrebné volať log_write, aby sa zmena zaznamenala do logu pred zápisom na disk (podrobnejšie na ďalšej prednáške).
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky