> ¿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
