Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Qué hace Android exactamente cuando pulsamos el botón de encendido?

¿Qué hace Android exactamente cuando pulsamos el botón de encendido?

I. Encendido e inicio del sistema

El sistema comienza a arrancar desde la ROM, carga el gestor de arranque en la RAM y luego lo ejecuta. II. Cargador de arranque

El cargador de arranque es un pequeño programa antes de que el sistema operativo Android comience a ejecutarse, por lo que debe apuntar a una placa base y un chip específicos, en lugar de ser parte del sistema operativo Android. El gestor de arranque es donde el OEM u operador agrega bloqueos y restricciones. 1. Dos etapas: detectar RAM externa y cargar el programa de la segunda etapa; configurar la red, la memoria, etc., y configurar el entorno del kernel (el cargador de arranque puede configurar el kernel según los parámetros de configuración o los datos de entrada para un propósito específico). ). 2. Cargador de arranque

El cargador de arranque de Android se puede encontrar en \bootable\bootloader\legacy\usbloader. El cargador tradicional contiene dos archivos: init.s inicializa la pila, borra el segmento BSS y llama a main _main. () función en .c (segmento BSS: generalmente un área de memoria utilizada para guardar variables globales no inicializadas en el programa; BSS - Bloque iniciado por símbolo. El segmento BSS es una asignación de memoria estática main.c inicializará el hardware y lo creará); etiquetas de Linux. El tercer paso, inicio del kernel

El inicio del kernel de Android es similar al de Linux de escritorio. Los pasos principales son los siguientes:

1. Configurar el caché 2. Proteger la memoria 3. Lista de planes 4. Cargar controlador

Cuando el kernel completa la configuración del sistema, el siguiente paso es iniciar el primer proceso del sistema. Proceso inicial

El proceso inicial es el primer proceso en el sistema Android, con PID 0. Crea el tiempo de ejecución inicial del sistema analizando el script init.rc. Mostrar logotipo.

Nota: la mayoría de los servicios del sistema se describen en este script y se iniciarán uno tras otro.

init.rc contiene cuatro tipos de declaraciones: operaciones, comandos, servicios , operaciones de opción: procesos que responden a eventos Cuando ocurre el evento desencadenante descrito por "desencadenante", se ejecutarán varios "comandos" en secuencia desde una perspectiva del código fuente, el sistema comparará cada "desencadenante" con un "comando". " en init.rc, y cuando se encuentran, el "comando" en init.rc se compara con un "activador" en init.rc desde la perspectiva del código fuente. Parece que el sistema coincidirá con cada "activador" en init. .rc, y cuando se encuentre una "operación" que cumpla con las condiciones, se agregará al final de la "cola de ejecución de comandos" (a menos que ya haya una "operación" en la cola), y luego el sistema ejecutará estos comandos en secuencia. on lt; triggergt; ## Condición de activación lt; comando1gt; ## Ejecutar comando lt; comando2gt; ## Ejecutar múltiples comandos... Comando: El comando se ejecutará cuando ocurra el evento correspondiente. uno: un programa ejecutable que será ejecutado o reiniciado por el programa init, sujeto a ciertas opciones. NOTA: Los servicios se pueden configurar para especificar si necesitan salir y reiniciarse para tener la oportunidad de recuperarse en caso de un evento inesperado. chocar.

service lt;namegt;lt;pathnamegt; [lt;argumentgt;]* lt;optiongt; lt;optiongt; Opción: Restricciones en los servicios v viii.ServiceManager, Zygote, SystemServer

Kip: Daemon - daemons

El proceso de inicio analiza init.rc para iniciar otros procesos clave de servicio del sistema, los más importantes son ServiceManager y ServiceManager, Zygote, SystemServer y ServiceManager. Los más importantes son ServiceManager, Zygote y SystemServer. Los presentaremos uno por uno: 1. ServiceManager: el soporte del mecanismo de pegamento