¿Cuál es la diferencia entre el kernel de Linux y el kernel de Android?

Respuestas:

7

Las diferencias cambian de una versión a otra (tanto de Linux como de Android), y el núcleo exacto es diferente para cada dispositivo. Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funcionalidades adicionales, como administración de energía mejorada o soporte gráfico más rápido.

Muchas características en el kernel de Android se agregan más tarde a Linux ascendente después de que la comunidad de código abierto las haya aceptado (y tal vez modificado), pero otras nunca se han actualizado, ya sea porque no son aceptables para los desarrolladores del kernel de Linux o porque ' solo se aplica a Android o hardware específico.

Dan Hulme
fuente
3
La mayoría de los controladores para hardware específico de Android se aceptaron en el núcleo de la línea principal; pero algunas características, como el bloqueo de activación que causó una gran controversia hace algún tiempo, sigue siendo problemático porque la línea principal y el desarrollador del kernel de Android no están de acuerdo si es una buena idea.
Lie Ryan
"Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funcionalidades adicionales, como administración de energía mejorada o soporte gráfico más rápido", ¿entonces son principalmente controladores? ¿No ha cambiado el código fuente?
Guerlando OCs
@GuerlandoOCs No estoy seguro de qué crees que son los controladores si no es un cambio en el código fuente, pero independientemente de eso, la "otra funcionalidad adicional" que mencioné es bastante grande en estos días. Hay muchos cambios en el código fuente.
Dan Hulme
@DanHulme, ¿son los parches de los cambios de origen o simplemente el código cambiado a mano? ¿Cómo puedo ver las cosas que cambiaron? He leído que puedes parchear tu kernel de Linux para que sea compatible con Android, pero ¿dónde están esos parches para que pueda leerlos?
Guerlando OCs
5

Además de las diferencias específicas del dispositivo y el bloqueo de activación que Dan Hulme y Lie Ryan mencionan, Android eliminó las características de System V IPC (colas de mensajes, segmentos de memoria compartida, semáforos) que podrían provocar pérdidas de recursos ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Esto probablemente es solo una cuestión de configurar la construcción del núcleo. Además, el IPC de Android elegido, llamado Binder, tiene cierto soporte en el núcleo que, que yo sepa, no está incluido en los núcleos estándar de Linux.

FooF
fuente
4

Creo que esta fuente de Android es una excelente documentación para entenderlo.

Y aquí hay una lista de cambios realizados desde el núcleo de la línea principal para el núcleo de Android 4.14.

Las características más importantes incluyen:

  • 19.8% Programación consciente de la energía (kernel / sched)
  • 13.8% Redes (net / netfilter)
  • 13.5% Sdcardfs (fs / sdcardfs)
  • 9.4% USB (controladores / usb)
  • 7.2% SoC (arch / arm64, arch / x86)
  • 6.2% f2fs (fs / f2fs - backports de upstream)
  • 6.1% de entrada (drivers / input / misc)
  • 5.4% FIQ Debugger (drivers / staging / android / fiq_debugger)
  • 3.6% Goldfish Emulator (drivers / plataforma / goldfish)
  • 3.4% Verity (controladores / md)
  • 11,6% Otros

Diferencias de LTS

En comparación con LTS (4.14.0), el núcleo común de Android tiene 355 cambios, 32266 inserciones y 1546 eliminaciones (a partir de febrero de 2018).

ingrese la descripción de la imagen aquí

chankruze
fuente
No entiendo por qué las personas votan negativamente? Escribí la respuesta, ¡en 5 segundos recibí un voto negativo! Niza
chankruze
+1 por tu respuesta. Los downvoters en auto apestan.
iBug
+1. El tuyo es el mejor entre otros.
Irfan Latif