* obsah: co vsetko sa da s vm robit - vylepsovat efektivitu a vykon (napr. COW fork, zero page) - pridavat nove vlastnosti (napr. mapovanie suborov do pamate) 1) lazy/na poziadanie alokacia - v sbrk() iba zvysit velkost procesu - pri vypadku stranky skontrolovat va a podla potreby alokovat novu ram 2) guard page na ochranu zasobnika - do VS vlozit pod zasobnik NEnamapovanu stranku - ked zasobnik pretecie, vyvola sa vypadok stranky - moznost zvysit velkost zasobnika... 3) jedina nulami vyplnena stranka v systeme - pozorovanie casto je potrebne mat k dispozicii prazdnu (nulami vyplnenu) stranku - idea jadro bude vzdy mapovat iba jednu jedinu nulovu stranku pouzije sa technika COW (pri pokuse o zapis sa skopiruje) 4) zdielanie tabuliek jadra - pozorovanie kvmalloc() alokuje v kazdom procese nove stranky pre tabulky jadra avsak vsetky procesy maju tie iste hodnoty v tabulkach! - idea modifikacia kvmalloc()/freevm() tak, aby sa zdielali tieto tabulky 5) copy-on-write fork - pozorovanie xv6 pri forku kopiruje vsetky stranky rodica ale za forkom casto nasleduje exec, takze je to zbytocna operacia - idea urobit zdielanie stranok rodica a detskeho procesu modifikacia forku tak, aby sa stranky PTE_W mapovali copy-on-write na to sa daju vyuzit extra bity v PTE zazname pri pokuse o zapis sa generuje vynimka (nie je nastaveny PTE_W) skontroluje sa platnost adresy a extra bit v PTE zazname ak je vsetko OK, urobi sa kopia stranky a zmeni sa mapovanie na novu stranku spolu s priznakom PTE_W 6) strankovanie na ziadost - pozorovanie exec nahrava do pamate naraz cely subor, avsak a) je to draha operacia (operacie s diskom su veeelmi pomale) b) casto zbytocna operacia (nie vzdy sa vyuziju vsetky casti binarky) - idea nahravat kod programu podla potreby alokovat polozky tabulky stranok, ale oznacit ich on-demand pri vypadku nacitat prislusne udaje z disku a aktualizovat mapovanie - vyzva co ak je binarka vacsia ako fyzicka ramka? 7) vacsia virtualna pamat ako fyzicka ram - pozorovanie program moze vyzadovat viac pamate nez je dostupnej ramky - idea menej pouzivane stranky sa odlozia na disk a zneplatni sa mapovanie pri vypadku sa potrebne stranky z disku nahraju do ram a nastavi sa znovu PTE_V 8) do pamate mapovane subory - idea umoznit pristup k udajom suborov pomocou pamate netreba volat read(), write() v programe, iba pouzivat napr. pole znakov; adresa zaciatku pola bude interne mapovana na obsah suboru - vylepsenie pre vacsie subory je mozna kombinacia s predoslym pristupom, t.j. nenahravat cely subor do pamate, ale vzdy iba tu cast, s ktorou je potrebne pracovat 9) zdielanie pamate medzi uzlami siete - idea umoznit procesom na rozlicnych uzloch siete zdielat pamat t.j. dat im iluziu fyzickej pamate cez siet