Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:aclaraciones

    (Puntos:0)
    por pobrecito hablador el Miércoles, 02 Junio de 2010, 09:27h (#1220900)

    no hay que ver a una VM como un VMWare o un VirtualPC o un VirtualBox, incluso en dichos productos, las VM no pueden emular un procesador diferente, virtualizan.

    Da igual. Los mecanismos son los mismos, solo que esos productos utilizan soporte hardware para hacer una virtualización muy rápida. Las ideas que hay detrás son poco más o menos las mismas, aunque las posibilidades cambian (en una virtualización al nivel de VMWare, no tienen sentido las caches de trazas, pero sí en una virtualización como la que creo que hacéis en BennuGD).

    olvidense de host y guest, en este caso no existe eso

    Sí existe. El host es la máquina real, la que va a ejecutar el código nativo, y el guest es la máquina virtual, la que ejecuta el bytecode. Host y Guest no es solo cosa del S.O. Es terminología, si hay cualquier tipo de máquina virtual, tiene que haber un host donde corra.

    la memoria no se virtualiza, la maquina virtual solo atienden a instrucciones de su maquina virtual que nada tiene que ver con el procesador en el que estan corriendo, java tampoco virtualiza la memoria,

    Creo que no entiendes lo que significa "virtualizar la memoria". En Java, un programa que tú compilaste en 32bits, corre sobre la JVM de 64bits sin ningún problema. Virtualizar la memoria solo significa que las direcciones que utilice tu programa corriendo en la máquina virtual, tendrán que ser traducidas a direcciones emitibles por la máquina real. Así que te da igual si la máquina virtual es de 32bits o 64bits, cuando leas el opcode de "load", no vas a emitir "mov eax, dirección", sino "mov eax, traduce(dirección)". Como funciona la TLB, vamos.

    no se puede encapsular una direccion de 64bits en 32bits, solo tomando la parte menos significativa, porque la parte significativa no es de un valor unico, sino que dicho valor puede ser diferente segun el area de memoria que ocupe

    Era solo una posible idea. Aunque el valor alto no sea siempre el mismo, se trata de tener una tabla de traducción de páginas y que el mecanismo de traducción sea rápido. De todos modos, si tenéis una máquina de pila, no entiendo por qué importan tanto las direcciones de memoria, todo debería estar referido a posiciones de la pila (como en Java).

    La máquina virtual de Lua no la he visto nunca, pero estoy familiarizado con la de Java y los módulos de JIT Compiling de LLVM. No estoy dando ideas al azar, estoy pensando en cosas concretas. Obviamente, hasta que no me ponga con el código de la máquina, se me escaparán los pormenores, pero términos generales, no hay ningún problema con que la máquina virtual sea de 32bits y el procesador de 64bits. Para eso se hacen esas máquinas virtuales, para que sean independientes de la arquitectura.

    [ Padre ]
  • Re:aclaraciones

    (Puntos:1)
    por SplinterGU (47950) el Miércoles, 02 Junio de 2010, 15:26h (#1220967)
    En realidad java no tiene este problema porque java no tiene punteros, java no virtualiza la memoria, sin embargo si tiene proteccion sobre la misma, que son cosas diferentes.
    BennuGD es mayormente un lenguaje basado en modulos en C, funciones que entre otras cosas pueden pasarse punteros entre si, y esos punteros son memoria real, incluso uno puede manipular la memoria desde el lenguaje, esto esta mas orientado a tener la potencia de C. Pero repito, esto no es ningun invento de BennuGD, muchas VM lo hacen, repito lua, python, etc.
    Por favor, podes estar discutiendo eternamente esto, porque no estamos discutiendo segun base experimental completa sino teorica o en base a una unica experiencia, recomiendo vean el codigo de lua, y otras VMs.
    Repito, no es que los 64bits no tengan solucion simple, solo necesito tiempo para hacerlo.
    Saludos.
    [ Padre ]