В чем разница между ядром Linux и ядром Android?

18

Какие изменения сделаны в ядре Linux, чтобы сделать его ядром Android? Под этим вопросом я подразумеваю разницу между ядром Linux и ядром Android?

Триш
источник

Ответы:

7

Различия меняются от версии к версии (как для Linux, так и для Android), и точное ядро ​​отличается для каждого устройства. Ядро для Android - это основное ядро ​​Linux с дополнительными драйверами для конкретного устройства и другими дополнительными функциями, такими как улучшенное управление питанием или более быстрая поддержка графики.

Многие функции в ядре Android позже добавляются в исходный Linux после того, как сообщество open-source приняло (и, возможно, изменило) их, но другие никогда не обновляются, либо потому, что они неприемлемы для разработчиков ядра Linux, либо потому, что они " применимо только к Android или конкретному оборудованию.

Дэн Халм
источник
3
Большинство драйверов для конкретного оборудования Android было принято в основное ядро; но некоторые функции, такие как wake-блокировка, которая некоторое время назад вызвала огромную полемику, остаются проблематичными, потому что основной разработчик и разработчик ядра Android не согласны, является ли это хорошей идеей.
Ложь Райан
«Ядро для Android - это основное ядро ​​Linux с дополнительными драйверами для конкретного устройства и другими дополнительными функциями, такими как улучшенное управление питанием или более быстрая поддержка графики», так что это в основном драйверы? Исходный код не изменился?
OCs Guerlando
@GuerlandoOCs Я не уверен, что вы думаете о драйверах, если не об изменении исходного кода, но, тем не менее, упомянутая мною «другая дополнительная функциональность» довольно велика. Есть много изменений исходного кода.
Дэн Халм
@DanHulme - это патчи для изменения исходного кода или просто код, измененный вручную? Как я могу видеть вещи, которые изменились? Я читал, что вы можете исправить ваше ядро ​​Linux, чтобы оно было совместимо с Android, но где эти патчи, чтобы я мог их прочитать?
OCs Guerlando
5

Помимо особых различий между устройствами и блокировки пробуждения, о которых упоминают Дэн Халм и Ли Райан, Android удалил функции System V IPC (очереди сообщений, сегменты общей памяти, семафоры), которые могли привести к утечке ресурсов ( http://www.kandroid.org/ndk). /docs/system/libc/SYSV-IPC.html ). Вероятно, это всего лишь вопрос настройки сборки ядра. Кроме того, выбранный Android IPC, называемый Binder, имеет некоторую поддержку в ядре, которая, насколько мне известно, не включена в стандартные ядра Linux.

FOOF
источник
4

Я думаю, что этот Android Source - отличная документация для понимания.

А вот список изменений, сделанных в основном ядре для ядра Android 4.14.

Самые большие функции включают в себя:

  • Планирование с учетом энергопотребления на 19,8% (ядро / планирование)
  • 13,8% Сеть (нетто / нетфильтр)
  • 13,5% Sdcardfs (fs / sdcardfs)
  • 9,4% USB (драйверы / USB)
  • 7,2% SoC (arch / arm64, arch / x86)
  • 6,2% f2fs (fs / f2fs - обратные порты из апстрима)
  • 6.1% вход (драйверы / вход / разное)
  • 5.4% FIQ Debugger (драйверы / постановка / android / fiq_debugger)
  • 3.6% Эмулятор золотой рыбки (водители / платформа / золотая рыбка)
  • 3,4% Верити (водители / мкр)
  • 11,6% Другое

Отличия от LTS

По сравнению с LTS (4.14.0) общее ядро ​​Android имеет 355 изменений, 32266 вставок и 1546 удалений (по состоянию на февраль 2018 года).

введите описание изображения здесь

chankruze
источник
Я не понимаю, почему люди понижают голос ??? Я написал ответ, в течение 5 секунд я получил downvote! Ницца
шанкруз
+1 за ваш ответ. Привод даунотерс отстой.
iBug
+1. Ваш лучший среди других.
Ирфан Латиф