Download - Memoria virtual android
UNIVERSIDAD TECNICA PARTICULAR DE LOJA
La Universidad Católica de Loja
Escuela de Ciencias de la Computación
Titulación de Sistemas Informáticos y Computación
Memoria virtual en Android
Integrantes: Freddy Vera
Carlos Ojeda
Francisco Vargas
Docentes: Fernanda Maricela Soto Guerrero
Fecha: 25/03/13
Periodo académico
Abril 2013 - Agosto 2013
Memoria virtual en AndroidAndroid utiliza una máquina virtual propia llamada Dalvik, que ha sido diseñada para
optimizar la memoria y los recursos de hardware en el entorno de los teléfonos móviles.
A diferencia de la máquina virtual de Java, basada en el uso de pilas, la máquina virtual
Dalvik está basada en registros.
¿Cómo funciona Dalvik?Dalvik es una máquina virtual intérprete que ejecuta archivos en el formato Dalvik
Executable (*.dex), un formato optimizado para el almacenamiento eficiente y ejecución
mapeable en memoria. Su objetivo fundamental es el mismo que cualquier máquina
virtual, permite que el código sea compilado a un bytecode independiente de la
máquina en la que se va a ejecutar, y la máquina virtual interpreta este bytecode a la
hora de ejecutar el programa. El hecho de no utilizar la máquina virtual de Java (aparte
de posibles aspectos legales y otros que podamos imaginarnos) es la necesidad de
optimizar al máximo los recursos y enfocar el funcionamiento de los programas hacia un
entorno de escasos recursos de memoria, procesador y almacenamiento como es el
que se tiene en los teléfonos.
Dalvik está basada en registros y puede ejecutar clases compiladas por un compilador
Java y que posteriormente han sido convertidas al formato nativo usando la herramienta
“dx”. Hay que decir que esta máquina virtual corre por encima de un kernel Linux 2.6, el
cuál le permite, entre otras cosas, delegar las tareas relacionadas con la gestión de
hilos y memoria a bajo nivel. La Dalvik VM ha sido optimizada también para que haya
múltiples instancias suyas funcionando con un impacto muy bajo en el rendimiento de la
memoria del dispositivo. Este aspecto de usar varias máquinas virtuales se pensó para
proteger a las aplicaciones, de forma que el cierre o fallo inesperado de alguna de ellas
no afecte de ninguna forma a las demás.
Otra cosa interesante, es que el hecho de que Dalvik funcione sobre un núcleo Linux
implica que es posible escribir aplicaciones en C/C++ que funcionen directamente sobre
el kernel. Aún así, debes de tener presente que aunque es posible hacer esto, sólo en
algunas ocasiones resultará completamente ventajoso.
¿Cuáles son las diferencias entre Dalvik y la Java Virtual Machine?La máquina virtual de Java, que podemos encontrar en casi todas las PC’s actuales, se
basa en el uso de las pilas. De modo contrario, Dalvik utiliza los registros, ya que los
teléfonos móviles están optimizados para la ejecución basada en los mismos.
Aunque utilizamos el lenguaje Java para programar las aplicaciones Android, el
bytecode de Java no es ejecutable en un sistema Android. De igual forma, las librerías
Java que utiliza Android son ligeramente distintas a las utilizadas en Java Standard
Edition (Java SE) o en Java Mobile Edition (Java ME), guardando también
características en común.
Entender Prioridad de aplicaciones y Estados del Proceso
El orden en el que se matan los procesos para reclamar los recursos se determina por
la prioridad de las aplicaciones alojadas. La prioridad de una solicitud es igual a su
componente de mayor prioridad.
Cuando dos aplicaciones tienen la misma prioridad, el proceso que ha estado en una
prioridad más baja más larga será matado primero. Prioridad del proceso también se ve
afectada por las dependencias entre procesos, si una aplicación tiene una dependencia
en un servicio o proveedor de contenidos suministrados por una segunda aplicación, la
aplicación secundaria tendrá al menos una prioridad tan alta como la aplicación que
soporta.
Todas las aplicaciones Android seguirán funcionando y en la memoria hasta que el
sistema necesita de sus recursos para otras aplicaciones.
Es importante estructurar correctamente su solicitud para asegurarse de que su
prioridad es apropiada para el trabajo que está haciendo. Si no lo hace, su solicitud
podría ser asesinada, mientras que está en el medio de algo importante.
La siguiente lista detalla cada uno de los estados de la aplicación se muestra en la
figura, explicando cómo el estado está determinado por los componentes de la
aplicación que lo componen:
Procesos activos procesos activos (en primer plano) son las que albergan las
aplicaciones con los componentes actualmente interactuando con el usuario. Estos son
los procesos de Android está tratando de mantenerse receptivo mediante la
reivindicación de los recursos. En general, existen muy pocos de estos procesos, y los
matarán sólo como último recurso.
Procesos activos incluyen:
Las actividades en un estado "activo", es decir, están en el primer plano y
responder a eventos de usuario. Usted explorará los estados de actividad con
mayor detalle más adelante en este capítulo.
Actividades, Servicios, o receptores de radiodifusión que en la actualidad se
están ejecutando un controlador de eventos OnReceive.
Los servicios que se están ejecutando una onStart, onCreate o controlador de
eventos OnDestroy.