Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Устройство операционной системы Google Android




Система Android – это программный стек для мобильных устройств, который включает операционную систему, программное обеспечение промежуточного слоя (middleware), а также основные пользовательские приложения (e-mail-клиент, календарь, карты, браузер, контакты и др.).

 

Уровень ядра

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

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

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

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

· Драйвер межпроцессорного взаимодействия (ipc driver);

· Драйвер управления питанием (android power management);

· Набор драйверов для оборудования, входящего в состав мобильного устройства.

Рассмотрим теперь кратко основные компоненты ядра android.

 

Драйвер IPC. Приложения и службы могут работать в защищенных отдельных процессах, которые должны общаться между собой и иметь доступ к общим данным. Платформа android обеспечивает механизм ipc (inter-process communication), который является основным механизмом взаимодействия между процессами.

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

· Взаимодействие процессов;

· Создание и обработку пулов потоков в процессах;

· Подсчет и отображение ссылок на объекты в других процессах;

· Синхронные запросы между процессами.

 

Управление энергопотреблением. Система управления энергопотреблением (android power management) разработана на основе стандартного драйвера управления питанием linux, но оптимизирована для мобильных устройств с учетом их специфических особенностей.

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

 

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

 

Уровень библиотек

Следующий уровень над ядром Linux является набором библиотек c/c++ типа openGL, webkit, freetype, ssl, библиотеки поддержки libc, базы данных SQLite и мультимедиабиблиотек (media framework). Системная библиотека базируется на berkeley software distribution (bsd) и разработана для мобильных устройств на основе Linux.

Следующий уровень над ядром Linux включает набор библиотек c/c++, используемых различными компонентами ос. Для разработчиков доступ к функциям этих библиотек реализован через использование application framework – каркаса приложений. Библиотеки этого уровня по своему функциональному назначению можно разделить на следующие группы:

· Системная библиотека с;

· Менеджер поверхностей;

· Функциональные библиотеки C/C++

Системная библиотека libc. Компания Google разработала собственную с-библиотеку (libc) – bionic. Это было необходимо по следующим причинам:

· Библиотека будет загружаться в каждый процесс и, следовательно, должна иметь маленький размер. Библиотека bionic имеет размер около 200 кбайт, что в два раза меньше размера glibc;

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

Библиотека bionic имеет встроенную поддержку важных для android системных служб и регистрацию системных событий. Библиотека bionic не поддерживает определенные функциональности, например исключения с++, и несовместима с gnu libc и стандартом posix.

Менеджер поверхностей. Система android использует композитный менеджер поверхностей, похожий на compiz (композитный менеджер для x window system, использующий для ускорения 3d-графику opengl). Вместо того чтобы рисовать непосредственно в буфер экрана, команды рисунка входят за кадром в битовые массивы, которые потом объединяются с другими битовыми массивам, чтобы сформировать изображение, которое видит пользователь. Это позволяет системе создавать все виды интересных эффектов, например прозрачные окна и причудливые переходы.

Менеджер поверхностей обрабатывает весь рендеринг поверхностей на фреймовый буфер. Менеджер может объединить 2d- и 3d-поверхности и поверхности от нескольких приложений. Поверхности передаются как буферы компоновкой ipc-запросов. Менеджер поверхностей использует двойную буферизацию, используя транспонирования страницы. Системные интеграторы могут подключать аппаратное 2d-ускорение, используя плагины khronos. Обработка графической информации менеджером поверхностей представлена на следующем рисунке

Рис. 2. Обработка графической информации менеджером поверхностей

 

Функциональные библиотеки. Android включает ряд библиотек с/с++, используемых различными компонентами системы. Далее приводятся основные функциональные библиотеки системы.

· Мультимедиа (media framework). Эти библиотеки ответственны за регистрацию и воспроизведение аудио- и видеоформатов. Основаны на packetvideo opencore и предназначены для поддержки популярных аудио- и видеоформатов (mpeg4, h.264, mp3 и др.).

· SQLite – процессор баз данных, доступный всем приложениям. SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а представляет библиотеку, с которой программа компонуется, и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (api) библиотеки sqlite. Такой подход уменьшает накладные расходы, время отклика и упрощает разработку приложений для работы с данными. Sqlite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа.

· OpenGL es – движок для работы с 3d-графикой, основанный на api-версии openGL es 1.0. OpenGL es – это упрощенная версия спецификации openGL, позволяющая мобильным устройствам работать с тяжеловесными в графическом отношении приложениями. Библиотека использует аппаратный 3d-акселератор (если он доступен на этом устройстве) или встроенное высоко оптимизированное трехмерное программное обеспечение для работы с растровой графикой.

