Меню

Чем андроид отличается от линукса

Android – это Linux? Сравнение Android и Linux

Обновл. 14 Июл 2021 |

В этой статье мы рассмотрим взаимосвязь между операционной системой Android и Linux, сравним их сходства и различия, а также ответим на главный вопрос: «Android — это Linux?».

Что такое Linux?

Когда кто-то произносит слово «Linux», он может иметь в виду:

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

Дистрибутив Linux. Это операционная система, которая содержит ядро Linux и дополнительное программное обеспечение: различные утилиты, библиотеки, окружение рабочего стола, браузеры, текстовые редакторы, музыкальные проигрыватели и пр. Даже если это дополнительное программное обеспечение было разработано специально для работы вместе с ядром Linux, оно не является частью ядра Linux. При обсуждении операционных систем, использующих ядро Linux, термины «дистрибутив» и «операционная система» являются взаимозаменяемыми. Любой может взять ядро Linux, добавить свое собственное программное обеспечение и создать полноценную операционную систему. В настоящее время доступно огромное количество различных дистрибутивов Linux.

GNU/Linux. Большинство дистрибутивов Linux представляют собой сочетание ядра Linux и программного обеспечения GNU, что заставило некоторых людей утверждать, что мы все должны называть дистрибутивы Linux термином «GNU/Linux».

Что такое Android?

Android — это проект, созданный для удовлетворения потребности в мобильной операционной системе с открытым исходным кодом. Изначально разработка велась компанией Android, Inc. Впоследствии проект перекупила корпорация Google. Поскольку Android является операционной системой, то в её состав входит ядро, драйверы и программное обеспечение пользовательского пространства.

Хотя вокруг термина «Android» и близко нет такой путаницы, как в случае с «Linux», все же существуют две различные разновидности операционной системы Android:

Проект Android с открытым исходным кодом (сокр. «AOSP» от англ. «Android Open Source Project»), в котором Google предоставляет пользователям исходный код Android. Хотя данный исходный код действительно можно использовать для создания функционирующей операционной системы, установив её на смартфон или планшет, мы не получим того функционала, которое большинство пользователей имеют от своего текущего Android-устройства; в первую очередь это касается мобильных сервисов Google (сокр. «GMS» от англ. «Google Mobile Services»).

AOSP с добавлением значительного количества проприетарного кода от производителя смартфона или планшета (например, GMS от Google или TouchWiz от Samsung). Операционная система Android, которая присутствует на вашем смартфоне или планшете, по своей сути является данной разновидностью Android.

Большинство аргументов «за» или «против» классификации Android как Linux применимы к обеим версиям Android, но есть несколько случаев, когда ответ зависит от того, определяете ли вы Android как AOSP или как операционную систему, которая поставляется с вашим смартфоном или планшетом Android.

Android и ядро Linux

На самом деле есть только один аргумент в пользу классификации Android как Linux: каждый смартфон или планшет с ОС Android содержит ядро Linux. Вы даже можете увидеть, какая версия ядра установлена на вашем устройстве, открыв «Настройки» и перейдя в раздел «Система» > «О телефоне» > «Сведения о ПО»:

Однако Android — это не просто ядро Linux; это полностью функционирующая операционная система, которая содержит дополнительные библиотеки, графический интерфейс, приложения и многое другое. Следовательно, стоит уточнить наш вопрос: «Является ли Android дистрибутивом Linux?».

Читайте также:  Принтеры canon lbp2900 windows драйвер

Почему Android не является Linux?

Android не использует стандартное ядро Linux

Чтобы создать операционную систему, отвечающую уникальным потребностям мобильных устройств, команда Android внесла ряд изменений в ядро Linux, включая добавление специализированных библиотек, API и утилит, которые по большей части являются производными от операционных систем семейства BSD или написаны с нуля, специально для Android.

Ядро Linux выпущено под лицензией GNU GPL v2.0, поэтому любой может свободно изменять его исходный код, что и делают многие дистрибутивы Linux. Когда дело доходит до вопроса о том, насколько радикально команда Android изменила ядро Linux, Embedded Linux wiki приходит к выводу, что количество изменений, внесенных командой Android, «не очень велико и соответствует порядку изменений, которые обычно вносятся в ядро Linux разработчиками ПО для встраиваемых систем».

Android не содержит ПО и библиотек GNU

Если вы согласны с тем, что программное обеспечение GNU является определяющей характеристикой дистрибутива Linux до такой степени, что мы все должны называть дистрибутивы Linux термином «GNU/Linux», то Android никоим образом не может быть дистрибутивом Linux. Android включает в себя очень мало программного обеспечения GNU. В частности, команда Android, вместо того, чтобы использовать библиотеку GNU C (glibc), разработала кастомную библиотеку под названием Bionic.

Даже если вы не согласны с тем, что дистрибутив Linux должен включать программное обеспечение GNU, все равно нельзя отрицать тот факт, что отсутствие GNU сильно отличает Android от большинства дистрибутивов Linux.

Вы не можете запускать приложения Linux на Android и наоборот

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

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

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

В отличие от Android, Linux не содержит виртуальной машины Dalvik, и поэтому не может запускать приложения для Android. Виртуальную машину Dalvik и всё другое программное обеспечение Android нельзя просто перенести на настольную машину Linux — вам придется проделать большую работу, чтобы приложения Android выводились в окно на стандартном рабочем столе Linux.

Примечание: BlueStacks и другие эмуляторы приложений для Android пытаются сделать это для Windows и macOS. Они запускают Android на виртуальной машине, что позволяет им запускать приложения для Android (со снижением производительности) на рабочем столе. Однако эти решения оказались не очень популярными.

Android — это продукт Google

Google может сделать исходный код базовой системы Android общедоступным через AOSP, но последующий релиз AOSP разрабатывается Google в частном порядке. Фактически, на сайте AOSP четко указано, что «Google сохраняет ответственность за стратегическое направление Android как платформы и продукта».

Кроме того, хотя разработчики, не являющиеся сотрудниками Google, могут вносить свой вклад в AOSP в различных объемах, официальный сайт AOSP четко указывает, что руководители проектов, как правило, являются сотрудниками Google. Еще один нюанс заключается в том, что Google владеет правами на название и логотип Android, поэтому, даже если вы создадите операционную систему на основе кода AOSP, вам все равно потребуется связаться с Google, если вы захотите опубликовать свою работу, включив в её название часть «Android».

Читайте также:  Как сделать чтобы отображался жесткий диск windows 10

В то время как некоторые дистрибутивы Linux действительно имеют тесные связи с определенной компанией (например, Canonical и Ubuntu или Red Hat и Fedora), для большинства дистрибутивов Linux необычно, чтобы разработка велась в частном порядке только одной организацией.

Дебаты по поводу статуса Android как «ОС с открытым исходным кодом»

Несмотря на рекомендации Фонда свободного программного обеспечения (сокр. «FSF» от англ. «Free Software Foundation») разработчикам удалить всё несвободное программное обеспечение из своих дистрибутивов Linux, нет строгого правила, согласно которому дистрибутивам Linux запрещено содержать несвободное (проприетарное) программное обеспечение. В реальности многие дистрибутивы включают скомпилированные вендором двоичные файлы драйверов, также известные как BLOB-объекты, поэтому возникает вопрос: «Насколько открыт Android по сравнению с «типичным» дистрибутивом Linux?».

Хотя многие почитатели ПО с открытым исходным кодом согласились бы с тем, что AOSP далек от идеального проекта с открытым исходным кодом, его код свободно доступен для изменения и распространения другими людьми.

Однако прежде чем базовая версия AOSP станет полноценным Android, в нее добавится большое количество проприетарного кода, и это верно независимо от того, выбираете ли вы устройство с «чистым Android» (Nexus или Pixel) или устройство с модификациями производителя.

Несмотря на то, что многие дистрибутивы Linux содержат собственный код, термин «Linux» тесно связан с программным обеспечением с открытым исходным кодом, а весь проприетарный код пользовательской части Android превращает данную ОС в гораздо более закрытую систему, нежели «типичный» дистрибутив Linux.

Отсутствие возможности кастомизации Android

Хотя, как правило, довольно легко изменить дистрибутив Linux на уровне операционной системы, по умолчанию владельцы Android не могут получить доступ к «базовой» операционной системе на своем смартфоне или планшете, а «чувствительные» разделы ОС надежно заблокированы.

Краткий экскурс в операционные системы

Операционные системы позволяют взаимодействовать пользователю с аппаратной частью компьютера с помощью прикладного программного обеспечения.

Основные функции типичной современной операционной системы:

Управление памятью и контроль её использования приложениями.

Управление использованием вычислительной мощности приложениями.

Управление файловыми системами и жесткими дисками (HDD и SSD).

Предоставление интерфейса для создания драйверов устройств (чтобы иметь возможность добавлять в систему новое оборудование).

Предоставление графического пользовательского интерфейса для взаимодействия с программным обеспечением.

Работа служб, запускающих такие приложения, как: HTTP-серверы, FTP-серверы, SSH-серверы, SQL-серверы и т.д.

Для выполнения вышеуказанных функций в операционной системе, обычно, выделяют следующие основные части:

Ядро — состоит из планировщика, менеджера ресурсов и предварительно загруженных драйверов оборудования.

Слой аппаратных абстракций (сокр. «HAL» от англ. «Hardware Abstraction Layer») — слой абстрагирования, реализованный в программном обеспечении, позволяющий взаимодействовать инструкциям высокоуровневых языков программирования с аппаратным обеспечением.

Графический интерфейс пользователя (сокр. «GUI» от англ. «Graphical User Interface») — система средств, позволяющая пользователю взаимодействовать с программным и аппаратным обеспечением компьютера.

Утилиты, библиотеки и фреймворки, которые совместно используются всеми службами и приложениями.

Службы и приложения конечных пользователей.

Вышеперечисленные части можно условно разделить на 2 области, в которых они работают:

Пространство пользователя (или «пользовательское пространство») — вытесняемые части оперативной памяти, в которой работают обычные программы, библиотеки, службы и приложения конечных пользователей.

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

Примечание: Графический интерфейс пользователя, в зависимости от архитектуры операционной системы, может принадлежать либо пользовательскому пространству (как в Linux), либо пространству ядра (как в Windows).

Читайте также:  Mac os big sur список поддерживаемых устройств

Различия между Android и Linux

Рассмотрим общие различия между Android и Linux:

Android Linux
Тип ПО Операционная система. Ядро.
Канал передачи данных Оптимизировано под сотовые сети. Оптимизировано под Ethernet и Wi-Fi.
Причины создания Сделать мобильные устройства «умными», конкуренция с iOS. Исследовательские цели в области разработки ПО, а также желание создать свободное программное обеспечение с открытым исходным кодом.
Способ монетизации Продвижение продуктов Google, ежемесячная оплата сервисов и комиссионные вознаграждения от продажи приложений/фильмов/книг и пр. в Google Play. Большинство дистрибутивов поддерживаются сообществом и некоммерческими организациями. Основным источником дохода коммерческих организаций является платная техническая поддержка для корпоративных клиентов.
Тип лицензии Apache License. GNU GPL v2.0.
Основной тип устройств Смартфоны, планшеты. Персональные компьютеры и серверы.
Простота использования Прост в использовании. Сложность варьируется в зависимости от выбранного дистрибутива. Но стоит отметить, что изначальная сложность в разы больше сложности использования Android.
Разработчик и поддержка Google. Коммерческие и некоммерческие компании и организации, сообщества разработчиков-энтузиастов по всему миру.

А теперь рассмотрим технические различия между Android и Linux:

Android Linux
Архитектура процессора ARM. x86 и x64.
Пространство пользователя Android Runtime (модифицированный Java Runtime Environment) и библиотеки Core. Преимущественно GNU и X Window System.
Оптимизация ядра Оптимизировано на пониженное энергопотребление. Баланс между производительностью и энергопотреблением.
Доступ к терминалу (shell) Обычно заблокирован, необходимо получить доступ к root, чтобы иметь возможность взаимодействовать с терминалом. Доступно «из коробки», так как терминал является чрезвычайно важной частью Linux-дистрибутивов.
Основа GUI Google SurfaceFlinger поверх OpenGL. Большинство дистрибутивов используют GUI на основе X Window System.
Основные архитектурные элементы Только ядро, HAL и отличное от GNU пользовательское пространство, и собственное окружение рабочего стола. Ядро, HAL, пользовательское пространство GNU (приложения) и слой пользовательского интерфейса (окружение рабочего стола).
Драйверы оборудования Почти все драйверы являются проприетарными. Большинство драйверов поставляются с открытым исходным кодом.
Загрузчик Простой загрузчик, который выполняет необходимый минимум и передает управление ядру. Стандартизированные загрузчики, подобно GRUB2, с возможность кастомизации.
BIOS/EFI Отсутствует на устройствах ARM. Стандарт для всех материнских плат x86/x64.
Библиотека C Облегченный вариант стандартной библиотеки — Bionic. Библиотека GNU C (glibc).

Заключение

Итак, возвращаясь к нашему первоначальному вопросу: «Является ли Android дистрибутивом Linux?». В конечном счете всё зависит от того, что вы вкладываете в это понятие. Если вы согласны с тем, что мы все должны называть дистрибутивы Linux термином «GNU/Linux», а не «Linux», то ответ отрицательный, поскольку Android включает в себя очень мало программного обеспечения GNU.

Если вы определяете «дистрибутив Linux» как операционную систему, включающую ядро Linux и удовлетворяющую одному или нескольким дополнительным критериям, то, опять же, ответ, скорее всего, будет отрицательным. Хотя каждый смартфон и планшет на базе Android включает ядро Linux, ОС Android полностью не соответствует ни одной из других характеристик, обычно ассоциируемых с дистрибутивами Linux. Например, Android явно является продуктом одной компании, он несовместим с обычными приложениями Linux, и, хотя исходные коды AOSP являются открытыми, версия Android, с которой вы сталкиваетесь на коммерческих устройствах, кажется значительно более закрытой, чем можно было бы ожидать от дистрибутива Linux, благодаря включению большого количества взаимодействующего с пользователем проприетарного кода.

Однако, если для вас дистрибутив Linux — это операционная система, основанная на ядре Linux, то Android является дистрибутивом Linux. Это может быть необычный, узкоспециализированный дистрибутив, но это такой же дистрибутив, как Ubuntu, Fedora, Debian и любая другая операционная система, основанная на ядре Linux.

Источник

Adblock
detector