Teniendo en cuenta tu ultima frase:
PD: Maquina virtual = software que crea un entorno virtual entre la plataforma de la computadora y el usuario final, permitiendo que este ejecute un software determinado.
Limitare mis repuestas viendo como maquina virtual, un paso intermedio entre el codigo creado yel codigo entendido por el sistema operativo.
Se descarta el codigo que pasa por el OS y este convierte en codigo de maquina.
Y se descarta desde luego la emulacion de una maquina dentro de otra.
¿Cual es la limitacion de las maquina virtuales, como la de Java?
No se que limitaciones tenga la JVM, pero en cuento a limitaciones esta desde luego que una maquina virtual nunca posee el mismo poder de procesamiento , de hecho no posee el mismo poder a nivel general en cuanto a performance, y desde luego necesita gran cantidad de recursos del OS.
¿En que aspecto es mejor que los compilados nativos (o no virtuales)?
Basicamente en que por ejemplo en el caso de java, solo necesitas tener una unica pieza de software y llevartela a la maquina que sea sin mayores contratiempos puesto que la pieza de software se ejecuta en la maquina virtual, no en la maquina real.
Es decir solo necesitas una version diferente de la MV en cada maquina real para que la pieza de sw funcione sin realizar modificaciones.
Un compilador nativo genera codigo que es directamente 'entendible' por el sistema operativo ( MReal), mientras que un compilador que genera codigo para una maquina virtual, genera codigo diretctamente ejecutable.. sobre la maquina virtual, y es la maquina la que convierte ese codigo en codigo nativo para que lo entienda el sistema operativo.
Desde luego ese proceso de 'conversion' tiene un costo a nivel de performance y en otras caracteristicas, que por ejemplo en lenguajes como java limitan el acceso a los componentes o dispositivos de la 'maquina real'.
¿Es posible hacer OS en una maquina virtual?
He escuchado el asunto de sun... de hecho hace un tiempo estaba muy convencido de eso pero despues de darle vueltas al asunto me di cuenta que no me convence de mucho, pues en todo caso el sistema operativo hecho una VM necesita un '
algo' que ponga a ejecutar esa VM, lo cual en primera instancia tiene dos puntos de vista:
1- Ese
algo ya es un sistema operativo, pequeño pero ya lo es.
2- Sino se ve desde el punto de vista anterior, dicha MV no existe y es el propio OS en si.