Paginación en teléfonos móviles

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Introducción

La paginación es un esquema de manejo de memoria en el cual el computador puede almacenar y obtener datos desde almacenamiento secundario para su uso en memoria principal, esto lo hace mediante bloques de igual tamaño llamados páginas (pages).

La paginación en sistemas modernos de escritorio y servidores es parte importante en el manejo de memoria, ya que permite usar almacenamiento de disco para los datos que no caben en la RAM, sin embargo es poco común en dispositivos móviles.

A continuación se detalla su implementación en los principales sistemas operativos móviles de la actualidad.

Desventajas

La paginación (entrada y salida) toma tiempo y especialmente la escritura de páginas causa desgaste en la memoria flash, llegando incluso, en casos de paginación excesiva, a inutilizar sectores.

En dispositivos móviles también se puede dar el caso extremo en que simplemente no quede memoria flash libre para efectuar la paginación necesaria.

Windows Phone

Windows Phone es el sistema operativo para smartphones de Microsoft más reciente, a la par con iOS y Android en cuanto al perfil del dispositivo y al uso al que está orientado, diferenciándose de versiones previas como Pocket PC y Windows Mobile.

El kernel de Windows Phone 7 está basado en la versión para arquitectura ARM de Windows CE, siendo una de sus desventajas el estar limitado a procesadores de un único nucleo.

Windows Phone 8 en cambio utiliza el kernel Windows NT para ARM, habiendo sido un gran impulso el desarrollo de este para Windows RT (la versión para tablets de Windows 8). Algunas de las ventajas sobre Windows Phone 7 son el soporte para procesadores multi-nucleo y mayor capacidad multi-tarea.

Vista de alto nivel de la arquitectura de Windows Phone.

Resumen de límites de memoria y uso de paginación

Versión Dispositivo Mínimo garantizado Máximo asignable Paginación
Windows Phone OS 7.1 todos 90 MB variable no
Windows Phone SDK 7.1.1 256 MB 90 MB 110 MB desde 55 MB
Windows Phone SDK 7.1.1 >=512 MB 90MB variable no

WP OS 7.0 y 7.1

En estas versiones de Windows Phone las aplicaciones están limitadas a usar 90 MB de memoria, el mínimo garantizado, sin embargo a veces podrían superar dicho límite, pero en algún punto la asignación de memoria fallará y gatillará un OutOfMemoryException (OOM).

Este límite es variable debido a que los recursos de memoria son administrados para las Aplicaciones pero no para el SO en sí mismo, por esto podrían haber más de 90 MB disponibles para la aplicación.

Cuando una aplicación arroja un OOM por superar el límite de memoria RAM la aplicación es finalizada.

WP OS 7.1.1

En Windows Phone 7.1.1 el límite asegurado de memoria sigue siendo 90 MB, sin embargo en esta versión se introduce la técnica de paginación. A pesar de que el sistema en sus versiones previas sí era capaz de paginar, no se había utilizado debido a que la paginación es un proceso que consume tiempo pudiendo, en el peor de los casos, afectar la fluidez de la interfaz de usuario; además, puede causar la degradación del almacenamiento flash, usado para escribir el archivo de paginación.

Tomando en cuenta las desventajas, la paginación fue introducida en esta versión considerando los dispositivos con poca memoria RAM (256 MB). En estos, la memoria disponible para los programas es menor a 90 MB (el mínimo garantizado), por lo que incluso aplicaciones dentro del rango aceptable de uso de memoría gatillarían un OutOfMemoryException, problema solucionado por la paginación.

Bajo este esquema, se consideran 55 MB disponibles en memoria física y 55 MB de memoria virtual adicional, de esta forma, el máximo asignable a una aplicación queda en 110 MB. Aún así, la mayoría de las aplicaciones no paginan la mayor parte del tiempo.

Android

Android es un sistema operativo para dispositivos móviles basado en una versión disminuida de Linux que implementa las funciones básicas necesarias para su correcto funcionamiento. La arquitectura del SO se divide de la siguiente manera:

Vista de alto nivel de la arquitectura de Android.


Las aplicaciones presentes en el sistema operativo son escritas en lenguaje Java (Android soporta aplicaciones desarrolladas en código C con su NDK o Native Development Kit) y luego son compiladas en código bitcode, a diferencia de otros sistemas operativos cuyo funcionamiento depende de máquinas virtuales Java, Android incorpora su propia máquina virtual, denominada Dalvik VM, la cual convierte código bitcode a archivos .dex (Dalvik Executable Files), los cuales utilizan la mínima cantidad de memoria posible de acorde al hardware donde se ejecutarán.

Proceso de compilación.

Cada aplicación se ejecuta en su propia instancia de la Dalvik VM, para otorgar al programador absoluta independencia del hardware, sin embargo, es el Android Runtime quien posee el control sobre los ciclos de ejecución y el manejo de memoria de alto nivel.

Al ser Android un sistema basado en Linux, toda la gestión de I/O y de memoria de bajo nivel reside en el kernel, el cual utiliza métodos similares a los utilizados en ordenadores de escritorio, en específico, Android posee procesos con alta y baja prioridad, siendo imperiosamente la implementación de memoria virtual (Henceforth Virtual Memory) y paginación por demanda, es decir, Android carga procesos en memoria solo cuando van a ser utilizados.

Debido al espacio reducido de memoria RAM (dispositivos anteriores a 2012), Android intenta mantener en memoria procesos recientemente usados para así eliminar en la mayor medida posible los tiempos asociados a swapping de páginas en memoria, en caso que un proceso no utilizado solicita ser ingresado a memoria a través del Android Runtime, una de las páginas debe ser retirada de la memoria principal.

El algoritmo de reemplazo en Linux 2.6.x y por consiguiente en Android (2.3 o inferior) es denominado “Page Frame Reclaiming Algorithm”, que es básicamente un algoritmo LRU con ciertas modificaciones, como la implementación de listas y prioridad en los procesos activos, he aquí la lógica detrás del algoritmo:

Algoritmo de reemplazo “Page Frame Reclaiming Algorithm”.

iOS

La arquitectura del sistema operativo iOS de los productos Apple está conformada de la siguiente forma:

Arquitectura de iOS

En donde:

Cocoa Touch Framework que se encarga del UI de iOS.

Media Funciones multimedias que se encargan de manejar los gráficos y el audio.

Core Services La API de servicios básicos que pueden ser fácilmente manejados desde el core de la capa de OS

Core El Kernel (Darwin) del OS


El sistema operativo iOS es instalado en el "Flash disk" del dispositivo, ocupando alrededor de 1 GB de espacio de FlashDisk.

El manejo eficiente de memoria es un aspecto muy importante al momento de escribir aplicaciones y código que se ejecuten con un buen rendimiento. iOS incluye un sistema integrado de memoria virtual que no puede ser desactivado por el usuario, siempre está encendido. iOS no permite tener memoria de backup desde el disco duro en caso de contingencia para momentos en que se alcanza el umbral máximo y se empieza a quedar sin memoria, es decir, los datos que pueden ser escritos nunca son removidos de la memoria por el sistema operativo. en las aplicaciones de iOS los datos que son de sólo lectura que están actualmente en el disco duro (como códigos de linea) son removidos de la memoria principal y vuelven a ser solicitados desde el disco duro cuando así se requiera. Cuando el sistema alcanza cierto umbral de memoria disponible y empieza a llegar a un nivel crítico, iOS envía una alerta a todas las aplicaciones para que empiecen a liberar memoria voluntariamente para hacer espacio a nuevos datos. Las aplicaciones que fallan en este requerimiento, simplemente son terminadas por el sistema operativo Por lo tanto, en resumen, iOS permite memoria virtual, pero no permite Paging, en excepción de que el dispositivo esté Jailbreakeado, o de que los datos que son de sólo lectura sí estan con paging. En el manejo de las aplicaciones, cuando se requiere memoria, esta viene desde el heap, y es solicitada y alocada con un "malloc", y el proceso de liberación debe ser realizado por la misma aplicación lo antes posible. Las aplicaciones en iOS usan sólo un sistema de "Reference-Counting". Esto consiste en que cada objeto mantiene un contador de cuántos otros objetos lo están usando. Cuando el "Reference-Counting" de un objeto llega a cero, la memoria usada por éste es "dealoacada" y es devuelta al heap.

Cabe destacar que los dispositivs más recientes de Apple: iPhone 4, 4s, iPod Touch 4 tienen una RAM de 512 mb.

Referencias

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas