2020-06 [cvičenie] lenivá alokácia - 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é otázkam a odpovediam k úlohe o lenivej alokácii pamäte v operačnom systéme, so zameraním na tretiu, náročnejšiu časť zadania. Vysvetľuje sa spracovanie systémového volania sbrk so zápornou hodnotou pomocou úpravy funkcie growproc, kde sa pri zmenšovaní adresného priestoru volá dealokácia namiesto alokácie. Ďalej sa rieši ukončenie procesu pri prístupe k adrese nad hranicou alokovanej pamäte v obsluhe výpadku stránky (usertrap), s dôrazom na správne použitie operátora väčšie-rovné namiesto väčšie. Podrobne sa rozoberá korektná obsluha volania fork pri lenivej alokácii, konkrétne úprava funkcie uvmcopy tak, aby preskočila nenamapované (diery) časti adresného priestoru bez zlyhania. Na záver sa vysvetľuje ošetrenie prístupu k validnej, ale ešte nealokovanej adrese v systémových volaniach read a write cez funkcie copyin a copyout.
- - Riešenie záporného argumentu sbrk úpravou growproc – rozlíšenie zväčšenia a zmenšenia adresného priestoru
- - Pri zmenšovaní sa vykonáva dealokácia stránok a aktualizácia veľkosti procesu
- - Ukončenie procesu pri prístupe nad hranicu alokovanej pamäte sa rieši v usertrap kontrolou adresy voči veľkosti procesu (>=, nie >)
- - Chyby typu off-by-one pri porovnávaní hranice adresného priestoru sú bežné a treba si na ne dávať pozor
- - Korektná obsluha fork vyžaduje úpravu uvmcopy tak, aby preskočila nenamapované diery v adresnom priestore bez vyvolania panic
- - Funkcia uvmcopy sa používa výhradne pri forku, čo umožňuje jej bezpečnú úpravu
- - Ošetrenie prístupu k validnej, ale nealokovanej adrese pri read/write sa rieši vo funkciách copyin a copyout kontrolou rozsahu a dodatočnou alokáciou stránky
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky