2021-05 [seminár] Copy-on-write fork
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 sa venuje implementácii mechanizmu copy-on-write fork ako jednej z náročnejších úloh piateho labu z operačných systémov. Vysvetľuje sa princíp, kedy sa pri fork() namiesto okamžitého kopírovania celého adresného priestoru procesu iba zdieľajú fyzické stránky medzi rodičom a potomkom, pričom zapisovateľné stránky sa označia ako len na čítanie pomocou špeciálneho príznaku PTE_COW. Ukazuje sa úprava funkcie uvm_copy, kde sa odstráni príznak PTE_W a nastaví vlastný bit v rezervovanej časti PTE. Následne sa implementuje obsluha výpadku stránky (page fault) vo funkcii usertrap, ktorá pri zápise na chránenú stránku alokuje novú fyzickú stránku, skopíruje do nej dáta a znovu namapuje adresu s právom zápisu. Zdôrazňuje sa potreba počítadla referencií, aby sa fyzická stránka uvoľnila až vtedy, keď ju už nepoužíva žiadny proces.
- - Cieľom cvičenia je implementovať copy-on-write (COW) verziu systémového volania fork.
- - Namiesto kopírovania celého adresného priestoru sa stránky medzi rodičom a potomkom zdieľajú.
- - Zapisovateľné stránky sa označia príznakom PTE_COW a odoberie sa im právo zápisu (PTE_W).
- - Výpadok stránky pri pokuse o zápis sa spracúva vo funkcii usertrap, kde sa rozlišuje dôvod výnimky (scause = 15).
- - Obsluha výpadku (funkcia napr. uvmcowfault) alokuje novú stránku, skopíruje dáta a znovu namapuje adresu s právom zápisu.
- - Je potrebné implementovať počítadlo referencií na fyzické stránky, aby sa uvoľnili až keď ich nepoužíva žiadny proces.
- - Na záver seminára sa plánuje predstavenie základov ladiaceho nástroja gdb a informácie k prvému zápočtovému testu.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky