por
pobrecito hablador
el Martes, 01 Junio de 2010, 12:26h
(#1220691)
Pero eso les ocurre por no saber programar de manera portable y confundir guest con host. Aún así y con todo, ese código podría funcionar si revisaran todas las operaciones de memoria que hace el guest, pero es que ni eso.
No, ni siquiera. No es necesario. El caso es que el código, aunque en 32bits manipule direcciones reales, se puede hacer que las direcciones que manipule en 64bits no lo sean (en realidad son virtuales, porque la memoria es virtual en el host también, pero utilizo la palabra "real" para que se entienda que es una dirección directamente utilizable por el host). Lo suyo, y más si es una máquina de pila, es que la gestión de la memoria del host la haga la VM y el guest pueda seguir corriendo como si estuviese en 32bits. Obviamente, no se podrá utilizar más de los 4GB de memoria que se pueden direccionar desde el host, que es una limitación del diseño (que también era y es evitable, si hubiesen hecho versiones de todas las instrucciones en 4 y 8 bytes, por ejemplo), pero dará igual la dirección que devuelva el host.
Lo que intento explicar es que como al final todo el código tiene que ser traducido, es irrelevante si la dirección con la que trabaja la máquina virtual es directamente utilizable por el host o requiere una traducción de algún tipo.
realmente no es como dicen ningun de los 2, 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.
olvidense de host y guest, en este caso no existe eso, suguiero que vean el codigo de lua y/o python para entender, 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, la memoria en ninguna maquina virtual salvo productos de virtualizacion de un ordenador (como ser VMWare, VirtualPC o VirtualBox) no virtualizan la memoria.
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.
el problema es que esto se desprende de DIV, la arquitectura DIV no soporta 64bits (es de DOS) y tampoco los procesadores de esa epoca (salvo algun que otro "monstruo" de la epoca que usaban grandes empresas/entidades bancarias en sus servidores) eran de 64bits.
no hay miedo en bennu para hacer una maquina virtual de 64bits, solo que la maquina actual es de 32bits, la maquina no implica que el manejo de memoria y demas sea virtualizado, en muchos casos se necesitan manipular direcciones de memoria en la maquina virtual a traves del lenguaje, pero esto no es seguro hacerlo si la aplicacion es de 64bits (aunque en la mayoria de los casos los mallocs no dan direcciones de memoria altas), y eso bajo ningun punto de vista es una falla de diseño, son caracteristicas.
por favor, recomiendo encarecidamente que estudien los codigos de los productos mencionados (lua, python) si consideran que fenix/bennu no son de confianza y estan mal diseñados, y entenderan un poco mejor las cosas.
como me gustaria que aparezca Miriam y les explique un poco todo el asunto, ya que confian en ella, nosotros hemos tenido varias charlas tecnicas en privado.
saludos.
Re:aclaraciones
(Puntos:0)No, ni siquiera. No es necesario. El caso es que el código, aunque en 32bits manipule direcciones reales, se puede hacer que las direcciones que manipule en 64bits no lo sean (en realidad son virtuales, porque la memoria es virtual en el host también, pero utilizo la palabra "real" para que se entienda que es una dirección directamente utilizable por el host). Lo suyo, y más si es una máquina de pila, es que la gestión de la memoria del host la haga la VM y el guest pueda seguir corriendo como si estuviese en 32bits. Obviamente, no se podrá utilizar más de los 4GB de memoria que se pueden direccionar desde el host, que es una limitación del diseño (que también era y es evitable, si hubiesen hecho versiones de todas las instrucciones en 4 y 8 bytes, por ejemplo), pero dará igual la dirección que devuelva el host.
Lo que intento explicar es que como al final todo el código tiene que ser traducido, es irrelevante si la dirección con la que trabaja la máquina virtual es directamente utilizable por el host o requiere una traducción de algún tipo.
Re:aclaraciones
(Puntos:1)olvidense de host y guest, en este caso no existe eso, suguiero que vean el codigo de lua y/o python para entender, 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, la memoria en ninguna maquina virtual salvo productos de virtualizacion de un ordenador (como ser VMWare, VirtualPC o VirtualBox) no virtualizan la memoria.
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.
el problema es que esto se desprende de DIV, la arquitectura DIV no soporta 64bits (es de DOS) y tampoco los procesadores de esa epoca (salvo algun que otro "monstruo" de la epoca que usaban grandes empresas/entidades bancarias en sus servidores) eran de 64bits.
no hay miedo en bennu para hacer una maquina virtual de 64bits, solo que la maquina actual es de 32bits, la maquina no implica que el manejo de memoria y demas sea virtualizado, en muchos casos se necesitan manipular direcciones de memoria en la maquina virtual a traves del lenguaje, pero esto no es seguro hacerlo si la aplicacion es de 64bits (aunque en la mayoria de los casos los mallocs no dan direcciones de memoria altas), y eso bajo ningun punto de vista es una falla de diseño, son caracteristicas.
por favor, recomiendo encarecidamente que estudien los codigos de los productos mencionados (lua, python) si consideran que fenix/bennu no son de confianza y estan mal diseñados, y entenderan un poco mejor las cosas.
como me gustaria que aparezca Miriam y les explique un poco todo el asunto, ya que confian en ella, nosotros hemos tenido varias charlas tecnicas en privado.
saludos.