[so] [Tema 3] Nelamurire enunt

Dragos Valentin Moinescu dragos.moinescu at gmail.com
Thu Apr 30 22:40:56 EEST 2009


Mai, din cate am inteles eu din tema, nu are niciun sens sa folosesti
RAM-ul fizic decat prin zonele mapate din cele doua fisiere.
1 fisier mapat este SWAP-ul
1 fisier mapat este RAM-ul

in vinit() intorci adresa oferita prin maparea SWAP-ului (ca doar aia
este toata memoria de care beneficiaza programul). Zona de memorie
oferita prin mmap() va fi folosita de integrator sa acceseze acele
zone de memorie. Toate paginile din SWAP sunt cu PROT_NONE, cele din
RAM sunt PROT_READ | PROT_WRITE | PROT_EXECUTE, depinde de nivelul de
protectie cerut de operatie. Cand aduci o pagina din SWAP in RAM, faci
un memcpy intre cele doua zone de memorie si mprotect(PROT_READ |
PROT_WRITE | PROT_EXECUTE) pe acea zona din SWAP. este mai bine sa
faci o mapare pentru RAM decat sa tii lista de intrari in RAM si sa
executi tu write() pe acele zone.

2009/4/30 Andrei Bucur <andrei.bucur at gmail.com>:
> Nefiresc ar putea fi faptul ca-s obligat sa fac mmap-uri anonime doar pentru
> a fi sigur ca cine va folosi biblioteca nu va scrie la adresa intoarsa de
> vinit in locurile unde nu este mapata nicio pagina din RAM. Si dupa cum bine
> observ, in test.c se foloseste malloc deci blocarea accesului la acele
> pagini este absolut necesara.
> Altceva ar putea fi implementarea On Demand Paging. Cum in tema nu putem
> vorbi de aducerea paginilor de pe disc in memorie, atunci tot ce trebuie sa
> facem e sa mapam o pagina din fisierul RAM si sa o initializam cu 0? In
> enunt se precizeaza "Ele [Paginile] vor fi create...". Nu pot sa spun ca am
> inteles exact la ce se refera acest act de creatie in contextul in care
> cantitatea de memorie folosita ramane constanta pe parcursul programului si
> initializarea paginilor cu 0 nu mi se pare un fenomen atat de special.
>
> 2009/4/30 Mircea Bardac <cs at mircea.bardac.net>
>>
>> Andrei Bucur wrote:
>> > Toate testele par sa treaca cu brio. O pagina se va afla la un momentt
>> > dat
>> > ori in RAM ori in SWAP. Implicit am limitat folosirea memcpy numai cand
>> > faceam transferul din RAM in SWAP si viceversa.
>> >
>> > Mai ramane o intrebare... este valida solutia?
>>
>> Atat timp cat trec testele, solutia este valida. Daca tie ti se pare
>> ceva nefiresc in rezolvarea ta*, te rog sa ne spui.
>>
>> * nefiresc = ai implementa altfel/logic ti se pare ca ceva nu e corect
>> /testele verifica ceva aiurea si tu ai scris rezolvarea cu anumite
>> hack-uri pentru ca testele sa treaca
>>
>> --
>> Mircea
>> http://mircea.bardac.net
>> _______________________________________________
>> so mailing list
>> so at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>



-- 
Best regards,
Dragos Moinescu


More information about the so mailing list