[so] [Tema 3] Nelamurire enunt
Andrei Bucur
andrei.bucur at gmail.com
Fri May 1 01:04:57 EEST 2009
NU ai voie sa intorci intorci maparea swapului pentru ca ar insemna ca
procesul care foloseste biblioteca sa acceseze direct swapul, nu RAMul.
Acest lucru e conceptual imposibil.
Nu zice nimeni sa folosesti write cand scrii in swap. Eu cand "creez" o
pagina virtuala mapez in memorie si corespundentul ei din fisierul de swap.
Nu folosesc decat memcpy pentru a copia dintr-o parte in alta pagini.
2009/4/30 Dragos Valentin Moinescu <dragos.moinescu at gmail.com>
> 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
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090501/88cef9e0/attachment.htm>
More information about the so
mailing list