El sistema operativo Android. Una breve mirada al interior de los más populares… | de Atif Khurshid | Noviembre de 2020

UNAndroid es un sistema operativo móvil de código abierto construido sobre una versión modificada del kernel de Linux. Fue desarrollado por Open Handset Alliance, un consorcio de gigantes tecnológicos liderado por Google. Tiene licencia de Apache y su código fuente se publica como parte del Proyecto de código abierto de Android (AOSP). Lanzado en 2007, Android se convirtió rápidamente en el sistema operativo más vendido de la historia gracias a su modelo de desarrollo abierto y su interfaz fácil de usar. Su última versión, Android 11, se lanzó en 2020.

El Android project se fundó en 2003 con el objetivo de desarrollar dispositivos móviles inteligentes. Comenzó con el desarrollo de un sistema operativo para cámaras digitales, pero pronto el enfoque cambió a los teléfonos celulares debido a su mayor tamaño de mercado. El proyecto fue adquirido por Google en 2005, donde se eligió el kernel de Linux como base para este sistema operativo por su flexibilidad y capacidad de actualización.

En 2007, Google se asoció con varios fabricantes y operadores de hardware inalámbrico para formar la Open Handset Alliance con el objetivo de desarrollar una plataforma de código abierto para dispositivos móviles. En ese momento, todos los teléfonos celulares estaban limitados a los ecosistemas de los fabricantes con poco espacio para aplicaciones de terceros. La alianza dijo que una plataforma abierta permitiría la colaboración entre fabricantes y desarrolladores para facilitar la producción rápida y rentable de productos y aplicaciones innovadores.

La plataforma Android se reveló en 2007 y se puso a disposición comercial el año siguiente. Al principio, la plataforma se vio obstaculizada por su conjunto limitado de funciones y su pequeña base de usuarios en comparación con sus rivales Symbian y Windows. Sin embargo, su capacidad de actualización se ha convertido en su mayor activo, ya que cada nueva actualización ha traído nuevas funciones junto con mejoras de rendimiento. Las primeras versiones fueron nombradas alfabéticamente postres como Cupcake, Jellybean y KitKat debido a la “dulzura que aportan a nuestras vidas”. Sin embargo, Google pronto se quedó sin postres y eligió nuevas versiones con números a partir de Android 10 en 2019. Su licencia de código abierto también ayudó a aumentar su popularidad entre los fabricantes de dispositivos, ya que podían modificar la sistema operativo de acuerdo a sus necesidades sin afectar el desarrollo de la aplicación.

Sin embargo, lo que es más importante, Android era más que un sistema operativo. Era una plataforma que ponía los dispositivos móviles a la par con las computadoras personales al permitir a los desarrolladores escribir aplicaciones independientemente del hardware del dispositivo. Esto ha llevado a la creación de un ecosistema de aplicaciones global y ha cimentado la posición de Android como la plataforma móvil líder. Se convirtió en el sistema operativo más vendido para teléfonos inteligentes en 2011 y tabletas en 2013. Hoy en día, Android se puede encontrar en una amplia variedad de dispositivos electrónicos, como cámaras inteligentes, relojes, reproductores multimedia y muchos más.

Android se desarrolló originalmente para la arquitectura ARM y luego se expandió para admitir las arquitecturas x86 y x86–64. En general, sin embargo, Android no se preocupa por el hardware del dispositivo debido a la variabilidad en la cantidad y los tipos de componentes en los dispositivos móviles.

Fuente: https://developer.android.com/guide/platform

En el corazón del sistema operativo Android hay una versión modificada de un kernel Linux LTS que interactúa directamente con el hardware. Los fabricantes de hardware implementan los controladores esenciales para el funcionamiento del dispositivo y los agregan al kernel. Esto permite que los fabricantes de hardware desarrollen controladores para un núcleo conocido y que los desarrolladores de sistemas operativos ignoren la variabilidad del hardware. Android 11 es compatible con las versiones del kernel 4.14, 4.19 y 5.4.

Las complejidades del hardware se ocultan aún más mediante capas de abstracción de hardware, también implementadas por los fabricantes, que proporcionan interfaces estándar para que los marcos de trabajo de nivel superior accedan al hardware del dispositivo sin preocuparse por las implementaciones de controladores.

Android Runtime es la máquina virtual que ejecuta el código de la aplicación contenido en los archivos Dalvik Executable (DEX). Maneja la compilación, depuración y recolección de basura de código. Cada aplicación se ejecuta con su propia instancia de ART, es decir, en su propia máquina virtual, para garantizar el aislamiento del código. ART reemplazó a Dalvik como la máquina virtual Java de Android en 2013, ya que su compilación Ahead-of-Time funcionó mejor que la compilación Just-in-Time de esta última.

