Proceso de arranque
En informática, arrancar es poner en marcha una computadora o dispositivo informático hasta que se pueda utilizar. Puede iniciarse mediante hardware, como presionar un botón, o mediante un comando de software. Después de encender la computadora, la computadora es relativamente tonta y solo puede leer una parte de su almacenamiento, llamada memoria de solo lectura. Allí se almacena un pequeño programa llamado firmware. Realiza autocomprobaciones de encendido y, lo que es más importante, permite acceder a otros tipos de memoria, como el disco duro y la memoria principal. El firmware carga programas más grandes en la memoria principal de la computadora y los ejecuta. En computadoras de uso general, pero también en teléfonos inteligentes, tabletas, se ejecuta opcionalmente un administrador de arranque.
Proceso de arranque de Android
El proceso de arranque de Android incluye los siguientes seis pasos:
- ROM de arranque: este paso se conoce como encendido y arranque del sistema. Esto significa que cada vez que presionamos el botón de encendido, el código de la ROM de arranque comienza a ejecutarse desde una ubicación predefinida que está cableada en la ROM. Boot ROM carga el BootLoader en la RAM y comienza a ejecutarse.
- BootLoader: Bootloaders es un código de bajo nivel que contiene las instrucciones que le indican a un dispositivo cómo iniciarse y encontrar el kernel del sistema. Un Bootloader es un lugar donde los fabricantes ponen sus bloqueos y restricciones.
El cargador de arranque es un código que se ejecuta antes de que cualquier sistema operativo comience a ejecutarse. El BootLoader se ejecuta en 2 etapas:
a) En la primera etapa, detecta RAM externa y carga un programa que ayuda en la segunda etapa.
b) En la segunda etapa, el gestor de arranque configura la red, la memoria, etc., que requiere ejecutar Kernel. - Kernel: una vez que el kernel arranca, inicia la caché de configuración, la memoria protegida, la programación, carga los controladores, inicia los demonios del kernel, monta el sistema de archivos raíz, inicializa la entrada/salida, inicia las interrupciones, inicializa la tabla de procesos. Un kernel es el nivel más bajo de software fácilmente reemplazable que interactúa con el hardware de nuestro dispositivo. Cuando el kernel finaliza la configuración del sistema, lo primero que busca es «init» en los archivos del sistema e inicia el proceso raíz o el primer proceso de un sistema.
- Init: Init es el primer proceso o podemos decir que es el abuelo de todos los procesos.
El proceso Init tiene 2 responsabilidades:
- Monta directorios como /sys, /dev o/proc
- Ejecuta el script /init.rc. El init.rc es responsable de la configuración inicial del sistema.
El proceso de inicio es lo que configurará todos los servicios nativos y es similar a un arranque normal del sistema Linux.
- Zygote y Dalvik VM: Zygote es un proceso de VM que se inicia cuando se inicia el sistema. Cuando app_process lanza Zygote, primero crea la máquina virtual Dalvik y luego llama al método main() de Zygote. Zygote recibe una solicitud para iniciar una aplicación a través de/dev/socket/zygote. Una vez que sucede, activa una llamada fork().
Cuando un proceso es una bifurcación, crea un clon de sí mismo. Se replica a sí mismo en otro espacio de memoria. Esto se hace de manera bastante eficiente. Cuando esto le sucede a Zygote, crea una nueva máquina virtual Dalvik exacta y limpia como un hilo, precargado con todas las clases y recursos necesarios que necesitará cualquier aplicación. Esto hace que el proceso de creación de una VM y carga de recursos sea bastante eficiente.
Permite compartir código en la máquina virtual Dalvik, lo que ayuda a lograr un tiempo de inicio mínimo.
- Servidores del sistema: después de que zygote carga previamente todas las clases y recursos de Java necesarios, inicia el servidor del sistema. El servidor del sistema es el núcleo del sistema Android. Lo primero que sucede es que el servidor cargará una biblioteca nativa llamada android_servers que proporciona interfaces para funcionalidades nativas.
Luego, se llama al método de inicio nativo que configurará los servicios nativos. Después de configurar los servicios nativos, crea el hilo del servidor. Este subproceso iniciará los servicios restantes en el sistema de acuerdo con el orden de inicio necesario.
Cada servicio se ejecuta en un subproceso Dalvik separado en SystemServer.
Una vez que los servicios del sistema estén funcionando en la memoria, Android ha completado el proceso de arranque. En este momento, se activará la acción de transmisión estándar «ACTION_BOOT_COMPLETED».
Publicación traducida automáticamente
Artículo escrito por shobha1617 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA