Pana la urma am renuntat la FileMapping si la MapViewOfFile, in ciuda recomandarii din enuntul temei <b>"</b>Paginile de memorie virtuală (din spațiul de adresă al procesului) se pot mapa individual <b>direct peste fișierul de RAM</b> folosind funcțiile <tt>mmap</tt> (Linux) și <tt><a href="http://msdn.microsoft.com/en-us/library/aa366763%28VS.85%29.aspx" class="external text" title="http://msdn.microsoft.com/en-us/library/aa366763(VS.85).aspx" rel="nofollow">MapViewOfFileEx</a></tt> (Windows).
"<br>
<br>Probabil ca daca nu exista aceasta recomandare, as fi incercat sa caut alta solutie de la bun inceput.<br><br>Tema se poate rezolva respectand cerintele folosind numai VirtualAlloc, VirtualFree si apeluri de I/O.<br>
<br><br>Irina<br><br><br><div class="gmail_quote">În data de 5 mai 2009, 16:36, andreea sandu <span dir="ltr"><<a href="mailto:sandu_adina2006@yahoo.com">sandu_adina2006@yahoo.com</a>></span> a scris:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">Pentru a respecta cerinta temei "<span style="font-style: italic;">Paginile din acest spațiu nu trebuie sa fie prezente și în memoria RAM după apelul funcției </span><tt style="font-style: italic;">vinit</tt><span style="font-style: italic;">/</span><tt style="font-style: italic;">VirtualInit</tt>"[1] ar trebui sa folosim VirtualAlloc cu parametrul MEM_RESERVE. Din cate observ nu se poate face free pe o pagina alocata cu MEM_RESERVE, ci doar pe tot spatiul incepand de la <i>lpAddress:<br>
</i>MEM_RELEASE <br><p>Releases the specified region of pages. After this operation, the pages are in the free state.
</p>
<p>If you specify this value, <i>dwSize</i> must be 0 (zero), and <i>lpAddress</i> must point to the base address returned by the<a href="http://msdn.microsoft.com/en-us/library/aa366887%28VS.85%29.aspx" target="_blank"><b></b></a> VirtualAlloc function when the region is reserved. The function fails if either of these conditions is not met.</p>
<p><br></p><p>MapViewOfFileEx nu il putem folosi pe zone din spatiul de adresa deja alocate: <br></p><p> the function succeeds if the specified memory region is not already in use by the calling process.</p><p>Prin urmare nu vad cum am putea sa respectam si cerinta [1] si sa si mapam paginile din memoria virtuala direct peste fisierul care simuleaza ram-ul.<br>
</p><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;"></span></b></font><div class="im"><br><br>Din cate stiu, nu poti utiliza API-ul MapViewOfFile(Ex) cu zone de<br>
memorie alocate cu VirtualAlloc(Ex) si invers.<br><br>Poti sa faci rezervarea de memorie virtuala cu VirtualAlloc(Ex) si, la<br>maparea de pagini din fisierul RAM, sa faci VirtualFree(Ex) pe pagina<br>dorita si in locul ei remapezi o pagina din RAM cu MapViewOfFileEx.<br>
<br></div><div class="im">-- <br>Mircea<br><span><a href="http://mircea.bardac.net" target="_blank">http://mircea.bardac.net</a></span><br>_______________________________________________<br>so mailing list<br><a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a><br>
<span><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></span><br></div></div></div></div><br>
</div><br>_______________________________________________<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>
<br></blockquote></div><br>