Los controladores de Android están desapareciendo. ¿Tienen realmente futuro los controladores?
Todos sabemos que Android es un sistema operativo basado en el kernel de Linux, y hemos tenido diferencias con la Fundación Linux por cuestiones del kernel. Este artículo comenzará con el análisis del kernel de Android, presentando principalmente. Relación entre Android y Linux También hablaremos sobre la extensión del sistema Android sobre el sistema Linux más adelante. Algunas de las funciones y controladores que Android extiende sobre Linux se cubrirán más adelante.
Aunque Android está basado en el kernel de Linux, existen diferencias significativas entre él y Linux. Por ejemplo, Android agrega sus propios controladores únicos basados en el kernel de Linux. Analicemos la relación entre ellos.
¿Se puede llamar a Android un nuevo sistema operativo? Al menos yo no lo creo. En el mejor de los casos, es solo una aplicación nueva.
A.Por qué Android elige Linux
Hay muchos sistemas operativos maduros, pero ¿por qué Android elige utilizar el kernel de Linux? Esto está relacionado con algunas características de Linux, como:
1. Potentes soluciones de gestión de memoria y procesos
2. Modelo de seguridad basado en permisos
3. Soporte para bibliotecas compartidas
4. Modelo de controlador certificado
5. Linux en sí es un proyecto de código abierto
Puede consultar más información sobre las características anteriores. Consulte la documentación oficial del kernel Linux 2.6, que nos ayudará a comprender mejor las características únicas de Android en investigaciones posteriores. La siguiente sección analizará la relación entre Android y Linux.
En segundo lugar, Android no es Linux
Cuando veas este título, es posible que te sientas un poco confundido. ¿No siempre se dice que Android está basado en el kernel de Linux? ¿No es Linux ahora? La confusión es normal. Primero, eche un vistazo a los siguientes puntos y luego los analizaremos punto por punto. Después de leer esto, sentirá que Android no es Linux.
Porque no tiene un sistema de ventanas nativo, no admite glibc y no incluye el conjunto completo de uso estándar de Linux, al tiempo que mejora Linux para admitir sus controladores únicos.
No tiene sistema de ventanas local
¿Qué es un sistema de ventanas local? El sistema de ventanas nativo es el sistema X Window en GNU/Linux, o Quartz en Mac OX X, etc. Diferentes sistemas operativos pueden usar diferentes sistemas de ventanas, pero Android no usa (ni necesita usar) el sistema de ventanas X de Linux. Esta es una de las razones básicas por las que Android no es Linux.
Me sorprende que Xwindow de Linux no sea su programa principal. Puede ver que muchos Linux integrados no utilizan este sistema de interfaz gráfica de usuario en absoluto. ¿No es normal que el sistema Android esté en los teléfonos móviles? ¿No usa Xwindow? Cuando estudiamos, ¿no se llama también al QT sistema Linux?
2. No es compatible con glibc
Dado que Android se usó originalmente en algunos dispositivos móviles portátiles, Android no usa glibc como biblioteca C, pero Google desarrolló un conjunto de Bionic Libc. para reemplazar glibc.
Los archivos de la biblioteca son diferentes, porque el trasplante obviamente requiere modificar los archivos de la biblioteca y los archivos de encabezado, ¿verdad? Por favor, guíe
3. p>
4. No contiene un conjunto completo de archivos GUI
5. No contiene un conjunto completo de archivos GUI
6. conjunto completo de archivos GUI. No contiene un conjunto completo de aplicaciones estándar de Linux.
Android no copia el kernel del sistema Liunx. Además de corregir algunos errores de Liunx, también agrega una gran cantidad de contenido, como: se basa en. la arquitectura ARM Gold: contenido agregado por la plataforma Fish, así como el sistema de archivos FLASH yaffs2, etc.
4. Controlador propietario de Android
Además de las diferencias anteriores, Android también mejora el controlador del dispositivo Linux, principalmente de la siguiente manera.
1) Android Binder es un controlador basado en el marco OpenBinder que proporciona funcionalidad de comunicación entre procesos (IPC) para la plataforma Android. El código fuente se encuentra en: drivers/staging/android/binder.c.
2) Android Power Management (PM) Un controlador liviano de administración de energía de Android basado en el sistema de administración de energía estándar de Linux, dirigido a usuarios integrados. dispositivos Se han realizado muchas optimizaciones. El código fuente se encuentra en:
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
Si agrego un controlador al kernel, ¿puedo llamar a un controlador diferente?
3) Low Memory Killer es más flexible que el mecanismo OOM (memoria insuficiente) estándar de Linux, que finaliza los procesos según sea necesario para liberar la memoria requerida. El código fuente se encuentra en drivers/staging/android/lowmemorykiller.c.
4) La memoria disfrutada anónima (Ashmem) proporciona una gran memoria disfrutada entre procesos y Proporciona un mecanismo para que el kernel recupere y administre esta memoria. El código fuente se encuentra en mm/ashmem.c.
5) PMEM (memoria física) de Android PMEM se utiliza para proporcionar un área de memoria física continua al espacio del usuario y algunos dispositivos solo pueden funcionar de forma continua. Memoria física. El código fuente se encuentra en drivers/misc/pmem.c.
6) Android Logger es un dispositivo de registro liviano que se utiliza para capturar varios registros en el sistema Android. El código fuente se encuentra en drivers/staging/android/logger.c.
7) Android Alarm proporciona un temporizador para despertar el dispositivo desde el modo de suspensión. También proporciona una referencia de reloj incluso si el dispositivo está inactivo. También se puede ejecutar el estado. El código fuente se encuentra en drivers/rtc/alarm.c.
8) Controlador de dispositivo USB Un controlador de dispositivo basado en el marco de controlador de dispositivo USB estándar de Linux. El controlador USB para Android se basa en el marco gaeget. El código fuente se encuentra en drivers/usb/gadget/.
9) Consola Ram de Android Para proporcionar funcionalidad de depuración, Android permite que la información de registro de depuración se escriba en un dispositivo llamado Consola RAM (búfer basado en RAM). El código fuente se encuentra en drivers/staging/android/timed_output.c (timed_gpio.c).
11) Sistema de archivos Yaffs2 Android usa Yaffs2 como sistema de archivos MTD nand flash, y el código fuente se encuentra en el directorio fs/yaffs2/. Yaffs2 es un sistema de archivos de dispositivo integrado multiplataforma rápido y estable para NAND y NOR Flash. En comparación con otros sistemas de archivos flash, Yaffs2 puede usar el mismo sistema de archivos que NAND y NOR Flash. En comparación con otros sistemas de archivos flash, Yaffs2 puede usar menos memoria para guardar su estado de ejecución y, por lo tanto, ocupa menos memoria. La recolección de basura de Yaffs2 es muy simple y rápida, por lo que puede mostrar un mejor rendimiento. El rendimiento de Yaffs2 es particularmente sobresaliente en memoria flash NAND de gran capacidad, lo que lo hace ideal para almacenamiento flash de gran capacidad.