Jaka jest różnica między jądrem systemu Linux a jądrem systemu Android?

Odpowiedzi:

7

Różnice zmieniają się w zależności od wersji (zarówno Linux, jak i Android), a dokładne jądro jest różne dla każdego urządzenia. Jądro dla Androida jest głównym jądrem Linuksa, z dodatkowymi sterownikami dla określonego urządzenia i innymi dodatkowymi funkcjami, takimi jak ulepszone zarządzanie energią lub szybsza obsługa grafiki.

Wiele funkcji jądra Androida jest później dodawanych do starszego systemu Linux po zaakceptowaniu (i być może zmodyfikowaniu) przez społeczność Open Source, ale inne nigdy nie są upstreamowane, albo dlatego, że nie są akceptowane przez programistów jądra Linuksa, lub dlatego, że „ dotyczy tylko Androida lub określonego sprzętu.

Dan Hulme
źródło
3
Większość sterowników dla specyficznego dla Androida sprzętu została zaakceptowana w jądrze głównym; ale niektóre funkcje, takie jak blokada wake, która wywołała kiedyś ogromne kontrowersje, pozostają problematyczne, ponieważ deweloper linii głównej i jądra Androida nie zgadzają się, czy to dobry pomysł.
Lie Ryan
„Jądro dla Androida jest głównym jądrem Linuksa z dodatkowymi sterownikami dla konkretnego urządzenia i innymi dodatkowymi funkcjami, takimi jak ulepszone zarządzanie energią lub szybsza obsługa grafiki”, więc są to głównie sterowniki? Nie zmieniono kodu źródłowego?
Guerlando OC
@GuerlandoOCs Nie jestem pewien, co myślisz, że sterowniki są zmianą kodu źródłowego, ale niezależnie od tego, „wspomniana przeze mnie dodatkowa funkcjonalność” jest obecnie dość duża. Istnieje wiele zmian w kodzie źródłowym.
Dan Hulme,
@ DanHulme czy łatki do zmian w kodzie źródłowym czy tylko kod został zmieniony ręcznie? Jak mogę zobaczyć rzeczy, które się zmieniły? Czytałem, że możesz załatać jądro Linuksa, aby było kompatybilne z Androidem, ale gdzie są te łatki, żeby je odczytać?
Guerlando OC
5

Oprócz różnic specyficznych dla urządzenia i blokady obudzenia, o których wspominają Dan Hulme i Lie Ryan, Android usunął funkcje IPC systemu V (kolejki wiadomości, segmenty pamięci wspólnej, semafory), które mogą prowadzić do wycieków zasobów ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Prawdopodobnie jest to tylko kwestia konfiguracji kompilacji jądra. Również wybrane IPC dla Androida, zwane Binder, ma pewne wsparcie w jądrze, które według mojej wiedzy nie jest zawarte w standardowych jądrach Linuksa.

FooF
źródło
4

Myślę, że to źródło Androida jest świetną dokumentacją do zrozumienia.

A oto lista zmian dokonanych z jądra głównego dla jądra Androida 4.14.

Największe funkcje obejmują:

  • 19,8% Planowanie ze świadomością zużycia energii (jądro / harmonogram)
  • 13,8% Networking (net / netfilter)
  • 13,5% Sdcardfs (fs / sdcardfs)
  • 9,4% USB (sterowniki / USB)
  • 7,2% SoC (arch / arm64, arch / x86)
  • 6,2% f2fs (fs / f2fs - backports from upstream)
  • 6,1% Dane wejściowe (sterowniki / dane wejściowe / różne)
  • 5,4% Debugger FIQ (sterowniki / przemieszczanie / android / fiq_debugger)
  • 3,6% Emulator Goldfish (sterowniki / platforma / złota rybka)
  • 3,4% Verity (sterowniki / md)
  • 11,6% Inne

Różnice w stosunku do LTS

W porównaniu do LTS (4.14.0), wspólne jądro Androida ma 355 zmian, 32266 wstawek i 1546 usunięć (od lutego 2018).

wprowadź opis zdjęcia tutaj

chankruze
źródło
Nie rozumiem, dlaczego ludzie przegłosowali ??? Napisałem odpowiedź, w ciągu 5 sekund dostałem głos! Nicea
chankruze,
+1 za twoją odpowiedź. Przejeżdżający downvoters są do bani.
iBug
+1. Twój jest najlepszy między innymi.
Irfan Latif