Qual é a diferença entre o Linux Kernel e o Android Kernel?


Respostas:


7

As diferenças mudam de versão para versão (do Linux e do Android), e o kernel exato é diferente para cada dispositivo. Um kernel para Android é um kernel Linux convencional, com drivers adicionais para o dispositivo específico e outras funcionalidades adicionais, como gerenciamento aprimorado de energia ou suporte gráfico mais rápido.

Muitos recursos do kernel do Android são adicionados posteriormente ao upstream do Linux depois que a comunidade de código-fonte aberto os aceita (e talvez modifique), mas outros nunca são atualizados, porque não são aceitáveis ​​pelos desenvolvedores do kernel do Linux ou porque ' são aplicáveis ​​apenas ao Android ou a hardware específico.


3
A maioria dos drivers para hardware específico do Android foi aceita no kernel da linha principal; mas alguns recursos, como o bloqueio de ativação que causou uma enorme controvérsia há algum tempo, permanecem problemáticos porque o desenvolvedor do kernel da linha principal e do Android discorda se é uma boa ideia.
Lie Ryan

"Um núcleo para Android é um núcleo principal do Linux, com drivers adicionais para o dispositivo específico e outras funcionalidades adicionais, como gerenciamento aprimorado de energia ou suporte gráfico mais rápido", então são principalmente drivers? Nenhum código fonte foi alterado?
Guerlando OCs 04/08/19

@GuerlandoOCs Não tenho certeza do que você acha que os drivers são senão uma alteração no código-fonte, mas, independentemente disso, a "outra funcionalidade adicional" que mencionei é bastante grande nos dias de hoje. Há muitas alterações no código fonte.
Dan Hulme

@ DanHulme: a fonte muda os patches ou apenas o código é alterado manualmente? Como posso ver as coisas que mudaram? Eu li que você pode corrigir seu kernel do Linux para ser compatível com o Android, mas onde estão esses patches para que eu possa lê-los?
Guerlando OCs 08/08/19

5

Além das diferenças específicas do dispositivo e do bloqueio de ativação mencionados por Dan Hulme e Lie Ryan, o Android removeu os recursos do IPC do System V (filas de mensagens, segmentos de memória compartilhada, semáforos) que poderiam levar a vazamentos de recursos ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Provavelmente, isso é apenas uma questão de configurar a compilação do kernel. Além disso, o IPC de escolha do Android, chamado Binder, tem algum suporte no kernel que, pelo que sei, não está incluído nos kernels Linux padrão.


4

Eu acho que essa fonte do Android é uma ótima documentação para entendê-la.

E aqui está uma lista de alterações feitas no kernel da linha principal para o kernel do Android 4.14.

Os maiores recursos incluem:

  • 19,8% de agendamento de uso de energia (kernel / sched)
  • 13,8% Rede (net / netfilter)
  • 13,5% Sdcardfs (fs / sdcardfs)
  • 9,4% USB (drivers / usb)
  • 7,2% de SoC (arco / braço64, arco / x86)
  • 6,2% f2fs (fs / f2fs - backports do upstream)
  • 6,1% de entrada (drivers / entrada / misc)
  • 5.4% FIQ Debugger (drivers / estadiamento / android / fiq_debugger)
  • 3,6% Goldfish Emulator (drivers / plataforma / goldfish)
  • 3,4% de verdade (drivers / md)
  • 11,6% Outros

Diferenças do LTS

Quando comparado ao LTS (4.14.0), o kernel comum do Android tem 355 alterações, 32266 inserções e 1546 exclusões (a partir de fevereiro de 2018).

insira a descrição da imagem aqui


Eu não entendo por que as pessoas votaram negativamente ??? Eu escrevi a resposta, em 5 segundos recebi voto negativo !! Agradável
chankruze

+1 para sua resposta. Downvoters drive-by são uma merda.
iBug 21/10/19

+1. O seu é o melhor, entre outros.
Irfan Latif
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.