<br><br><div class="gmail_quote">2008/6/19 Rafael Bidegain <<a href="mailto:r.bidegain@gmail.com">r.bidegain@gmail.com</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola a todos.<br>
<br>
Anoche entre cervezas y nachos, en una meet de rubyes, alquien comentó<br>
[0] que es posible ocupar gran cantidad de memoria y lockearla para<br>
evitar swap y lograr rapidez en el proceso.<br>
<br>
como se implementa eso?<br>
<br>
//se me ocurre algo así:<br>
char *p;<br>
p = (char *) malloc(1024*1024*100);<br>
<br>
//Desde Ahora deberia el SO _NO_ debería mandar el contenido de p a swap.<br>
lock(p);<br>
<br>
//despues debería llamar a unlock y a free<br>
<br>
</blockquote></div>No, no me parece. Si tu aplicación es "pasada a segundo plano" por el SO, por los motivos que fueren, este conserva la "soberanía" sobre que hacer con la memoria (swapearla a disco, mantenerla en RAM, etc), de cada uno de los procesos que están corriendo, y esto independientemente de como declaraste el uso de esta memoria (en tu ejemplo, en heap). <br>
Probablemente haya una respuesta a tu pregunta, pero... por el momento no la tengo, voy a googlear a ver si encuentro algo. En cualquier caso, no creo que haya una respuesta lineal y simple a una cuestión tan compleja y diversa que es como cada SO maneja la memoria.<br clear="all">
<br>-- <br> <br> Ernesto Savoretti