Buna.<br><br>M-am uitat putin pe tema ta si impresia mea e ca ai combinat doua abordari posibile: <br><ul><li>memoria virtuala sa fie reprezentata de o mapare a fisierului care simuleaza RAM-ul, caz in care &#39;ram_sync&#39; s-ar rezuma la un &#39;msync&#39;
</li><li>memoria virtuala sa fie reprezentata de o zona obtinuta prin maparea de memorie, caz in care &#39;ram_sync&#39; ar presupune o &quot;sincronizare de mana&quot; a continutului memoriei virtuale simulate si a fisierului RAM
</li></ul>&#39;mmap&#39; cu &#39;MAP_ANONYMOUS&#39; nu rezerva un spatiu de adrese pe care mai apoi sa-l poti folosi ca sa mapezi un fisier; zona obtinuta cu &#39;MAP_ANONYMOUS&#39; poate fi folosita ca atare (doar ca in loc sa mapezi un fisier, ai mapat memorie).
<br><br>Primul parametru dat lui &#39;mmap&#39; e o sugestie de care sistemul de operare poate sa nu tina cont si sa mapeze la o cu totul alta adresa decat cea dorita de tine.<br><br>Cand in &#39;vinit&#39; mapezi cu &#39;MAP_ANONYMOUS&#39;, zona obtinuta e suficienta pentru a simula memoria virtuala. In handler, tu incerci sa mapezi peste fisierul RAM la exact aceeasi adresa; daca asta vroiai de la inceput (ca memoria virtuala sa fie o mapare a fisierului RAM), nu mai era necesara acea mapare cu &#39;MAP_ANONYMOUS&#39; din &#39;vinit&#39;. In &#39;vinit&#39; ori mapezi memorie, ori mapezi fisierul si in handler nu mai ai de ce sa mapezi/demapezi.
<br><br>Sfatul meu ar fi ca tinand cont de observatiile de mai sus, sa aduci modificarile necesare temei tale si sa retrimiti.<br><br>Catalina<br><br><div class="gmail_quote">On Jan 8, 2008 6:48 PM, Catalina Caloian &lt;<a href="mailto:catalina.caloian@gmail.com">
catalina.caloian@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Jan 8, 2008 6:11 PM, Liviu Ciortea &lt;
<a href="mailto:liviuefer@gmail.com" target="_blank">liviuefer@gmail.com</a>&gt; wrote:<br></div><div class="gmail_quote"><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Nu chiar... In solutia mea o pagina virtuala nu se mapeaza efectiv de<br>memoria reala a sistemului, ci de o portiune din fisierul de RAM.<br>Aceasta mapare are loc la aducerea paginii din swap sau la alocarea<br>ei, deci in event handler. &nbsp;
</blockquote></div><div><br>Chiar daca mapezi fisierul care simuleaza RAM-ul sau mapezi memorie, aceasta mapare
ar trebui sa se faca o data, in &#39;vinit&#39;, si in intregime; in handler ar
trebui doar sa schimbi protectia zonelor ce corespund paginilor
accesate. Tu din &#39;vinit&#39; ce intorci (pointer catre ce zona si de ce
dimensiune?) daca mapezi doar in handler?<br>&nbsp;<br></div><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Cand trebuie s-o inlocuiesc (si eventual
<br>s-o trimit in swap), trebuie mai intai sa o demapez de pe aceasta<br>portiune fizica din fisierul de RAM, deci aici apare acel unmap, si<br>apoi nevoia de remapare.</blockquote></div><div><br>Cand &quot;eliberezi&quot; o pagina fizica n-ar trebui sa faci &#39;unmap&#39;, ci doar sa schimbi protectia astfel incat un acces ulterior sa-ti genereze un page fault.&nbsp;
<br></div><div class="Ih2E3d"><div>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Pana la urma, ambele rezolvari au avantajele si dezavantajele lor.
<br>
Este de preferat una dintre ele, sau vor fi considerate corecte<br>amandoua?<br></blockquote></div></div><br><br>Nu sunt sigura ca am inteles complet ce faci tu, dar nu pare tocmai corect.<br><font color="#888888"><br>Catalina
<br>
</font></blockquote></div><br>