Ne brini... page fault je termin vezan za stranicnu organizaciju virtuelne memorije i ne znaci da je doslo do kvara niti do greske.
Sta je virtuelna memorija?
Naime, adresni prostor racunara je mnogo veci od velicine tvog RAM-a. Uz to, multitasking operativni sistemi dozvoljavaju da se razni programi "istovremeno" izvrsavaju i da istovremeno koriste (i usitne) i tu postojecu kolicinu stvarnog RAM-a. Medjutim, aplikacije ne moraju da brinu zbog toga, jer je sistem napravljen tako kao da imaju sav moguci RAM na raspolaganju. Jednostavno, kompletan adresni prostor podeljen je na mnogo jednakih delova koji se nazivaju stranice (pages) i svakom programu koji trenutno nesto radi je dato parce RAM-a velicine jedne ili vise stranica. Te dodeljene stranice stvarne memorije glume (memorijski kontroler se pobrine za to) po potrebi bilo koje stranice iz virtuelne memorije.
Kada program tokom izvrsavanja dodje do mesta gde mu treba sledeca instrukcija ili podatak sa neke adrese koja je izvan dela virtuelne memorije koji je trenutno smesten u njemu dodeljeni RAM, ta situacija se zove "page fault". Memorijski kontroler daje interapt procesoru, koji onda reaguje tako sto na kratko zaustavlja izvrsavanje onog programa, dok ne prekopira trenutni sadrzaj jedne od njegovih stranica virtuelne memorije u swap fajl na disk i ne ucita trazenu stranicu sa diska u dodeljeni deo RAM-a. Onda pusta program da nastavi (tj. vraca ga na listu taskova koji mogu da se izvrse kad bude red na njih).
Jasno je da se izvrsavanje programa jako usporava ako ima mnogo page fault-ova. Takva situacija se naziva "trashing". Zato je "zdravo" za performanse racunara da ima sto je moguce vise RAM-a i da ima sto manje ukljucenih taskova koji se guraju u njega. Verovatno su moguce i razne optimizacije koda radi smanjenja trashing-a, ali o tome stvarno ne znam nista. Naslucujem da je jako lose ako je na primer neka programska petlja presecena na dvoje granicom izmedju stranica. Takodje, cini mi se da starije (koje zauzimaju manje memorije) aplikacije rade nesrazmerno brze od novijih, a te novije su optimizovane tako da iskoriste obilje memorije da ubrzaju rad na racun povecanja velicine koda.
Verovatno bi bilo korisno da se velicina memorijske stranice moze podesiti po zelji, tako da se za masine sa vise RAM-a i velicina stranice srazmerno poveca, ili da se OS nekako instruira da za odredjene, glomaznije, aplikacije uvek rezervise neki zadati minimum od vise stranica odjednom.