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. <br>Nu zice nimeni sa folosesti write cand scrii in swap. Eu cand &quot;creez&quot; 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.<br>
<br><div class="gmail_quote">2009/4/30 Dragos Valentin Moinescu <span dir="ltr">&lt;<a href="mailto:dragos.moinescu@gmail.com">dragos.moinescu@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Mai, din cate am inteles eu din tema, nu are niciun sens sa folosesti<br>
RAM-ul fizic decat prin zonele mapate din cele doua fisiere.<br>
1 fisier mapat este SWAP-ul<br>
1 fisier mapat este RAM-ul<br>
<br>
in vinit() intorci adresa oferita prin maparea SWAP-ului (ca doar aia<br>
este toata memoria de care beneficiaza programul). Zona de memorie<br>
oferita prin mmap() va fi folosita de integrator sa acceseze acele<br>
zone de memorie. Toate paginile din SWAP sunt cu PROT_NONE, cele din<br>
RAM sunt PROT_READ | PROT_WRITE | PROT_EXECUTE, depinde de nivelul de<br>
protectie cerut de operatie. Cand aduci o pagina din SWAP in RAM, faci<br>
un memcpy intre cele doua zone de memorie si mprotect(PROT_READ |<br>
PROT_WRITE | PROT_EXECUTE) pe acea zona din SWAP. este mai bine sa<br>
faci o mapare pentru RAM decat sa tii lista de intrari in RAM si sa<br>
executi tu write() pe acele zone.<br>
<br>
2009/4/30 Andrei Bucur &lt;<a href="mailto:andrei.bucur@gmail.com">andrei.bucur@gmail.com</a>&gt;:<br>
<div><div></div><div class="h5">&gt; Nefiresc ar putea fi faptul ca-s obligat sa fac mmap-uri anonime doar pentru<br>
&gt; a fi sigur ca cine va folosi biblioteca nu va scrie la adresa intoarsa de<br>
&gt; vinit in locurile unde nu este mapata nicio pagina din RAM. Si dupa cum bine<br>
&gt; observ, in test.c se foloseste malloc deci blocarea accesului la acele<br>
&gt; pagini este absolut necesara.<br>
&gt; Altceva ar putea fi implementarea On Demand Paging. Cum in tema nu putem<br>
&gt; vorbi de aducerea paginilor de pe disc in memorie, atunci tot ce trebuie sa<br>
&gt; facem e sa mapam o pagina din fisierul RAM si sa o initializam cu 0? In<br>
&gt; enunt se precizeaza &quot;Ele [Paginile] vor fi create...&quot;. Nu pot sa spun ca am<br>
&gt; inteles exact la ce se refera acest act de creatie in contextul in care<br>
&gt; cantitatea de memorie folosita ramane constanta pe parcursul programului si<br>
&gt; initializarea paginilor cu 0 nu mi se pare un fenomen atat de special.<br>
&gt;<br>
&gt; 2009/4/30 Mircea Bardac &lt;<a href="mailto:cs@mircea.bardac.net">cs@mircea.bardac.net</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Andrei Bucur wrote:<br>
&gt;&gt; &gt; Toate testele par sa treaca cu brio. O pagina se va afla la un momentt<br>
&gt;&gt; &gt; dat<br>
&gt;&gt; &gt; ori in RAM ori in SWAP. Implicit am limitat folosirea memcpy numai cand<br>
&gt;&gt; &gt; faceam transferul din RAM in SWAP si viceversa.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Mai ramane o intrebare... este valida solutia?<br>
&gt;&gt;<br>
&gt;&gt; Atat timp cat trec testele, solutia este valida. Daca tie ti se pare<br>
&gt;&gt; ceva nefiresc in rezolvarea ta*, te rog sa ne spui.<br>
&gt;&gt;<br>
&gt;&gt; * nefiresc = ai implementa altfel/logic ti se pare ca ceva nu e corect<br>
&gt;&gt; /testele verifica ceva aiurea si tu ai scris rezolvarea cu anumite<br>
&gt;&gt; hack-uri pentru ca testele sa treaca<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Mircea<br>
&gt;&gt; <a href="http://mircea.bardac.net" target="_blank">http://mircea.bardac.net</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; so mailing list<br>
&gt;&gt; <a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br>
&gt;&gt; <a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; so mailing list<br>
&gt; <a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br>
&gt; <a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div>--<br>
Best regards,<br>
<font color="#888888">Dragos Moinescu<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
so mailing list<br>
<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br>
<a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br>
</div></div></blockquote></div><br>