2020-08 [cvičenie] vlákna - 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 je venované konzultácii otázok a odpovedí k téme vlákien v operačných systémoch, nadväzujúc na predchádzajúci lab. Vysvetľuje sa správne fungovanie ukazovateľa zásobníka (SP) pri prepínaní vlákien, vrátane bežnej chyby s výpočtom t_stack + stack_size - 1. Rozoberá sa implementácia bariéry pomocou podmienkových premenných (condition variables) a mutexu, s dôrazom na správne poradie operácií pri broadcast a wait, aby sa predišlo race conditions. Ďalej sa diskutuje o optimalizácii hešovacej tabuľky pomocou samostatných zámkov pre jednotlivé bakety namiesto jedného globálneho zámku, a o nutnosti zamykania aj pri čítacích operáciách kvôli konzistencii dátových štruktúr.
- - Ukazovateľ zásobníka (SP) vždy ukazuje na aktuálnu (vrcholovú) hodnotu, nie na t_stack+stack_size-1
- - Pri architektúre RISC-V sa pracuje so 64-bitovými slovami, treba dávať pozor na zarovnanie pamäte
- - Implementácia bariéry pomocou mutexu a podmienkových premenných zaisťuje korektné poradie vďaka drženiu zámku počas broadcastu
- - Optimalizácia hešovacej tabuľky: použitie samostatného zámku pre každý baket namiesto jedného globálneho zámku
- - Pri inicializácii tabuľky treba inicializovať všetky zámky v cykle
- - Zamykanie je potrebné aj pri čítacích operáciách (get), aby sa predišlo čítaniu nekonzistentných dát počas zápisu
- - Odporúčanie venovať sa aj voliteľnej úlohe s riešením bez zámkov pomocou intrinsic funkcií
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky