Уровень ядра

Ядро является слоем абстракции между оборудованием и остальной частью программного стека. На этом уровне располагаются основные службы типа управления процессами, распределения памяти и управления файловой системой.

Ядро Android основано на ядре Linux версии 2.6, но сама система Android не является Linuхсистемой в чистом виде, имеет некоторые отличия и содержит дополнительные расширения ядра, специфичные для Android, — свои механизмы распределения памяти, взаимодействие между процессами и др.

Архитектура системы Android

Основные компоненты уровня ядра:

  • драйвер межпроцессного взаимодействия (IPC Driver);
  • драйвер управления питанием (Android Power Management);
  • набор драйверов для оборудования, входящего в состав мобильного устройства.

Основные компоненты ядра Android:

  • Драйвер IPC

Приложения и службы могут работать в защищенных отдельных процессах, которые должны общаться между собой и иметь доступ к общим данным. Платформа Android обеспечивает механизм IPC (Interprocess Communication), который является основным механизмом взаимодействия между процессами.

Драйвер IPC обеспечивает следующую функциональность:

  • взаимодействие процессов;
  • создание и обработку пулов потоков в процессах;
  • подсчет и отображение ссылок на объекты в других процессах;
  • синхронные запросы между процессами.

Управление энергопотреблением

Система управления энергопотреблением (Android Power Management) разработана на основе стандартного драйвера управления питанием Linux, но оптимизирована для мобильных устройств с учетом их специфических особенностей.

Основная функция системы управления энергопотреблением — экономное использование батареи мобильного устройства. Драйвер переводит системы в "спящий режим" с минимальным потреблением мощности процессором, если приложения и службы не используются.

Драйверы оборудования

Программный стек Android разработан с учетом необходимой гибкости, включая работу со многими дополнительными компонентами, имеющимися в мобильных устройствах. Эти компоненты в значительной степени полагаются на доступность определенных аппаратных средств на данном устройстве. Они предоставляют дополнительную функциональность для мобильных уст ройстн(сенсорный экран, камера, GPS, акселерометр и т. д.).

Встроенные драйверы включают в себя поддержку работы с оборудованием мобильного устройства. Набор драйверов может быть различным в зависимости от производителя и модели устройства. Поскольку новое вспомогательное оборудование для мобильных устройств постоянно появляется на рынке, драйверы для них должны быть написаны на уровне ядра Linux для обеспечения поддержки оборудования, так же как и для настольных Linuxcиcтeм.

Преимущество использования ядра Linux как основы Android в том, что ядро системы позволяет верхним уровням программного стека оставаться неизменными, несмотря на различия в используемом оборудовании. Конечно, хорошая практика программирования требует, чтобы пользовательские приложения корректно завершали свою работу в случае вызова ресурса, являющегося недоступным, например камеры, не присутствующей в данной модели смартфона.