2021-09 [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 z predmetu Operačné systémy sa venuje mapovaniu súborov do pamäte (mmap) v systéme XV6, teda kombinácii virtuálnej pamäte a súborového systému. Vysvetľujú sa systémové volania mmap a munmap, ich parametre (adresa, dĺžka, ochrana čítania/zápisu, príznaky MAP_SHARED a MAP_PRIVATE, súborový deskriptor, offset) a zásady lenivého mapovania cez výpadok stránky. Prednášajúci postupne implementuje deklarácie systémových volaní, štruktúru VMA na uchovanie metadát o mapovaní (adresa, dĺžka, offset, flagy, smerník na súbor) a jej uloženie priamo v štruktúre proc ako pole s pevnou veľkosťou. Zavádza pomocnú funkciu FindEmptyVMA na hľadanie voľného záznamu a rieši výber pevnej virtuálnej adresy pre oblasť mmap mimo rastúcej haldy procesu. Zvyšné úlohy — obsluha výpadku stránky, munmap, úprava fork a exit — ponecháva ako samostatnú prácu poslucháčov s odporúčaním inšpirovať sa mechanizmom Copy-on-Write.
- - mmap mapuje súbor do virtuálnej adresy procesu, čítanie/zápis prebieha priamym prístupom do pamäte
- - Parametre mmap: adresa (vždy 0, volí jadro), dĺžka, ochrana (read/write), flagy MAP_SHARED/MAP_PRIVATE, deskriptor súboru, offset
- - MAP_SHARED zapisuje zmeny späť do súboru pri odmapovaní, MAP_PRIVATE nie
- - Štruktúra VMA uchováva adresu, dĺžku, offset, flagy a smerník na súbor mapovania
- - Mapovania sa v XV6 ukladajú ako pole VMA priamo v struct proc, prázdny záznam sa hľadá pomocou FindEmptyVMA
- - Súbory sa mapujú lenivo — reálna alokácia stránky a kopírovanie dát prebieha až pri page faulte, podobne ako pri Copy-on-Write forku
- - Pre oblasť mmap sa vyhradzuje pevná adresa v adresnom priestore mimo rastúcej haldy procesu
- - Zostáva doimplementovať obsluhu výpadku stránky, munmap, a úpravu fork/exit pre dedenie a uvoľnenie mapovaní
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky