Introducción al SO de los móviles
El SO de Android
Android se desarrollo en 2003 por Android Inc, el objetivo era desarrollar un sistema operativo para cámaras. La idea inicial no era crear un SO de móviles, sino más bien crear un SO para dispositivos electrónicos de carácter más general. En 2003, Andy Rubin, Rich Miner, Nick Sear y Chris White empezaron a desarrollar un sistema operativo avanzado y escalable para diversos operativos.
Pero a medida que avanzo el proyecto, fueron conscienctes del potencial que tenía su tecnologia y decidieron expandir su enfoque hacia los dispositivos móviles, que por aquel entonces, solo había alguna versión de Windows mobile, o las propias BlackBerrys. Así que en 2004, cambió la dirección del proyecto y se entregaron por completo a los móviles. En 2005, Google adquirió la empresa y basó el núcleo del sistema en Linux.
La migración a Linux fué un paso crucial y estratégico en el desarrollod e Android:
- Código abierto y licencia GPL: Asumiendo Linux como el núcleo de Android, se asumía la política de código fuente accesible y disponible para cualquier persona, ya que Linux es GPL y obliga a todos sus derivados a ser también de código libre.
- Estabilidad y Rendimiento: Android heredó la estabilidad y rendimiento de Linux, era la base sólia sobre la que se construiria todo el sistema operativo.
- Compabilitat de Hardware: Asumiendo el núcleo de Linux, Android mejoraba su compatibilidad con los hardwares del mercado, y eso ayudó a los fabricantes a generar nuevos modelos usando como base a Android.
- Comunidad de desarrolladores: La comunidad de desarrolladores que podía contribuir al proyecto aumento exponencialmente.
- Comandos y aplicacions de Linux: Android ahora podía disponer de un conjunto de scripts, herramientas y utilidades ya existentes en Linux.
Para competir con Apple, en 2007 Google fundó la Open Handset Alliance, una alianza de varios fabricantes de hardware para promover Android como un sistema operativo de código abierto, permitiendo el soporte de aplicaciones de terceros. El primer teléfono móvil lanzado con este sistema fue el T-Mobile G1, que salió al mercado un año después del primer iPhone, en octubre de 2008. No fue hasta 2012 que todos los fabricantes combinados lograron convertir a Android en el sistema operativo móvil con más dispositivos.
Como resultado, la filosofía de Android, aunque comparte ciertas similitudes con iOS, es estructuralmente diferente. Android está concebido como un sistema abierto, brindando gran libertad a los integradores y a las compañías que lo utilizan para ofrecer servicios de manera más flexible a los usuarios.
Este último punto es, al mismo tiempo, una ventaja crucial, ya que existe una amplia diversidad de dispositivos y sistemas que utilizan el sistema operativo. Esto evita el "Vendor Lock-in" presente en Apple. Sin embargo, al mismo tiempo, cada fabricante tiene sus diferencias, lo que hace más difícil uniformizar el sistema de manera general.
Estructura interna y por capas del sistema operativo Android
Android, como sistema operativo, está diseñado con una arquitectura de capas que permite una organización modular y eficiente de sus componentes. La estructura interna de Android se puede entender mediante sus capas, que van desde el hardware hasta las aplicaciones de usuario. A continuación, se describen las capas principales del sistema operativo Android:
- Kernel de Linux: En la capa más baja se encuentra el kernel de Linux. Este proporciona servicios esenciales como gestión de memoria, manejo de procesos, manejo de dispositivos y controladores de hardware. El kernel actúa como interfaz entre el hardware y el resto del sistema operativo.
- Librerías de Android: Sobre el kernel, se encuentran las librerías de Android, que proporcionan funciones esenciales para el desarrollo de aplicaciones. Estas librerías incluyen la implementación de funciones fundamentales como manipulación de datos, gráficos, acceso a la red y gestión de archivos. Están escritas principalmente en C y C++.
- 'Máquina Virtual Dalvik/ART: La Máquina Virtual Dalvik fue la primera utilizada en las versiones iniciales de Android y ejecutaba el código bytecode específico de Android. A partir de Android 5.0, Dalvik fue reemplazado por ART (Android Runtime), que utiliza la compilación Ahead-of-Time (AOT). La VM o ART ejecuta las aplicaciones de Android en un entorno de ejecución controlado y proporciona un nivel de abstracción entre las aplicaciones y el hardware subyacente.
- Android Runtime (ART): ART es responsable de la ejecución de las aplicaciones Android. Con la compilación AOT, las aplicaciones se traducen en código nativo durante la instalación, lo que mejora la eficiencia y el rendimiento en comparación con la ejecución JIT (Just-In-Time) utilizada por Dalvik.
- Framework de Aplicaciones Android: En esta capa se encuentra el framework de aplicaciones, que proporciona las API y los servicios esenciales para el desarrollo de aplicaciones Android. Esto incluye la gestión de la interfaz de usuario, la administración de recursos, la conectividad de red, la gestión de datos y otros servicios esenciales. El framework está compuesto por módulos como Activity Manager, Content Providers, View System, etc.
- Aplicaciones del Sistema: Este nivel incluye aplicaciones esenciales del sistema que proporcionan funcionalidades básicas, como la aplicación de teléfono, contactos, mensajes, entre otras. Estas aplicaciones son parte integral del sistema y, en algunos casos, son específicas del fabricante.
- Aplicaciones de Usuario: En la capa superior se encuentran las aplicaciones de usuario, que son las aplicaciones que los usuarios instalan desde Google Play u otras fuentes. Estas aplicaciones aprovechan las API proporcionadas por el framework para ofrecer una amplia variedad de funciones y servicios.
La estructura por capas de Android permite una clara separación de responsabilidades y facilita la flexibilidad y la escalabilidad del sistema operativo, así como el desarrollo de aplicaciones de terceros.