[so] [Tema3][Linux] Mai multe apeluri vm_alloc

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sat Apr 23 10:26:19 EEST 2011


On 04/23/2011 02:29 AM, Adrian Scoica wrote:
> 2011/4/22 Alexandra Sava <alexandrasava18 at gmail.com>
>> 2011/4/22 Bogdan Lupu <bogdan.ioan.lupu at gmail.com>:
>>> Acum ce nu pot sa ma prind cum sa fac este sa in momentul in care am
>>> primit un SIGSECV sa stiu de la care din cele n zone de memorie a
>>> venit pentru a putea sa stiu in care din cele n fisiere RAM sa fac
>>> maparea.
>>
>> Salut!
>>
>> Daca te uiti in teste, la fiecare test se face un vm_alloc si toate
>> operatiile facute in testul respectiv sunt pentru memoria ce tocmai a
>> fost mapata . Deci raspunsul este pentru a n-a zona de memorie mapata
>> (ultima).
> 
> Yes..., but that's the WRONG way to do it.
> 
> Ar trebui sa tii si tu o lista/map/vector/something in care sa poti
> asocia adrese de start cu descriptori de fisiere, nume de fisiere, si
> orice altceva mai ai nevoie. Pe Windows parca trebuie sa tii evidenta
> la mai multe handlere de felul asta.

Soluția corectă este cea indicată de Adrian: crearea unei liste de
structuri – o structură pentru fiecare alocare.

Structure conține informațiile indicate de Adrian iar căutarea în listă
o vei realiza după adresa în care a apărut page fault-ul. Zona de
memorie alocată cu vm_alloc este virtual continuă, astfel că îți poți da
seama (prin comparație) în care zonă a apărut page fault-ul și să
identifici, astfel, structura aferentă.

Răzvan


More information about the so mailing list