Ministerio del Poder Popular para la Educacin Superior
Colegio Universitario Francisco de Miranda Ctedra: Sistemas Operativos II
Sistema Operativo Android
Integrantes:
Freddy Ledezma C.I: 20.289.057 Juan Jose Maita C.I: 16.033.214 Osman Madriz C.I: 13.887.801 German Corredor C.I: 81.538.778 Leomar Arroyo C.I: 16.668.903
Seccin I03-012 Profesor: Luis Acosta
Caracas, Marzo, 2013
Indice Introduccin .................................................................................................................... 3 Etimologa ....................................................................................................................... 4 Historia ............................................................................................................................. 4 Android ............................................................................................................................ 5 Versiones ........................................................................................................................ 6 Caractersticas ............................................................................................................... 7 Las principales caractersticas de Android son: .................................................... 7 Arquitectura ..................................................................................................................... 8 Nucleo de Linux ............................................................................................................. 8 Android Runtime ............................................................................................................ 8 Bibliotecas o librerias .................................................................................................... 9 System C ............................................................................................................. 9 Librera libc ........................................................................................................ 9 Librera Surface Manager ............................................................................... 9 OpenGL/SL y SGL ........................................................................................... 9 Librera Media Libraries .............................................................................. 10 FreeType ......................................................................................................... 10 Librera SSL .................................................................................................... 10 Librera SQLite .............................................................................................. 10 Librera WebKit .............................................................................................. 10 Marco de trabajo de aplicaciones ............................................................................. 10 Aplicaciones .................................................................................................................. 11 Seguridad en la Plataforma de Android .................................................................. 11 Seguridad a nivel de sistema operativo ................................................................... 11 Seguridad de Linux ...................................................................................................... 12 La Sandbox de aplicaciones ...................................................................................... 12 Permisos del sistema de ficheros ............................................................................. 13 Proteccin por contrasea ......................................................................................... 13 Rooteo de dispositivos ................................................................................................ 13 Seguridad a nivel de aplicacin ................................................................................. 13 El modelo de permisos de Android: APIs de Proteccin de acceso ................... 14
Introduccin
Es impresionante como los dispositivos inteligentes han evolucionado para hacer nuestras vidas un poco ms fciles, existen muchos dispositivos inteligentes con caractersticas diferentes y con sistemas operativos distintos segn sea la necesidad. El sistema operativo Android es uno de los sistemas ms nuevos en el mercado, y cuenta con caractersticas muy distintas a los sistemas operativos que estamos acostumbrados a ver, una de sus caractersticas mas importantes es que se encuentra basado en Linux y parte de su cdigo se encuentra abierto y libre. Gracias a que este sistema fue lanzado bajo una licencia libre y de cdigo abierto, se decide crear un conjunto de componentes para el desarrollo de aplicaciones, correcciones y mejoras del sistema llamado SDK (System Development Kit). El sistema operativo Android por sus diversas caractersticas actualmente se encuentra compitiendo con muchos sistemas operativos de gama alta como Apple con (iOS) y Microsoft con (Windonws Phone).
4
Etimologa
El nombre de Android (Androide en espaol) hace referencia a una novela llamada Suean los androides con las ovejas elctricas? del famoso autor Philip K. Dick, la novela que fue muy corta y tuvo su primera publicacin en el ao 1968 y fue adaptada al cine clsico bajo el nombre de "Blade Runner" en 1982. Historia
Android fue unos de los primeros proyecto de la compaa desarrolladora de software Android Inc fundada por el ingeniero en telecomunicaciones Andrew Rubin en el ao 2003, Android sera un sistema operativo basado en Linux y estara orientado netamente a dispositivos mviles como telfonos inteligentes tablets, etc. En el mes de Julio del ao 2005 la compaa Android Inc, fue adsorbida por la multinacional Google quien sera la encargada de seguir desarrollando Android junto con un conglomerado de fabricantes y desarrolladores de hardware, software y operadoras de servicio celular llamado Open Handset Alliance. El primer lanzamiento de Android a la luz pblica se realizo el 05 de Noviembre del 2007 junto con la creacin de la Open Handset Alliance conjunto de compaas dedicadas al desarrollo de estndares abiertos para dispositivos mviles y fue liberado bajo una licencia Apache, Licencia libre y de cdigo abierto. El primer lanzamiento de un dispositivo mvil con sistema operativo Android fue de la compaa HTC, compaa que forma parte de la Open Handset Alliance bajo el nombre de HTC Dream, el dispositivo tenia pantalla tctil, teclado qwerty y funcionaba con la primera version de Android 1.5 Cupcake.
5
Android
Android es un sistema operativo basado en Linux, que se encontraba en un principio basado para telfonos mviles y dispositivos inteligentes. La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el ncleo de las bibliotecas de Java en una mquina virtual Dalvik con compilacin en tiempo de ejecucin. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz grfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una Interfaz de programacin de API grfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor grfico SGL, SSL y una biblioteca estndar de C Bionic. El sistema operativo est compuesto por 12 millones de lneas de cdigo, incluyendo 3 millones de lneas de XML, 2,8 millones de lneas de lenguaje C, 2,1 millones de lneas de Java y 1,75 millones de lneas de C++. Actualmente Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 700.000 aplicaciones (de las cuales, dos tercios son gratuitas) disponibles para la tienda de aplicaciones oficial de Android: Google Play, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android, como pueden ser la App Store de Amazon o la tienda de aplicaciones Samsung Apps de Samsung. Google Play es la tienda de aplicaciones en lnea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas estn escritos en el lenguaje de programacin Java. 22 No obstante, no es un sistema operativo libre de malware, aunque la mayora de ello es descargado de sitios de terceros.
6
Versiones
Android ha visto numerosas actualizaciones desde su liberacin inicial. Estas actualizaciones al sistema operativo base tpicamente arreglan bugs y agregan nuevas funciones. Generalmente cada actualizacin del sistema operativo Android es desarrollada bajo un nombre en cdigo de un elemento relacionado con postres. Las versiones de Android reciben el nombre de postres en ingls. En cada versin el postre elegido empieza por una letra distinta siguiendo un orden alfabtico: A: Apple Pie (v1.0), Tarta de manzana. B: Banana Bread (v1.1), Pan de pltano. C: Cupcake (v1.5), Magdalena glaseada. D: Donut (v1.6), Rosquilla. E: clair (v2.0/v2.1), Pastel francs. F: Froyo (v2.2), (Abreviatura de frozen yogurt) Yogur helado. G: Gingerbread (v2.3), Pan de jengibre. H: Honeycomb (v3.0/v3.1/v3.2), Panal de miel. I: Ice Cream Sandwich (v4.0), Sndwich de helado. J: Jelly Bean (v4.1/v4.2), Juda de gominola. K: Key Lime Pie (v4.3), Tarta de lima.
7
Caractersticas
El Sistema Operativo Android, est compuesto de un ncleo Linux, sobre el cual se han desarrollado unas libreras, y una Maquina Virtual Java llamada Dalvik sobre la cual se cre un Framework de aplicaciones y sobre l se ejecutan las aplicaciones Android.
Las principales caractersticas de Android son:
Maquina virtual Java propietaria desarrollada por Dan Bornstein, la cual est optimizada para requerir poca memoria y est diseada para permitir y ejecutar varias instancias de la mquina virtual simultneamente.
Framework propio para el desarrollo de aplicaciones, lo cual permite la reutilizacin y el reemplazo de componentes.
Browser integrado basado en el motor open source WebKit.
Libreras grficas 2D y 3D basadas en la especificacin OpenGL ES 1.0.
Base de datos relacional SQLite.
Soporte de distintos formatos de audio y video tales como MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF.
Soporte de Telefona GSM.
Soporte de Bluetooth, EDGE, 3G, y WiFi.
Soporte para el manejo de cmara, GPS, y acelermetro.
8
Soporte para el desarrollo de aplicaciones incluyendo un emulador, herramientas para el debugging, herramientas para el profiling de memoria y rendimiento as como de un plugin para el entorno de desarrollo Eclipse. Arquitectura
La arquitectura usada por el Sistema Operativo Android la podemos dividir en capas, cada una con una misin especfica dentro de la plataforma.
Aplicaciones Marco de trabajo de aplicaciones Bibliotecas Runtime de Android Ncleo Linux Nucleo de Linux Android depende de Linux para los servicios base del sistema como seguridad, gestin de memoria, gestin de procesos, pila de red y modelo de controladores. El ncleo tambin acta como una capa de abstraccin entre el hardware y el resto de la pila de software. Android Runtime
Android proporciona un entorno de ejecucin de aplicaciones basado en Java. Se trata de un subconjunto de las libreras del Core de Java, ms una nueva mquina virtual Java desarrollada especficamente para Android, llamada Dalvik, y que permite entre otras cosas que cada aplicacin corra en un proceso y que dicho proceso tenga su propia instancia de la mquina virtual.
En realidad Dalvik no es una mquina virtual puramente Java, ya que los bytecodes que utiliza no son bytecodes Java. La forma en la que trabaja es 9
transformando las clases Java compiladas en un formato especfico (.dex), mediante el uso de una utilidad incluida en el SDK de Android llamada dx. Estas clases en formato dex son las que luego son ejecutadas por Dalvik. Estos ficheros .dex junto con los dems resources son los que se comprimen en formato zip y forman la aplicacin en formato apk (Android package). Bibliotecas o librerias Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del sistema. Estas caractersticas se exponen a los desarrolladores a travs del marco de trabajo de aplicaciones de Android. System C Es una implementacin de C estndar basado en BSD especfica para dispositivos con Linux embebido. Librera libc Incluye todas las cabeceras y funciones segn el estndar del lenguaje C. Todas las dems libreras se definen en este lenguaje. Librera Surface Manager Es la encargada de componer los diferentes elementos de navegacin de pantalla. Gestiona tambin las ventanas pertenecientes a las distintas aplicaciones activas en cada momento. OpenGL/SL y SGL Representan las libreras grficas y, por tanto, sustentan la capacidad grfica de Android. OpenGL/SL maneja grficos en 3D y permite utilizar, en caso de que est disponible en el propio dispositivo mvil, el hardware encargado de proporcionar grficos 3D. Por otro lado, SGL proporciona grficos en 2D, por lo que ser la librera ms habitualmente utilizada por la mayora de las aplicaciones. Una caracterstica importante de la capacidad 10
grfica de Android es que es posible desarrollar aplicaciones que combinen grficos en 3D y 2D. Librera Media Libraries Proporciona todos los cdecs necesarios para el contenido multimedia soportado en Android (vdeo, audio, imgenes estticas y animadas, etc.) FreeType Permite trabajar de forma rpida y sencilla con distintos tipos de fuentes. Librera SSL Posibilita la utilizacin de dicho protocolo para establecer comunicaciones seguras. Librera SQLite Creacin y gestin de bases de datos relacionales. Librera WebKit Proporciona un motor para las aplicaciones de tipo navegador y forma el ncleo del actual navegador incluido por defecto en la plataforma Android. Marco de trabajo de aplicaciones Los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura est diseada para simplificar la reutilizacin de componentes; cualquier aplicacin puede publicar sus capacidades y cualquier otra aplicacin puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados por el usuario. 11
Aplicaciones Las aplicaciones base incluyen un cliente de correo electrnico, programa de SMS, calendario, mapas, navegador, contactos y otros. Todas las aplicaciones estn escritas en lenguaje de programacin Java. Seguridad en la Plataforma de Android
Para el sistema operativo Android, la seguridad es uno de los puntos claves dentro de su desarrollo. El concepto de seguridad lo establece en base a la proteccin de los datos de usuario, proteccin de los recursos del sistema, proteccin respecto a las aplicaciones.
Para lograr estos objetivos, Android proporciona una serie de caractersticas para hacer que sea un sistema robusto. Entre estas caractersticas podemos destacar, la robustez a nivel de sistema operativo que lleva implcito el uso de un kernel Linux, el uso de sandbox obligatorio para todas las aplicaciones, seguridad en la comunicacin entre procesos, firmado de aplicaciones, y el uso de permisos a nivel de usuario.
Adems de esto, a nivel de plataforma, cada uno de los componentes se basa en la seguridad de los componentes del nivel inferior de la plataforma y en que a excepcin de una pequea porcin de cdigo del SO que es ejecutado en modo root, todo el cdigo del kernel de Linux est restringida por la ejecucin dentro de la Sandbox. Seguridad a nivel de sistema operativo
A nivel de Sistema Operativo Android utiliza la seguridad que provee el kernel de Linux, seguridad en la comunicacin inter-procesos, para porporcionar seguridad entre aplicaciones ejecutndose en distintos procesos, y la ejecucin de las aplicaciones dentro de una Sandbox. 12
Seguridad de Linux
Solo por usar Linux como ncleo de la plataforma, se heredan una serie de mecanismos de seguridad ampliamente probados por el gran uso de Linux en entornos especialmente sensibles a los temas de seguridad.
Esto le proporciona a Android los siguientes beneficios:
Un modelo de permisos basados en usuarios.
Aislamiento de procesos.
Mecanismos de securizacin de comunicaciones entre procesos.
La posibilidad de eliminar partes innecesarias y potencialmente inseguras del kernel. Como sistema operativo multiusuario, uno de los objetivos bsicos de seguridad de Linux es proteger los recursos de un usuario frente a otro. La Sandbox de aplicaciones
A diferencia de los sistemas Linux, el sistema Android asigna un nico user ID (UID) a cada una de las aplicaciones y la ejecuta como ese usuario en un proceso separado. Esto hace que cada aplicacin se ejecute en una Sandbox, ya el kernel de Linux facilita la seguridad entre aplicaciones que ejecuta cada usuario, limitando que las aplicaciones puedan interactuar entre ellas y con el sistema operativo.
Como este Sandbox se encuentra a nivel de Kernel, todas las aplicaciones del kernel y de niveles superiores se ejecutaran dentro de este Sandbox por defecto. 13
Permisos del sistema de ficheros
En sistemas Unix los permisos del sistema de ficheros aseguran que un usuario no pueda leer o cambiar los ficheros de otro usuario. La ejecucin de cada aplicacin con un UID distinto hace que los ficheros generados por cada aplicacin no puedan ser utilizados por otra aplicacin a menos que explcitamente el desarrollador permita esto. Proteccin por contrasea
Android se puede configurar para que se verifique una contrasea cada vez que se acceda al dispositivo. Esto permite prevenir el acceso no autorizado tanto al dispositivo como a la clave criptogrfica para sistemas de ficheros encriptados. Rooteo de dispositivos
Por defecto en dispositivos Android solamente el kernel y un subconjunto de aplicaciones se ejecutan en modo root. Android no limita la modificacin del kernel, sistema operativo u otros programas si se accede con usuario root.
Por defecto los usuarios no tienen acceso al dispositivo con un usuario root, lo cual hace de esto un mecanismo de seguridad. Hay ciertos programas que permiten desbloquear esta limitacin haciendo que se use el dispositivo con permisos root, lo cual indirectamente puede hacer que el dispositivo se convierta en un dispositivo no seguro.
Seguridad a nivel de aplicacin
Adems de los mecanismos de seguridad proporcionados a nivel de sistema operativo, Android proporciona unos mecanismos para proveer seguridad a nivel de aplicacin. A continuacin se explican estos mecanismos. 14
El modelo de permisos de Android: APIs de Proteccin de acceso
Una aplicacin Android solamente puede tener acceso a un rango limitado de recursos del sistema. El sistema gestiona el acceso de las aplicaciones a estos recursos, ya que se podran utilizar de forma maliciosa o inapropiada, lo cual podra provocar problemas para el usuario, sus datos, etc.
Estas restricciones se implementan de distintas formas, desde la ausencia de APIs para el manejo de estos recursos (p.e. acceso a la tarjeta SIM), hasta el uso de APIS protegidas mediante Permisos. Estas APIs protegidas incluyen:
Funciones de cmara. Datos de localizacin (GPS). Funciones bluetooth. Funciones de telefona. Funciones SMS/MMS. Conexiones de datos y de red.
Estas recursos son accesibles nicamente desde el Sistema Operativo. Para que una aplicacin pueda usar estos recursos debe declararlo en el manifiest de la aplicacin. Cuando un usuario instala la aplicacin se le mostrar los permisos que requiere esa aplicacin y ser el usuario el que permita la ejecucin de dicha aplicacin que llevar implcito el uso de estas APIs.
El permiso de uso de esta API es solamente a nivel de esa aplicacin, una vez que se desinstalen los permisos de esas aplicacin desaparecen y si el usuario vuelve a instalar la aplicacin se le volver a pedir autorizacin para el acceso a estas APIs.
15
Conclusin
En la actualidad hay un total aproximado de ms de 25.000.000 de usuarios, que se encuentran utilizando el sistema operativo Android en todo el mundo, esto es gracias a todas las caractersticas que los otros sistemas no tienen y la visin de Google junto con otras compaas de desarrollar estndares abiertos para dispositivos mviles.