13 votos

¿Qué sigue haciendo el proceso zygote en Android L?

Estoy tratando de averiguar las diferencias específicas en los tiempos de ejecución de Dalvik y ART. Me doy cuenta de que ART ya no usa la VM de Dalvik, sin embargo, una de las primeras cosas que noté después de instalar la vista previa de Android L fue que el proceso zygote todavía estaba corriendo. Si realmente se deshicieron de la VM de Dalvik, ¿no haría eso que el proceso zygote fuera inútil? Además, al inspeccionar el código fuente publicado a través de AOSP, todavía queda una gran parte de Dalvik.

1 votos

Difícil de saber, es una versión para desarrolladores y está LEJOS de estar completa. En este momento tiene mucho de Kitkat / Jellybean integrado solo para que funcione y arranque.

0 votos

Siendo aún una "vista previa de desarrollador ", podría no tener mucho sentido especular (aunque sigo la explicación de Dan). Podría ser como Dan describió, o podría ser un "residuo" que aún no está "totalmente obsoleto". Cuando todavía se ejecuta en la versión L, eso es algo diferente.

15voto

Andy Brudtkuhl Puntos 1714

Zygote no está realmente vinculado con Dalvik, es solo un proceso de inicio. Zygote es el método que Android utiliza para iniciar aplicaciones. En lugar de tener que iniciar cada nuevo proceso desde cero, cargando todo el sistema y el marco de Android cada vez que se desea iniciar una aplicación, ese proceso se realiza una sola vez, y luego se detiene en ese punto, antes de que Zygote haya hecho algo específico de la aplicación. Luego, cuando se desea iniciar una aplicación, el proceso de Zygote se bifurca y el proceso hijo continúa desde donde se detuvo, cargando la aplicación misma en la VM.

Aunque este método fue diseñado originalmente para Dalvik, no hay razón por la que ART no debería comportarse exactamente de la misma manera. No tiene que compilar JIT las aplicaciones mientras se están ejecutando, pero aún tiene mucho material Java independiente de la aplicación para cargar (es decir, todo el marco de Android), por lo que tiene sentido utilizar el mismo método de bifurcación al cargar para iniciar nuevos procesos.

Es natural en un proyecto tan grande que haya otros restos de Dalvik que todavía son útiles en un mundo post-Dalvik, por lo que no debería sorprenderle que haya otro código que originalmente fue escrito para ser parte de o trabajar con Dalvik, que todavía está disponible para que ART lo utilice.

0 votos

Coincide con mi entendimiento de Zygote (siendo una no desviación). Desde la "vista del usuario", probablemente sea más fácil pensar en Zygote como un "servidor de aplicaciones", actuando como una "capa de abstracción" entre las aplicaciones y el sistema operativo (de alguna manera como lo hace HAL para abstraer hardware): ¿no importa qué está "abajo" (Dalvik o ART), la interfaz trata con "cosas" ?

1 votos

Podría resultar más fácil pensar en Zygote como un servidor de aplicaciones, pero no es una descripción muy precisa. Es simplemente la parte del sistema operativo que inicia aplicaciones, y está muy del lado del sistema operativo del límite entre aplicaciones y sistema operativo.

0 votos

Gracias, así que al menos mi "entendimiento básico" era correcto (soy consciente de que "servidor de aplicaciones" no es preciso, pero es más fácil de entender para un "usuario normal" - así que hagámoslo "servicio de aplicación", para llevarlo más al lado del SO ;)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X