[so] [tema5] rezolvarea dilemei

Octavian Purdila tavi at cs.pub.ro
Mon Jan 7 03:15:57 EET 2008


On Monday 07 January 2008, Andrei Deftu wrote:
> Intrebam pentru ca in mod normal, cand se face acces
> la o pagina care nu este nici RAM, nici in swap,
> aceasta pagina inseamna ca se gaseste pe o memorie
> externa (ex. disk), deci se stie o adresa de unde sa
> se mapeze datele.  Asta e de fapt si mecanismul paging 
> on demand: se incarca paginile la cerere dar maparea
> se face in momentul page fault-ului. Am inceput sa
> aberez ?
>

Nu. Maparea nu se face la page fault. 

Maparea se face la mmap(fd=-1,flags=MAP_ANONYMOUS), sau VirtualAlloc, sau 
MapViewOfFile, sau mmap(fd=x). In cazul temei, maparea s-a facut la vinit.

Se poate mapa in spatiul de adresa al procesului atat memorie (cazurile 1 si 2 
de mai sus) cat si fisiere (cazurile 3 si 4). Demand paging-ul functioneaza in 
ambele cazuri.

La page fault se aloca o pagina fizica si se creaza asocierea dintre pagina 
fizica si cea virtuala in MMU. Apoi, in cazurile 1 si 2 se curata pagina, iar 
in cazurile 3 si 4 se incarca pagina de pe disk.

tavi


More information about the so mailing list