· Freetype – библиотека шрифтов, предназначенная для работы с растровыми и векторными шрифтами.

· Webkit – библиотека, предназначенная для функционирования встроенного в android web-браузера. Webkit поддерживает css, javascript, dom, ajax.

· SGL – движок для работы с 2d-графикой. Android также поддерживает собственную графическую 2d-библиотеку skia, которая написана на языке c и с++ (skia также формирует ядро популярного браузера google chrome).

· SSL – библиотека предназначена для работы с сокетами, основанная на протоколе ssl: sslv3.0 или tslv1.2.

 

Среда выполнения

Среда выполнения обеспечивает библиотеки ядра dalvik virtual machine (виртуальная машина dalvik), которые предоставляют требуемую функциональность для java-приложений.

Dalvik virtual machine. Прикладное программное обеспечение, запускаемое на мобильном устройстве, исполняет виртуальная машина dalvik, которая хоть и является аналогом виртуальной машины java, существенно от нее отличается. Dalvik относится к классу регистровых машин (регистры процессора используются как первичные модули хранения данных), идеально подходящих для работы на процессорах risc-архитектуры, к которым относятся и процессоры arm, применяемые в мобильных устройствах, тогда как стандартная виртуальная машина java компании sun microsystems – стековая. В результате использования регистровой виртуальной машины Google надеется на 30 процентов уменьшить количество команд по сравнению со стековыми машинами.

Созданные с помощью стандартного java-компилятора class-файлы и преобразуются в байт-код dalvik (*.dex) транслятором dx, входящим в состав sdk. Изнутри работающий Android выглядит как набор виртуальных машин dalvik, в каждой из которых исполняется прикладная задача.

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

Core libraries. Включает набор основных библиотек, которые предоставляют функциональность для java. Библиотеки ядра обеспечивают слой API и являются основной платформой разработки java-приложений для Android.

 

Уровень каркаса приложений.

Уровень каркаса приложений находится на вершине системных библиотек, функциональных библиотек и dalvik vm. На этом уровне находятся основные службы Android для управления жизненным циклом приложений, пакетами, ресурсами и т.д.

Программист имеет полный доступ к тем же API, которые используются основными приложениями. Архитектура этих приложений разработана с целью упрощения многократного использования компонентов. Любое разрабатываемое приложение может использовать возможности базовых приложений и, соответственно, любое стороннее приложение может использовать возможности вашего приложения (с учетом установленных разрешений). Этот же самый механизм позволяет многократно использовать уже разработанные компоненты.

Службы Android – это службы, которые являются основными для всех приложений, работающих на устройстве. К ним относятся:

· Менеджер деятельностей (activity manager) – управляет жизненным циклом приложений и предоставляет систему навигации по истории работы с деятельностями (стеку деятельностей);

· Менеджер пакетов (package manager) – управляет установкой и развертыванием пакетов прикладных программ, которые находятся на устройстве;

· Менеджер окон (window manager) – сохраняет окна приложения. Если разработчик предусмотрел вывод экрана, а затем переключение на другой экран, первый будет сохранен операционной системой и поставлен в режим ожидания. Это, в свою очередь, позволяет с помощью клавиши <back> мобильного устройства просматривать уже использовавшиеся экраны подобно тому, как это делается в web-браузере;

· Менеджер ресурсов (resource manager) – предназначен для доступа к строковым, графическим и другим типам ресурсов;

· Контент-провайдеры (content providers) – службы, которые позволяют приложениям получать доступ к данным других приложений, а также предоставлять сторонним приложениям доступ к своим данным;

· Система представлений (view system) – система с расширяемой функциональностью, которая служит для создания внешнего вида приложений, включающего такие компоненты, как списки, таблицы, поля ввода, кнопки, встроенный web-браузер и многое другое;

· Телефонный менеджер – обеспечивает слой api, контролирующий основную телефонную информацию, такую как сетевой тип и статус подключения, а также предоставляет различные утилиты для управления телефонными номерами;

· Менеджер местоположения – навигационные службы, которые позволяют приложениям получать периодические обновления географического местоположения устройства или запускать определенное приложение;

· Менеджер уведомлений – позволяет любому приложению отображать пользовательские уведомления в строке состояния.

 

Уровень приложений

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

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

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

 




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 5828; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.031 сек.