17 años en Internet

17 enero 2011

Las entrañas de Android

Android es básicamente un sistema GNU/Linux que carece de partición swap y que ejecuta una máquina virtual java por proceso. Esta máquina virtual se llama Dalvik y posee un 30% menos de instrucciones que la JVM de Sun. Eso sí, es el doble de rápido que una JVM tradicional.

Hay que aclarar que tener menos instrucciones no significa que sea peor. Este híbrido de linux y java incluye entre sus bondades un navegador web basado en WebKit, una base de datos SQLite, un motor de Javascript e incluso diversas librerías dedicadas, por ejemplo, a la manipulación de imágenes o el reconocimiento facial.

Cada vez que arranca el sistema, dentro del /etc/init.rc/ hay un script que despierta una instancia de Dalvik y que ejecuta el proceso Zygote. Este proceso es un centinela que se encarga de crear más instancias de Dalvik y de almacenarlas en un array. Así, cada vez que se ejecute un fork() Zygote mira en su array de Dalviks sin linkar y les asocia la DLL JNI (aplicación) correspondiente. Esto optimiza el arranque de las aplicaciones, puesto que es más rápido linkar una Dalvik ya creada, que levantar cada vez una nueva instancia de máquina virtual.

2 comentarios:

  1. Muy interesante sebas. Siempre me había preguntado que era el android. Lei por ahí que google está preparando otra máquina virtual que soporta compilación dinámica del código java a las instrucciones del procesador del dispositivo...
    Una pasada lo que está por venir vamos.

    ResponderEliminar
  2. Ya te digo, destripar las cosas desde dentro mola ;)

    ResponderEliminar

Si te ha gustado la entrada o consideras que algún dato es erróneo o símplemente deseas dar algún consejo, no dudes en dejar un comentario. Todo feedback es bienvenido siempre que sea respetuoso. También puedes contactarme vía Twitter @Hamster_ruso si lo consideras necesario.