Android системный раздел. Как устроен Android

25.12.2018
программное обеспечение промежуточного слоя , лежит набор библиотек (Libraries), предназначенный для решения типовых задач, требующих высокой эффективности. То есть, именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации (в пример можно привести мультимедийные кодеки), отрисовку графики и многое другое. Библиотеки реализованы на C/C++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде.

Перечислим некоторые из низкоуровневых библиотек:

  • Surface Manager - в ОС Android используется композитный менеджер окон, наподобие Compiz (Linux), но более примитивный. Вместо того, чтобы производить рисование графики напрямую в буфер дисплея, система посылает поступающие команды рисования в закадровый буфер, где они накапливаются вместе с другими, составляя некую композицию, а потом выводятся пользователю на экран. Это позволяет системе создавать интересные бесшовные эффекты, реализовать прозрачность окон и плавные переходы.
  • Media Framework - библиотеки, реализованные на базе PacketVideo OpenCORE. С их помощью система может осуществлять запись и воспроизведение аудио и видео данных, а также вывод статических изображений. Поддерживаются многие популярные форматы, включая MPEG4, H.264, MP3, AAC, AMR, JPG и PNG. В будущем на смену OpenCORE должен придти более простой фреймворк Stagefright.
  • SQLite - легковесная и производительная реляционная СУБД, используемая в Android в качестве основного движка для работы с базами данных.
  • 3D библиотеки - используются для высокооптимизированного рисования 3D-графики, при возможности используют аппаратное ускорение. Их реализации строятся на основе API OpenGL ES 1.0.
  • FreeType - библиотека для работы с битовыми картами, а также для растеризации шрифтов и осуществления операций над ними. Это высококачественный движок для шрифтов и отображения текста.
  • LibWebCore - библиотеки известного браузерного движка WebKit, используемого также в десктопных браузерах Google Chrome и Apple Safari.
  • SGL (Skia Graphics Engine) - открытый движок для работы с 2D-графикой. Графическая библиотека является продуктом Google и часто используется в других их программах.
  • SSL - библиотеки для поддержки одноименного криптографического протокола на базе OpenSSL.
  • libc - библиотека стандартных вызовов языка C, аналог glibc (GNU libc из Linux) для маленьких устройств. Носит название Bionic.

  • Рис. 1.5.

    На этом же уровне располагается Android Runtime - среда выполнения прикладных программ. Ключевыми её составляющими являются набор стандартных библиотек и виртуальная машина Dalvik. Каждое приложение в ОС Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все работающие процессы изолированы от операционной системы и друг от друга. Архитектура Android Runtime такова, что работа программ осуществляется строго в рамках окружения виртуальной машины. Благодаря этому осуществляется защита ядра операционной системы от возможного вреда со стороны других её составляющих. Поэтому код с ошибками или вредоносное ПО не смогут испортить ОС Android и устройство на её базе. Такая защитная функция , наряду с выполнением программного кода, является одной из ключевых для Android Runtime.

    Уровнем выше располагается Application Framework, иногда называемый уровнем каркаса приложений. Именно через каркасы приложений разработчики получают доступ к API , предоставляемым компонентами системы, лежащими ниже уровнем. Кроме того, благодаря архитектуре фреймворка, любому приложению предоставляются уже реализованные возможности других приложений, к которым разрешено получать доступ . В базовый набор сервисов и систем, лежащих в основе каждого приложения и являющихся частями фреймворка, входят:

  • Богатый и расширяемый набор представлений (Views), который может быть использован для создания визуальных компонентов приложений, например, списков, текстовых полей, таблиц, кнопок или даже встроенного web-браузера.
  • Контент-провайдеры (Content Providers), управляющие данными, которые одни приложения открывают для других, чтобы те могли их использовать для своей работы.
  • Менеджер ресурсов (Resource Manager), обеспечивающий доступ к ресурсам, не несущим кода, например, к строковым данным, графике, файлам и другим.
  • Менеджер оповещений (Notification Manager), благодаря которому все приложения могут отображать собственные уведомления для пользователя в строке состояния.
  • Менеджер действий (Activity Manager), который управляет жизненными циклами приложений, сохраняет данные об истории работы с действиями, а также предоставляет систему навигации по ним.
  • Менеджер местоположения (Location Manager), позволяющие приложениям периодически получать обновленные данные о текущем географическом положении устройства.
  • На вершине программного стека Android лежит уровень приложений (Applications). Сюда относится набор базовых приложений, который предустановлен на ОС Android . Например, в него входят браузер , почтовый клиент , программа для отправки SMS , карты, календарь, менеджер контактов и многие другие. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android . И помимо этого базового набора к уровню приложений относятся все прикладные приложения под платформу Android , в том числе и установленные пользователем.

    Как правило, приложения под Android пишутся на языке Java , но существует возможность разрабатывать программы и на C/C++ (с помощью Native Development Kit ). Экзотикой можно назвать использования Basic (с помощью Simple) и других языков. Также можно создавать собственные программы с помощью конструкторов приложений, таких как App Inventor.

    1.6. Особенности ядра

    Ядро является самой важной частью ОС Linux, и в отличие от других его частей, было перенесено в ОС Android почти полностью. Тем не менее, в процессе переноса на ядро было наложено около 250 патчей.

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

    Для обеспечения отладки на маленьких устройствах в ядро добавлен вывод отладочной информации в последовательный порт и реализована поддержка команды logcat.

    Большие изменения коснулись работы с памятью. Традиционная разделяемая память Linux shmem была заменена на ashmem. Та же задача, но на уровне физической памяти, решается с помощью драйвера pmem. Добавлен специальный обработчик нехватки памяти (out of memory ), названный Viking Killer , в простейшем случае он просто убивает процесс, но могут быть заданы более сложные правила.

    В сетевой стек добавлены новые настройки безопасности, поддержка файловой системы для флеш-носителей YAFFS2 включена в ядро .

    1.7. Java-машина Dalvik

    Dalvik Virtual Machine является частью мобильной платформы Android . Это виртуальная машина , автором которой является Дэн Бронштейн. Она распространяется как свободное программное обеспечение под BSD -совместимой лицензией Apache 2.0. Во многом именно этот факт сыграл свою роль в решении Google отказаться от JME ( Java Micro Edition ), на которую необходимо было бы получить лицензию от Sun . Поэтому корпорация , целью которой было создание открытой операционной системы, разработало свою собственную виртуальную машину.

    В отличие от большинства виртуальных машин (той же Java Virtual Machine ), которые являются стек -ориентированными, Dalvik является регистр-ориентированной, что нельзя назвать стандартным решением. С другой стороны, оно очень хорошо подходит для работы на процессорах RISC-архитектуры, к которым относятся и процессоры ARM , очень широко применяемые в мобильных устройствах.

    Dalvik проектировалась специально под платформу Android . Учитывался тот факт, что платформа строит все процессы как изолированные, выполняющиеся каждый в своём адресном пространстве. Виртуальная машина оптимизирована для низкого потребления памяти и работы на мобильном аппаратном обеспечении. Начиная с версии Android 2.2., Dalvik использует JIT (Just-in-Time) компиляцию. В результате этих особенностей, получилась быстрая и производительная виртуальная машина , что не может не сказываться на работе приложений в целом.

    Dalvik использует собственный байт-код. При разработке приложения под Android переводятся компилятором в специальный машинно-независимый низкоуровневый код. При выполнении на платформе именно Dalvik интерпретирует и выполняет такую программу.

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

    1.8. Bionic

    Bionic - библиотека стандартных вызовов языка C, распространяемая под лицензией BSD (Berkeley Software Distribution ? система распространения программного обеспечения в исходных кодах, созданная для обмена опытом между учебными заведениями) и разработанная Google для Android . В bionic отсутствуют некоторые не используемые в Android функции POSIX , доступные в полной реализации glibc.

    Основные отличия bionic :

  • BSD лицензии: Android использует Linux ядро, которое находится под GNU General Public License (GPL), но Google пожелал изолировать приложения для Android от последствий GPL. GNU libc, который обычно используется с ядром Linux находится под лицензией GNU LGPL, как альтернативный uClibc.
  • малые размеры: объектный код bionic намного меньше (примерно в 2 раза), чем glibc и несколько меньше, чем uclibc.
  • bionic предназначена для процессоров c относительно низкими тактовыми частот.
  • усеченная, но эффективная реализация нитей POSIX.
  • 1.9. Обзор Java-интерфейсов прикладного программиста

    Для прикладного программиста Android - набор интерфейсов на языке Java . Рассмотрим, как он организован. В основе набора - пакеты, входящие в стандарт языка Java , такие как java.util, java.lang, java.io . Они есть на любой платформе, где могут быть запущены java -приложения, и неспецифичны для Android . К ним примыкают расширения, которые в стандарт языка не входят, но де-факто давно являются стандартными - пакеты javax.net , javax.xml .

    Также в Android включены менее распространенные расширения Java - пакет org.apache.http , самая солидная реализация протокола HTTP . Пакет org.json отвечает за сериализацию объектов JavaScript и поддержку технологии AJAX . Пакет org.w3c.dom обеспечивает объектную модель документа

    В определенных моделях планшетов на базе платформы Android могут отсутствовать некоторые компоненты из вышеприведенного списка.

    Все «андроидные» планшеты управляются одной из версий мобильной операционной системы от компании Google. При этом, более старые версии могут не поддерживать некоторые из современных приложений.

    Все версии самой популярной мобильной операционной системы имеют общее основание. Мы можем представить себе операционную систему Android в качестве многослойной структуры. Компьютерные инженеры называют это программным стеком. Элементы на вершине стека являют собою то, что видит пользователь в процессе своего взаимодействия с операционной системой. На «донышке» стека находятся те части операционной системы, которые взаимодействуют непосредственно с аппаратным обеспечением устройства.

    Итак, на самом нижнем уровне находятся сами аппаратные компоненты: процессоры, сенсоры, провода и печатные платы. Следующим слоем является ядро операционной системы. Ядро иногда еще называют встроенным (или фирменным) программным обеспечением. Более известно англоязычное определение «firmware». Это программное обеспечение осуществляет контроль над аппаратными ресурсами устройства, управление ими и их распределением.

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

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

    На том же уровне программного стека располагаются корневые библиотеки, необходимые для поддержки приложений, написанных на языке Java. Java является языком программирования от Sun Microsystems. Еще сравнительно недавно телефоны с поддержкой Java-приложений были очень распространены. В настоящее время они все в большей степени вытесняются смартфонами.

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

    На следующем уровне располагается инфраструктура приложений (application framework). Она является основой для всех приложений «андроидного» девайса. Инфраструктура приложений является связующим звеном между приложениями и остальными частями операционной системы.

    Google рекомендует разработчикам создавать такие приложения, которые взаимодействуют с этим слоем в рамках интерфейса прикладного программирования () разработанной поисковым гигантом операционной системы. Разработчикам остается только ознакомиться с этими правилами, имеющими отношение к API. Им не нужно задумываться о технических характеристиках каждого «андроидного» планшета.

    Самый верхний уровень программного стека содержит интерфейс пользователя и все приложения «андроидного» планшета. Именно эту часть операционной системы постоянно видит перед собой пользователь. Но за этим привлекательным и красочным слоем скрывается масса скучного, и интересного только специалистам кода.

    Как и любая другая операционная система, и другие аппаратные ресурсы планшета.

    По материалам computer.howstuffworks.com

    #факты | Как устроен Android? Олег Довбня

    Файловая система os Android

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



    в андроид нет привычных многим дисков - таких как с или д. Корень файловой системы у нас: « ». к корневой директории присоединяются все остальные директории. Рассмотрим некоторые из них:

    system - по названию уже можно догадаться что тут располагаются системные файлы(что то наподобии мы можем видеть в ос от майкрософт c:windows). Файлы в этой папке по умолчанию неизменяемые. Предназначены они для функционирования операционной системы. Так же тут располагаются встроенные приложения, встроенные в ос. Если мы получим рут права то сможем вносить свои изменения в данной директории. Однако делать это стоит аккуратно ибо удаленные файлы и папки не восстановятся сами по себе. В таком случае нам помогут лишь перепрошивка или бэкап. Кое - что интересное можно найти в папке systemmedia . В архиве bootanimation.zip лежат картинки составляющие анимацию при включении аппарата. Еще в корне папки system можно найти файл build.prop который содержит в себе много настроек, от описания аппарата до плотности экрана(для настройки этого конфига существует много сторонних приложений).скрин


    Data - в отличии от систем тут хранятся изменяемые файлы. В под категории app как раз хранятся apk установленных нами программ.скрин

    Если нам нужен апк файл какого- либо приложения то мы легко можем его там найти. А в datadata данные этих установленных программ.
    Mnt -в этот раздел монтируется пользовательская память (если например установить флэш карту). Таким образом если мы поместим наш тхт файл в корень флэш карты то полный путь будет выглядеть так « mntsdcardфайл.тхт ». Сюда же монтируется встроенный диск у смартфонов без поддержки карт памяти.скрин


    Как сделать wipe (сброс настроек) на android


    существует несколько способов форматирования. О нескольких из них ниже
    1.сброс через настройки. Заходим в настройки >> восстановление и сброс >> сброс настроек. Сбрасывает все настройки и удаляет установленное по. Перед этим можно сделать резервное копирование некоторых настроек, отметив галочкой соответствующий пункт. После перезагрузки аппарат спросит восстановить ли эти данные.
    скрин


    2.сброс через recovery. Полезен в той ситуации когда аппарат не включается. Потребуется рут доступ и соответственно установленный recovery. В зависимости от установленного recovery месторасположение пунктов может различаться. У меня это пункт advanced wipe. Содержит в себе:
    dalvik cache – форматирование кеша виртуальной машины dalvik.
    System - форматирование системного раздела.
    Data – удаление всех сторонних приложений в памяти устройства а так же пользовательских настроек.
    cache – удаление кеша
    format sdcard – форматирование карты памяти. Удаление всего что находится на карте памяти.
    format sd-ext – форматирование ехт раздела на карте памяти (если был создан такой раздел. Например для монтирования скрипта ссылающего приложения при установки на карту).
    3. форматирование при помощи сервисного кода. Если набрать * 2767 * 3855 # . сразу же после набора произойдет сброс. Будьте внимательны.
    Так например удаление содержимого папки datadata мы удалим настройки и данные приложений но не сами приложения. Это так же можно сделать и из настроек приложения «удалить данные». При удалении папки дата будет удалены установленные приложения.
    Пожелания, поправки, дополнения к статье просьба оставлять в комментариях или ко мне в личку. статья будет дополняться. Спасибо читателям, успехов.
    -----------------
    Оставить комментарии можно в разделе Каталог статей
    Похожие статьи