2020-10 [seminár] mmap
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 posledného labu z Operačných systémov zameraného na systémové volania mmap a munmap, ktoré fungujú na podobnom princípe ako predtým preberaná lenivá alokácia pamäte, rozšírená o čítanie a zapisovanie dát zo súboru. Vysvetľujú sa zjednodušené podmienky zadania (nulová adresa aj offset) a dôležité parametre ako dĺžka, súbor, ochrana pamäte (protection) a príznaky MAP_PRIVATE/MAP_SHARED. Lektor postupne implementuje štruktúru mmap_vma obsahujúcu adresu, dĺžku, práva, ukazovateľ na súbor a prepojenie do zreťazeného zoznamu, ktorý sa ukladá per proces. Ďalej vytvára statické pole VMA štruktúr s voľným zoznamom (freelist), zámok (spinlock) na synchronizáciu prístupu viacerých procesov a pomocné funkcie get_vma a vloženie späť do freelistu vrátane inicializačnej funkcie vma_init volanej po zapnutí stránkovania. Zvyšná implementácia (obsluha výpadku stránky a samotné systémové volania mmap/munmap) zostáva na dokončenie študentom.
- - Lab mmap nadväzuje na lenivú alokáciu pamäte, pridáva čítanie/zapisovanie súboru pri výpadku stránky
- - Zjednodušené zadanie: addr aj offset sú vždy 0, dôležité sú length, súbor, protection a flags (MAP_PRIVATE/MAP_SHARED)
- - Systémové volania mmap a munmap aj ich deklarácie/čísla sú už predpripravené v kostre kódu
- - Definuje sa štruktúra mmap_vma (adresa, dĺžka, ochrana, ukazovateľ na file) s prepojením do dvojito zreťazeného zoznamu
- - Vytvára sa statické pole VMA štruktúr (16 položiek) s jednosmerným freelistom a spinlockom pre synchronizáciu
- - Implementujú sa pomocné funkcie vma_init, get_vma (vybratie zo zoznamu) a vloženie VMA späť do freelistu
- - Obsluha výpadku stránky a doplnenie logiky mmap/munmap zostáva na samostatné dokončenie študentmi
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky