2020-07 [cvičenie] copy-on-write fork - 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 prebieha formou otázok a odpovedí k implementácii copy-on-write forku vo virtuálnej pamäti. Vysvetľuje sa syntax a sémantika príznakov v tabuľke stránok (PTE) – ako binárne mocniny dvojky kombinované pomocou OR, XOR a AND – ako aj význam dereferencovania smerníka pomocou hviezdičky. Ťažiskom je návrh a implementácia počítadla referencií (cenator_ref) pre fyzické rámce pamäte, vrátane jeho alokácie, výpočtu indexu z fyzickej adresy pomocou zaokrúhlenia a makra, a funkcií na inkrementáciu/dekrementáciu chránených zámkom. Diskutuje sa správne volanie týchto funkcií pri forku (zvýšenie referencie) a pri k_free/copy-on-write handleri (zníženie referencie), pričom ako parameter funkcie uvm_copy sa odporúča fyzická adresa stránky. Na záver sa upozorňuje, že niektoré rámce (napr. samotné pole referencií) nikdy neprejdú medzi voľné rámce, preto sa ich stav v poli nemení.
- - PTE príznaky sú binárne čísla s jednou jednotkou (mocniny dvojky), kombinujú sa pomocou OR/XOR/AND
- - Hviezdička pred PTE znamená dereferencovanie smerníka – úprava dát, na ktoré smerník ukazuje
- - Počítadlo referencií (cenator_ref) sa alokuje ako pole na začiatku voľnej pamäte po konci jadra
- - Index do poľa referencií sa počíta z fyzickej adresy pomocou zaokrúhlenia a delenia veľkosťou stránky
- - Referenciu treba zvýšiť pri forku a znížiť pri k_free/copy-on-write handleri, operácie chránené zámkom
- - Funkcia uvm_copy by mala prijímať fyzickú adresu stránky ako parameter na zvýšenie počítadla
- - Niektoré rámce (napr. pole referencií) nikdy nie sú súčasťou voľných rámcov, preto sa ich záznam v poli nemení
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky