Upload
jesus-jimenez
View
486
Download
0
Embed Size (px)
Citation preview
Facultad Experimental de Ciencia y Tecnología
Departamento de Computación
Universidad de Carabobo
Sistemas Operativos
Sistemas Operativos Móviles
Android y iOS
Jesús Jiménez
Kristopher Perdomo
Fabiola Díaz
Claudia Forgione
Hernán Hernández
10/11/20141/80
2/80
¿Qué es?
Es un sistema operativo desarrollado por Google para su uso
en dispositivos móviles.
Esto significa que fue diseñado para sistemas con poca
memoria y un procesador que no es tan rápido como los
procesadores de escritorio.
3/80
Origen
4/80
Android Inc. (2003)
Google Inc. (2005)
Open Handset
Alliance (2007)
5/80
Estructura
6/80
7/80
Componentes
Actividades-Activities-
Servicios-Services-
Receptores de Difusiones-Broadcast Recievers-
Proveedores de Contenido-Content Providers-
8/80
Gestión de Procesos
9/80
Android mata procesos en cualquier momento si
queda poca memoria y los recursos que este usa
son requeridos por otros.
Android puede hacer “arreglos” creando
subprocesos para un proceso en caso de que se
quieran ejecutar componentes de una aplicación en
procesos diferentes.
10/80
Jerarquía
Primer
PlanoVisible Servicio
Segundo
PlanoVacío
11/80
Gestión de Memoria
E/S
y
12/80
13/80
Linux Kernel /Servicios Generales
Seguridad
Gestión de memoria y procesos
E/S de archivos y redes
Entre otros
14/80
Linux Kernel /
Servicios Específicos de Android
Administración de energía
Asesino de baja memoria(low memory killer)
Otros
15/80
Para gestionar memoria, Android:
• No ofrece espacio de intercambio (swap space).
• Utiliza paginación y archivos proyectados en memoria (memory-mapped file).
16/80
Archivos proyectados en memoria
• Un bloque de memoria secundaria es
mapeado o proyectado a una (o varias)
páginas del proceso.
• Permite que múltiples procesos proyecten a
un mismo archivo (permite compartición de
datos).
17/80
Compartición de datos con archivos proyectados en memoria
18/80
¿Qué hace Android cuando la memoria RAM
está llena sin contar con el espacio de
intercambio (swap space)?
19/80
Low memory killer
Cuando el espacio de memoria libre en la RAM está
agotándose (o está agotada), el kernel terminará
forzosamente un proceso para liberar sus recursos.
20/80
Android asigna un tamaño límite de memoria heap
para cada aplicación. Este límite depende de cada
dispositivo móvil.
Si el límite es superado, se genera un
OutOfMemoryError y crashea la aplicación, liberando
los recursos utilizados.
21/80
Ejemplos de cantidad límite de memoria
heap:
• HTC Dream (G1) : 16 MB.
• Motorola Droid : 24 MB.
• Nexus One: 32 MB.
• Motorola Xoom Tablet: 48 MB.
22/80
Fuga de memoria
Se produce cuando se mantienen referencias a
objetos en memoria cuando éstos ya no seguirán
utilizándose.
El Colector de Basura por tanto ignorará este
objeto y no liberará sus recursos.
23/80
Colector de Basura o Garbage Collector (GC)
Colecta la memoria ocupada por objetos que ya no
están siendo utilizadas por la aplicación y la libera,
dejándola disponible para futuro uso.
24/80
Garbage Collector
25/80
Gestión de Archivos
26/80
Ficheros de
almacenamiento de información
Ficheros almacenados en la
memoria externa
Ficheros almacenados en
los recursos
27/80
Ficheros almacenados en la
memoria interna
28/80
Ficheros almacenados en la memoria interna
• Crea una carpeta especifica por cada aplicación cuya dirección es
(/data/data/nombre_del_paquete/files).
• La ventaja de la memoria interna es que si se desinstala la aplicación se elimina
la capeta.
• Al crear un fichero se debe tomar en cuenta los permiso, esto se dividen en:
- MODE_PRIVATE: Modo de acceso privado.
- MODE_APPEND: Añade contenido o crea el fichero si no existe.
- MODE_WORLD_READABLE: Permite a otras aplicaciones leer.
- MODE_WORLD_WRITABLE: permite a otras aplicaciones escribir.
• Se puede usar rutinas del paquete java.io para trabajar con ficheros:
- openFileInput() (lectura)
- openFileOutput() (escritura)
- getFilesDir()- getDir()- deleteFile()- fileList()
29/80
30/80
Ficheros almacenados en la memoria externa
• Suele ser una memoria extraíble, como una tarjeta SD.
• Una memoria externa no extraíble.
• Los archivos creados se abren en modo lectura para el usuario y el resto de las aplicaciones.
• Se puede eliminar estos archivos sin desinstalar la aplicación.
• Suele ser de mayor capacidad, ideal para archivos de música o video.
• La memoria externa puede estar protegida contra escrituras o haber sido extraída.
• Se puede usar el método Environment.getExternalStorageState()para verificar el estado de la memoria, esto nos puede retornar los siguiente valores:
- MEDIA_MOUNTED: Podemos leer y escribir.
- MEDIA_MOUNTED_READ_ONLY: Podemos leer.
- MEDIA_SHARED, MEDIA_REMOVED, MEDIA_CHECKING, MEDIA_BAD_REMOVAL,…: No podemos leer ni escribir.
31/80
Ficheros almacenados en los recursos
• Existe la posibilidad de almacenar ficheros en el paquete de aplicaciones,
los cuales son solo lectura (no pueden ser modificados).
• La manera de hacerlo es arrastrar cualquier fichero (nombre_fichero.exe) a
la carpeta res/raw, luego se puede acceder a ella de la siguiente manera:
Resources.openRawResource(R.raw.nombre_fichero)
32/80
iOS
33/80
Es un sistema operativo móvil creado por Apple.inc
inicialmente desarrollado para el iPhone.
El sistema viene con aplicaciones y muchas características
como teléfono, correo y navegador Safari que prestan
servicios estándar del sistema para el usuario.
¿Qué es?
34/80
Historia
35/80
• 9 de enero de 2007
Fue en esta fecha en que Apple reveló la existencia del proyecto de un
sistema operativo orientado a dispositivos móviles.
• 29 de junio de 2007
Se realiza oficialmente el lanzamiento del iPhone OS, unos meses después
debido al crecimiento de la plataforma iPhone y el incremento del iPod Touch.
• 6 de marzo de 2008
Apple presenta su primera versión beta del iPhone SDK, a partir de ese
entonces se le llama iPhone OS o iOS.
36/80
• 27 de enero de 2010
Steve Jobs, anunció el iPad, un dispositivo muy similar al iPod Touch
pero con un enfoque más orientado hacia la industria de contenidos.
• 17 de junio de 2010
Steve Jobs presenta el iPhone y decide llamar a su sistema operativo
oficialmente iOS, porque puede funcionar en tres dispositivos distintos.
37/80
Características
• El iOS se deriva de Mac OS X, que a su vez está basado en Darwin
BSD, y por lo tanto es un sistema Unix.
• Todo en sistema se encuentra en la partición “/root” y ocupa
menos de 500MB.
• La interfaz de usuario de iOS está orientado a:
- Proveer una interfaz amigable.
- El tiempo de respuesta inmediata a las órdenes del usuario.
- Dar soporte de acelerómetros internos.
38/80
Estructura
39/80
Capas
Capa núcleo del SO (capa “Core OS”)
Capa de servicios principales(capa de “Core Services”)
Capa de Medios
Capa de “Cocoa Touch”
40/80
Capas de iOS
41/80
42/80
Capa del núcleo del sistema operativo (capa “Core OS”)
La primera es la capa del núcleo del sistema, la cual contiene las características de
bajo nivel.
Se encarga de tareas básicas de bajo nivel, como:
• Gestión de memoria virtual.
• Gestión procesos, hilos y el manejo de la memoria
• Gestión del sistema de archivos.
• Gestión del acceso a red de bajo nivel.
• Gestión de procesos que interactúan directo con el hardware.
43/80
Capa de servicios principales (capa de “core services”)
Esta capa es la encargada de proveer y contener todos los servicios básicos y
fundamentales del sistema operativo que usan todas las aplicaciones.
• Almacenamiento iCloud
Permite que las aplicaciones escriban documentos y los datos a una
ubicación central en la nube para acceder desde otros dispositivos
del usuario.
• Grand Central Dispatch (GCD)
Se utiliza para administrar la ejecución de tareas en aplicaciones.
• La biblioteca SQLite
Biblioteca que permite incrustar una base de datos ligera de SQL en
aplicaciones sin ejecutar un proceso separado del servidor remoto de
base de datos.
• Soporte XML (lenguaje de marcas extensible)
La fundación framework proporciona la clase NSXMLParser para
recuperación de elementos en documentos XML.
44/80
45/80
Capa de Medios
Conocida también como capa de ‘’medios de comunicaciones”. Es una
interfaz basada en una mescla de lenguaje C y objetive-C que permite la
ejecución de tareas o gestión de ficheros multimedia.
La capa de medios es la encargada de proveer los servicios de los
gráficos y multimedia a la capa Cocoa Touch.
Sus caracteristicas son:
46/80
• Tecnología de gráficos
La alta calidad de los gráficos es una parte importante de las aplicaciones de iOS.
• Tecnología de video
iOS ofrece varias tecnologías para reproducir contenido de video en los
dispositivos con hardware de video, además de tecnologías para capturar video e
incorporarlo a las aplicaciones.
• Tecnología de audio
Las tecnologías de audio disponibles en el IOS están diseñadas para proporcionar
una excelente experiencia de audio para los usuarios.
Capa de "Cocoa Touch"
La capa Cocoa Touch o capa táctil de Cocoa es la interfaz de los dispositivos
para con el usuario.
Esta capa define la infraestructura de la aplicación básica y el soporte para
las tecnologías punta como:
• Impresión
Permite enviar datos de manera inalámbrica a impresoras
cercanas.
47/80
• Multitarea
Todas las aplicaciones que son desarrolladas y ejecutadas en el mismo
sistema no terminan de ejecutarse si se pasa al escritorio o se ejecuta otra
aplicación, estas aplicaciones pasan a un segundo plano.
• Protección de Datos
La protección de datos permite a las aplicaciones trabajar con datos de
usuario sensibles, aprovechado la encriptación implícita.
• Servicio de notificaciones Push de Apple
Permite notificar acerca de alguna nueva información aunque la aplicación
no esté ejecutándose activamente en ese momento.
48/80
49/80
• Notificación local
Estas notificaciones complementan el modo de notificación por push,
permitiendo a la aplicación generar sus propias notificaciones sin
necesidad de tener conexión con ningún servidor externo.
• Reconocimiento de Gestos. Pantalla táctil de iPad
Se trata de objetos que podemos incluir en nuestras vistas y usarlos
para detectar gestos comunes, como deslizamientos o pulsaciones en
la pantalla.
• Archivos compartidos
Se permite tener disponibles ficheros de datos del usuario en iTunes.
Gestión de Procesos
50/80
Gestion a través de colas de prioridades
Prioridades de los procesos:
Crítico
Alto
Medio
Bajo
51/80
Tipos de cola
Cola de espera
Cola de muertos
Cola de listos
52/80
Cuando un proceso que se ejecuta se suspende,
el planificador recupera el control de la CPU y
utiliza un algoritmo para seleccionar el siguiente
proceso desde una de sus cuatro colas de listos.
Los pasos para este algoritmo son las siguientes:
53/80
Algoritmo:
seleccionSiguienteProceso()
{
mientras (hay_procesos_por_ejecutar) hacer comprobarProcesosPrioridadMedia();
si (hay_procesos_de_prioridad_media_listos)
/* Paso 1: verifica cola de prioridad crítica */ eliminarProcesoPrioridadMedia();
comprobarProcesosPrioridadCritica(); ejecutarProcesoPrioridadMedia();
ejecutarProcesosCriticos(); comprobarProcesoPrioridadAlta(); // ir a paso 2
sino
/* Paso 2: verifica la cola de prioridad alta */ /* El planificador se salta la cola de prioridad
comprobarProcesosPrioridadAlta(); baja un máximo de 15 veces antes de proceder al
si (hay_procesos_de_alta_prioridad_listos) paso 4 */
eliminarProcesoPrioridadAlta(); /* Paso 4: verifica cola de prioridad baja */
ejecutarProcesoPrioridadAlta(); eliminarProcesoPrioridadMedia();
comprobarProcesosPrioridadCritica(); // ir a paso 1 ejecutarProcesoPrioridadMedia();
sino comprobarProcesoPrioridadMedia(); // ir a paso 3
/* Paso 3: verifica cola de prioridad media */ fsi
fsi
fmientras
}fin
/* Prioridad CríticaPrioridad AltaPrioridad MediaPrioridad Baja */
54/80
Sincronización
55/80
iOS provee numerosas herramientas de sincronizaciónque puedes utilizar, que van desde herramientas queproveen acceso mutuamente exclusivo, hasta aquellasque secuencian correctamente los eventos en tuaplicación.
56/80
• Operaciones atómicas
- Ventaja:
No bloquean los hilos de la competencia.
• Barreras de memoria
Cuando la memoria se comparte con varios dispositivos usado para asegurar
que las operaciones de memoria se producen en el orden correcto.
La falta de una barrera de memoria podría permitir a otros hilos ver resultados
que parecen imposibles.
Para utilizar una barrera de memoria, sólo tiene que llamar a la función
OSMemoryBarrier() en el punto apropiado en el código.
57/80
• Variables volátiles
- Tiene propiedades especiales relacionadas con la optimización o hilos.
- Su valor puede ser cambiado en cualquier momento por una fuente externa
que el compilador puede no ser capaz de detectar.
- Si la variable es visible desde otro hilo, una optimización de este tipo podría
evitar que el otro hilo note cualquier cambio en la misma.
Las barreras de la memoria y las variables volátiles deben utilizarse con
moderación y sólo cuando sea necesario para garantizar la exactitud.
58/80
• Cerraduras
• Condiciones
• Realizar las rutinas de selección
Permite a sus hilos entregar mensajes de forma asíncrona con la garantía de que
se llevarán a cabo de forma sincronizada por el subproceso de destino.
Cada solicitud se pone en cola en un bucle de ejecución del subproceso
de destino y las solicitudes se procesan secuencialmente en el orden FIFO.
59/80
Gestión de Memoria
60/80
Reglas básicas:
• Usted es dueño de cualquier objeto que cree.
• Usted puede tomar la propiedad de un objeto utilizando cerraduras.
• Cuando ya no lo necesite, debe renunciar a la propiedad de un objeto de su propiedad.
• Usted no debe renunciar a la propiedad de un objeto que no es dueño.
61/80
Posee tres componentes
• Gestor de región (Region Manager)
Define y mantiene las diversas regiones de memoria.
• Gestor de piscina de hilos (Thread Pool Manager)
Gestiona la creación de grupos de memoria y la asignación de bloques
de memoria dentro de las piscinas.
62/80
¿Cómo se asigna memoria cuando unproceso solicita memoria de una piscinade hilos?
63/80
El gestor de piscina trata de controlar la fragmentación porcoalescencia de bloques devueltos que son físicamenteadyacentes entre sí.
64/80
• Gestor de trozos (Chunk Manager)
Administra los bloques de memoria asignados especialmente que
contienen varios sub-bloques de tamaño fijo.
Gestiona un conjunto de bloques de tamaño fijo subdivididos dentro de
un bloque más grande que se ha asignado a una de las piscinas de
memoria estándar.
65/80
¿Cómo se asigna memoria cuando unproceso solicita memoria de una piscinade hilos?
66/80
- Un proceso solicita la asignación de un bloque de memoria de gran
tamaño de un bloque de memoria en particular.
- El proceso llama entonces al gestor de trozo para subdividir el bloque en
una serie de trozos de tamaño fijo más pequeños y
- Utiliza el gestor de trozo para asignar y liberar los trozos según sea
necesario.
67/80
Entrada/Salida
68/80
IOKit (Marco Kit de E/S)
Es un marco de código abierto en el XNU núcleo que ayuda a los
controladores de dispositivo de código para desarrolladores de Apple 's
Mac OS X y iOS sistemas operativos. El marco Kit de E/S fue desarrollado
por NeXT Computer.
Hay tres principales elementos conceptuales de la arquitectura Kit de E/S:
• Familias
• Controlador
• Nubs
69/80
Core Bluetooth Framework
El marco Core Bluetooth proporciona las
clases necesarias para sus aplicaciones iOS
para comunicarse con los dispositivos que
están equipados con la tecnología
inalámbrica Bluetooth de bajo consumo.
70/80
External Accessory Framework
El marco de accesorio externos proporciona un puente para la comunicación con
los accesorios conectados a cualquier dispositivo basado en iOS. Los
desarrolladores de aplicaciones pueden utilizar este conducto para integrar
características de nivel de accesorios en sus aplicaciones.
71/80
Almacenamiento en iCloud
Hay tres maneras en que las aplicaciones toman ventaja de este
servicio:
• Almacenamiento de documentos
• Almacenamiento de clave-valor
• Almacenamiento CloudKit
72/80
Gestión de Archivos
73/80
MacOs Plus (HFS+)
Este formato es compatible con todas las características avanzadas
que necesita el iOS como son los nombres de archivo Unicode, los
permisos POSIX, los metadatos enriquecidos, etc.
74/80
Android IOS
Kernel Linux Darwin
Gestión de Procesos Árbol Rojo Negro Cola de Prioridades
Gestión Memoria Paginación Paginación
Sistemas de Archivo YAFF52/ EXT4 HFS+, UFS,ISO,NFS,UDF
Multitasking Si Si
Desarrollo Cualquier desarrollador puede
crear sus propias app.
Los desarrolladores deben
pagar
Vulnerabilidad Malware Si No
Hardware Puede Instalarse en cualquier
Hardware
No permite instalarse en
hardware de terceros75/80
Más información
http://www.androidsis.com/la-verdadera-historia-de-android-nacimiento-del-sistema-operativo-2003/
http://es.wikipedia.org/wiki/Android#Adquisici.C3.B3n_por_parte_de_Google
http://es.wikipedia.org/wiki/Android#Open_Handset_Alliance
http://www.androidcurso.com/index.php/tutoriales-android/31-unidad-1-vision-general-y-entorno-de-
desarrollo/99-arquitectura-de-android
http://developer.android.com/guide/components/processes-and-threads.html
http://developer.android.com/guide/components/fundamentals.html#proclife
http://www.tutorialspoint.com/android/android_application_components.htm
https://prezi.com/bxdp5ygrfuo6/android/
76/80
Más información
http://books.google.co.ve/books?id=K9hnCJ_NGq4C&pg=PT424&lpg=PT424&dq=android+hereda+de+linux&s
ource=bl&ots=KGylUHo6hJ&sig=h57ZJ5ZXHyV6uEer2qLHITH1Ovk&hl=es-
419&sa=X&ei=p8BdVMSrNYTksATZu4DgDQ&ved=0CC8Q6AEwAw#v=onepage&q=android%20hereda%20de
%20linux&f=false
http://lavaradelroboto.wordpress.com/2012/10/22/ficheros-androidlectura-y-escritura-en-memoria-interna/
http://www.anexom.es/tecnologia/los-6-mejores-administradores-de-archivos-para-android/
http://www.androidcurso.com/index.php/tutoriales-android-fundamentos/42-unidad-9-almacenamiento-de-
datos
http://culturacion.com/ios-el-sistema-operativo-movil-de-apple/
http://eve-ingsistemas-u.blogspot.com/2012/04/sistemas-operativos-moviles-ios.html
http://es.slideshare.net/TenshiDam/sistema-operativo-ios
http://es.slideshare.net/Zazu2795/sistemas-operativos-iphone-os-5483645
77/80
Más información
Managing Your App's Memory
http://developer.android.com/training/articles/memory.html#Android
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne (2008) Operating System Concepts (9th ed.), United States
of America, capítulo 9.7: Memory-Mapped Files
Google I/O 2011: Memory management for Android Apps
https://www.youtube.com/watch?v=_CruQY55HOk
Memory Management in Android
http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/
Wrangling Dalvik: Memory Management in Android
http://www.raizlabs.com/dev/2014/03/wrangling-dalvik-memory-management-in-android-part-1-of-2/
78/80
Más información
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/Cre
atingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW2
http://cdn.ttgtmedia.com/searchNetworking/downloads/InsideIOS.pdf
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/Thread
Safety.html#//apple_ref/doc/uid/10000057i-CH8-SW1
http://en.wikipedia.org/wiki/Volatile_variable
http://en.wikipedia.org/wiki/Memory_barrier
79/80
Más información
https://developer.apple.com/library/mac/documentation/General/Conceptual/iCloudDesignGuide/Chapters/iClo
udFundametals.html
https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/KernelProgra
mming.pdf
https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/build/build.ht
ml
https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Core
OSLayer/CoreOSLayer.html
https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/IOKit/IOKit.ht
ml
http://en.wikipedia.org/wiki/I/O_Kit
80/80