Hey again,<div> I am thinking that a weaker form of such mobility might suffice for my project, but I am not sure. In this weaker form, it is enough to transfer the code and execution can restart again. I need this primary to implement the code-on-demand and remote-evaluation architectures. I do not believe that this is so complex in Erlang, in fact if I remember correctly some functionality already exists for such. </div>
<div><br><br><div class="gmail_quote">On Tue, Jul 31, 2012 at 8:15 PM, Gleb Peregud <span dir="ltr"><<a href="mailto:gleber.p@gmail.com" target="_blank">gleber.p@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Tue, Jul 31, 2012 at 8:11 PM, Tyron Zerafa <<a href="mailto:tyron.zerafa@gmail.com">tyron.zerafa@gmail.com</a>> wrote:<br>
> Hey,<br>
> My primary intention is to implement strong mobility of processes. Let's<br>
> say that process A is running on Node 1, I want to be able to suspend this<br>
> process, transfer it to Node 2 and resume such process from where it halted.<br>
> I believe that in order to achieve such I need to somehow preserve the stack<br>
> trace, memory and other info.<br>
<br>
</div>This task is non-trivial and will require a lot of work with ERTS and<br>
whole Erlang VM. Things you have to handle are:<br>
- stack<br>
- heap<br>
- binary refs<br>
- monitors<br>
- links<br>
- ets ownership<br>
- port ownership<br>
- messages sent to old process pid?<br>
- replacing old pid with new in other processes?<br>
- replacing old process with "replay" process?<br>
<br>
And I'm sure that those are not all details which will have to be handled.<br>
<br>
Cheers,<br>
Gleb<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Best Regards,<div>Tyron Zerafa</div><br>
</div>