2021-05 [seminár] Copy-on-write fork

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

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.