Las bibliotecas nativas de C / C ++ son una parte esencial del sistema operativo, ya que la mayoría de los componentes centrales de Android están escritos en código nativo. El marco de la API de Java es la puerta de entrada al sistema operativo para todas las aplicaciones de usuario. Proporciona muchos servicios a las aplicaciones en forma de llamadas a la API de Java, incluidos administradores de tareas, recursos y notificaciones, proveedores de contenido y el sistema de visualización. Esta es la razón por la que las aplicaciones de Android se desarrollan principalmente en Java, aunque las bibliotecas nativas brindan cierto soporte para C / C ++. Más recientemente, Kotlin también ha sido compatible, e incluso preferido por Google, para el desarrollo de aplicaciones de Android. El código se compila a partir del kit de desarrollo de software (SDK) de Android y se almacena como un paquete de Android (APK).

Aunque algunos consideran que Android es una distribución de Linux, tiene poco en común con un sistema operativo convencional de Linux.

Fuente: https://cumulusnetworks.com/blog/linux-architecture/

En una pila Linux tradicional, el kernel realiza la mayoría de las funciones del sistema, como la gestión de archivos y memoria, la interacción del hardware y la programación de trabajos. La funcionalidad del sistema se proporciona a las aplicaciones a través de bibliotecas y llamadas a API en el lenguaje C. Es por eso que GNU C es la biblioteca más importante en Linux. Los usuarios interactúan con el sistema a través de shells que traducen los comandos del usuario en llamadas al sistema.

Android, por otro lado, se puede considerar como una aplicación de usuario que se ejecuta en Linux. Utiliza el kernel para las interacciones de hardware y la gestión del sistema, luego ofrece su funcionalidad a otras aplicaciones a través de una interfaz API. Esta interfaz está completamente en Java y la funcionalidad de las bibliotecas C / C ++ también se ofrece en contenedores de Java. Android no incluye un shell, aunque algunas utilidades de línea de comandos son compatibles con la aplicación Toybox.

Android también se ha optimizado para dispositivos móviles que normalmente tienen poca potencia de procesamiento, poca memoria y funcionan con batería. Utiliza Bionic en lugar de GNU como la biblioteca C predeterminada debido a los requisitos de memoria y procesador más pequeños. Puede terminar procesos usados ​​menos recientemente y descartar unidades de memoria compartida en condiciones de poca memoria. También implementa un sistema de administración de energía único en el que el dispositivo permanece inactivo, absorbiendo un mínimo de energía, a menos que un proceso requiera un recurso.

Fuente: https://source.android.com/devices/architecture/kernel/generic-kernel-image

El núcleo de Linux en sí se modifica en varios lugares antes de instalarse en un dispositivo. Primero, los desarrolladores de Android optimizan el kernel LTS para dispositivos móviles, parchean las funciones de Android y lanzan el código como un kernel AOSP común. Los desarrolladores de AOSP implementan la mayoría de los cambios como controladores de dispositivos para garantizar que se realicen cambios mínimos en el código del núcleo del núcleo. Esto le permite fusionar las actualizaciones del kernel base con ACK con cambios mínimos. Los proveedores de hardware agregan controladores y capas de abstracción para generar un núcleo de proveedor. Por lo tanto, los fabricantes de dispositivos actualizan el kernel de acuerdo con sus requisitos mediante la implementación de nuevos controladores o incluso mejoras del sistema. Este kernel finalmente se instala en los dispositivos de los fabricantes.

La filosofía de diseño de Android es abstraer la variabilidad del hardware y proporcionar una interfaz uniforme para las aplicaciones. Esto se logra ejecutando todas las aplicaciones en máquinas virtuales Java como Dalvik o ART. El kit de desarrollo de aplicaciones, que consta de marcos de API de Java y SDK de Android, promueve aún más esta abstracción al simplificar el desarrollo de aplicaciones. La interfaz API hace todo el trabajo pesado para permitir que las aplicaciones accedan a los recursos del sistema con una simple llamada de función, mientras que el SDK proporciona herramientas visuales para crear diseños de aplicaciones y administrar las entradas de los usuarios.

Android proporciona la mayor parte de su funcionalidad a las aplicaciones a través de servicios. Un servicio es una aplicación que realiza operaciones de larga duración en segundo plano. No proporciona una interfaz de usuario y solo se puede acceder a ella a través del marco de la API. Los servicios también pueden realizar operaciones en primer plano y notificar al usuario mediante notificaciones. Un servicio también se puede asociar con una aplicación y proporcionar una interfaz cliente-servidor.

La pila de Android también incluye un segundo sistema operativo. El sistema operativo confiable se ejecuta en paralelo con el sistema operativo principal y proporciona un entorno de ejecución confiable para una ejecución aislada. Se utiliza principalmente para pagos móviles, banca segura, procesamiento de contraseñas y otros procesos que requieren seguridad y confidencialidad.

Cuando se anunció por primera vez la Open Handset Alliance, sus planes para un esfuerzo colaborativo para desarrollar una plataforma abierta y completa sonaron poco más que una declaración bulliciosa. Sin embargo, una década después, el marco de Android logró revolucionar mucho más que la industria móvil. De hecho, ha dado lugar a industrias completamente nuevas y ha cambiado radicalmente la forma en que nos comunicamos, trabajamos y vivimos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *