> ¿Y cómo determinas cuando lso JIT pueden correr en paralelo y cuando no?
> Una manera trivial de hacer eso sería tener varias VMs corriendo
> simultáneamente y comunicarlas mediante sockets.

Si, tan trivial que se llama GemStone y existe hace ~25 años.  Si esto
es en la misma maquina, podes usar memoria shareada con transacciones
y asi no tenes que usar TCP/IP...

> Por ejemplo tener una VM
> para el filesystem, una para la pantalla, otra para los dispositivos, otra
> para cada aplicación, etc. Cuando quieres comunicarlas, necesariamente
> invocan a otra que recibe mensajes mediante sockets. La ventaja de los
> sockets es que naturalmente funcionan como una cola y serializan los
> mensajes desde el punto de vista del receptor.

La desventaja es, me parece, el throughput, el overhead de usar TCP/IP
en vez de (esencialmente) memcpy() (y acordate de la fragmentacion de
paquetes, blah blah blah), y tener que serializar todo.  Si tenes
memoria shareada, entonces no hay que serializar.  Serializar y
des-serializar es costoso.

> Separar dentro de una misma VM varios espacios de objetos me parece
> innecesariamente complejo.

Si queres hacer un fork, crear otro thread seria mucho mas rapido que
levantar otro proceso de maquina virtual.

Andres.

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a