gestion de procesos android
DESCRIPTION
TRANSCRIPT
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
Gestión de Procesos
Integrantes:
Freddy Vera
Carlos Ojeda
Francisco Vargas
Cristian Lluay
Docentes: Fernanda Maricela Soto Guerrero
Fecha: 01/04/13
Período académico
Abril 2013 - Agosto 2013
1
INTRODUCCIÓN
AndroidSolución software completa para dispositivos móviles.
Engloba:
Sistema operativo (basado en Linux).
Entorno de ejecución basado en Java.
Librerías de bajo y medio nivel.
Conjunto inicial de aplicaciones para el usuario final.
Historia 2005: Google compra Android Inc.
2007: se crea Open Handset Alliance (OHA) formada por 47 compañías (fabricantes
hw/sw y operadores). Objetivo: desarrollar estándares abiertos para dispositivos
móviles: Producto principal: plataforma Android.
2009: 14 nuevas compañías se unen a OHA.
2011: nuevas compañías se unen a la alianza.
13 operadores móviles.
20 fabricantes de dispositivos.
18 compañías de semiconductores.
16 compañías de software.
10 compañías de comercialización.
Arquitectura Libraries: escritas en lenguaje C/C++
libc: cabeceras y funciones estándar de C.
Surface Manager: compone los diferentes elementos de navegación y
ventanas en la pantalla.
OpenGL ES/ SGL: soporte a gráficos 3D y 2D.
2
Media Framework: soporte a grabación y reproducción de múltiples
formatos de audio y video.
SQLite: creación y gestión de bases de datos.
Free Type: trabajar con distintos tipos de fuentes.
SSL: soporte a comunicaciones seguras.
WebKit: soporte a aplicaciones tipo navegador.
Android runtime:
Core libraries: permite que la funcionalidad disponible en las bibliotecas
anteriores esté accesible desde Java.
Dalvik VM: máquina virtual Java optimizada para dispositivos móviles.
Linux Kernel:
Kernel de Linux 2.6.
Incluye: drivers hardware, gestión de memoria, gestión de batería, gestión
de procesos.
Gestión de procesosAndroid OS es un sistema operativo desarrollado por Google para su uso en dispositivos móviles. Esto significa que ha sido diseñado para sistemas con poca memoria y un procesador que no es tan rápido como los procesadores de escritorio. Manteniendo las limitaciones en mente, la visión de Google para Android es que tendría un robusto conjunto de APIs de programación y una interfaz de usuario muy sensible. A fin de facilitar esta visión, se creó una capa de abstracción que permite a los desarrolladores de aplicaciones a ser agnóstico hardware en su diseño.
Android está basado en el kernel de Linux, pero en realidad no es puramente una "distribución Linux". Un estándar de distribución de Linux tiene un sistema de ventanas nativo, glibc y algunas utilidades estándar. No tiene una capa de abstracción entre las aplicaciones de usuario y de las bibliotecas
Android está basado en el kernel Linux 2.6. Hay importantes modificaciones que se han hecho en el núcleo, pero tiene el mismo núcleo. Usted podría preguntarse, si este tiene modificaciones significativas.
Modelos probados para la gestión de procesos y la gestión de memoria. Permisos de seguridad basada modelo es probado. Es de código abierto
3
El sistema operativo Android está diseñado como un único usuario del sistema operativo, así que Android se aprovecha de esto y se ejecuta cada componente como un usuario distinto. Esto permite Android para usar el modelo de seguridad de Linux y mantener los procesos en su propia caja de arena.
Android Procesos
Descripción general del proceso de gestión
La gestión de procesos en un sistema operativo típico implica muchas estructuras de datos y algoritmos complejos, pero no va mucho más allá del nivel de la gestión del proceso típico de estructura de datos. Android es similar en que en el nivel de base de las estructuras de control tienen el mismo aspecto. Similar a esto:
Esta estructura de datos es administrada por una gestión de procesos estándar, que es algo como
esto:
Android OS termina un proceso cuando no hay suficiente memoria para otros procesos
4
Todos los componentes de aplicaciones que se ejecutan en el proceso que se está
terminando por el sistema operativo se destruyen
Un nuevo proceso se iniciará por aquellos componentes cuando estos componentes
deben funcionar de nuevo
Android OS decide que procesa a finalizar en función de su importancia relativa para el
usuario, por ejemplo, todos los componentes de un proceso no son visibles
Terminación del proceso
Los procesos pueden ser asesinados en un par de maneras discretas.
Una aplicación puede llamar a un método para matar procesos que tiene permiso para
matar. Esto significa que si el proceso no es parte de la misma aplicación, no puede matar
a otros procesos. En realidad se puede instalar conceder un permiso a la aplicación para
matar a otras aplicaciones, pero esto es algo que no se suele hacer.
El sistema operativo Android tiene una cola utilizada menos recientemente que realiza un
seguimiento de las aplicaciones que no se han utilizado. Si el sistema operativo empieza a
quedarse sin memoria, matará al menos la aplicación utilizada recientemente. Hay
también prioridad a las aplicaciones que el usuario está interactuando con, o servicios en
segundo plano el usuario está interactuando.
Procesos y subprocesos
Cada aplicación se ejecuta en su propio proceso y todos los componentes de la aplicación
se ejecuten en ese proceso, de manera predeterminada
Todas las operaciones lentas y de bloqueo en una actividad se debe hacer en un nuevo
hilo, para evitar la ralentización de la interfaz de usuario
Cuando un componente de aplicación se inicia y la aplicación no tiene ningún otro componente en
funcionamiento, el sistema Android inicia un nuevo proceso de Linux para la aplicación con un solo
hilo de ejecución. De forma predeterminada, todos los componentes de la misma aplicación se
ejecutan en el mismo proceso y subproceso (llamado el "principal" hilo). Si un componente de
5
aplicación se inicia y que ya existe un proceso para dicha aplicación (porque otro componente de
la aplicación existe), entonces el componente se inicia dentro de ese proceso y usa el mismo hilo
de ejecución. Sin embargo, usted puede hacer arreglos para diferentes componentes de la
aplicación se ejecute en procesos separados, y se pueden crear subprocesos adicionales para
cualquier proceso.
Procesos del ciclo de vidaEl sistema Android trata de mantener un proceso de aplicación para el mayor tiempo posible, pero
con el tiempo necesario para eliminar los antiguos procesos para reclamar memoria para los
procesos nuevos o más importantes. Para determinar qué procesos a seguir y que matar, el
sistema coloca cada proceso en una "jerarquía de importancia", basada en los componentes que
se ejecutan en el proceso y el estado de los componentes. Los procesos con el menor importancia
se eliminan primero, luego los que tienen la importancia más baja siguiente, y así sucesivamente,
según sea necesario para recuperar los recursos del sistema.
Hay cinco niveles en la jerarquía de importancia. La siguiente lista presenta los diferentes tipos de
procesos en orden de importancia (el primer proceso es más importante y es asesinado el pasado.
Primer plano procesoUn proceso que se requiere para que el usuario está haciendo actualmente. Un proceso se
considera en el primer plano, si cualquiera de las condiciones siguientes son verdaderas:
Alberga una Activity que el usuario está interactuando con (la Activity 's onResume() método ha
sido llamado).
Alberga un Service que está destinado a la actividad que el usuario está interactuando.
Alberga un Service que se ejecuta "en primer plano", el servicio ha llamado startForeground() .
Alberga un Service que está ejecutando uno de sus devoluciones de llamada de ciclo de vida
( onCreate() , onStart() , o onDestroy() ).
Alberga una BroadcastReceiver que está ejecutando su onReceive() método.
6
Generalmente, sólo unos pocos existen procesos en primer plano en cualquier momento dado.
Son muertos sólo como un último recurso, si la memoria no es tan bajo que no todos pueden
seguir ejecutándose. Generalmente, en ese punto, el dispositivo ha alcanzado un estado de
paginación de memoria, lo que eliminar algunos procesos en primer plano se requiere para
mantener la interfaz de usuario sensible.
Proceso VisibleUn proceso que no tiene ningún componente de primer plano, pero todavía puede afectar lo que
el usuario ve en la pantalla. Un proceso se considera que es visible si cualquiera de las condiciones
siguientes son verdaderas:
Alberga una Activity que no está en el primer plano, pero sigue siendo visible para el usuario (su
onPause() método ha sido llamado). Esto podría ocurrir, por ejemplo, si la actividad de primer
plano inició un diálogo, que permite la actividad anterior para ser visto detrás de él.
Alberga un Service que está destinado a una visible (o primer plano) actividad.
Un proceso visible se considera muy importante y no morirá a menos que esto es necesario para
mantener todos los procesos en primer plano en ejecución.
Servicio de procesoUn proceso que está en marcha un servicio que se ha iniciado con la startService() método y no
están incluidos en ninguna de las dos categorías más altas. Aunque los procesos de servicio no
están directamente relacionados con todo lo que el usuario ve, por lo general hacer las cosas que
el usuario le interesan (como la reproducción de música en segundo plano o transferencia de
datos en la red), por lo que el sistema sigue en funcionamiento a menos que no hay suficiente
memoria para retenerlos junto con todos los procesos de primer plano y visibles.
Antecedentes procesoUn proceso que mantiene una actividad que no es actualmente visible para el usuario (de la
actividad onStop() método ha sido llamado). Estos procesos no tienen un impacto directo en la
experiencia del usuario, y el sistema puede matar en cualquier momento para recuperar la
memoria para un primer plano, visible, o proceso de servicio. Por lo general, hay muchos procesos
7
fondo de funcionamiento, por lo que se mantienen en un LRU (menos utilizado recientemente)
lista para asegurarse de que el proceso con la actividad que fue visto más recientemente por el
usuario es el último en ser matado. Si una actividad práctica sus métodos de ciclo de vida
correctamente, y guarda su estado actual, matando a su proceso no tendrá un efecto visible sobre
la experiencia del usuario, ya que cuando el usuario se desplaza de nuevo a la actividad, la
actividad restaura la totalidad de su estado visible. Ver la Actividades documento para obtener
información acerca de cómo guardar y restaurar el estado.
Proceso de vacíoUn proceso que no se cumple ninguno de los componentes de aplicaciones activas. La única razón
para mantener este tipo de proceso vivo es con fines de almacenamiento en caché para mejorar el
tiempo de arranque la próxima vez que un componente necesita para funcionar en él. El sistema a
menudo mata a estos procesos con el fin de equilibrar los recursos generales del sistema entre
cachés de proceso y los cachés del núcleo subyacente.
BIBLIOGRAFÍA http://developer.android.com/guide/basics/what-is-android.html
http://coltf.blogspot.com/p/android-os-processes-and-zygote.html
http://developer.android.com/guide/components/processes-and-threads.html
http://es.slideshare.net/VladimirKulyukin/mobicom-on-android-process-
managementdatasharingssf01
8