- Bionic (библиотека)
- См. также
- Примечания
- Ссылки
- Полезное
- Смотреть что такое «Bionic (библиотека)» в других словарях:
- bionic
- Using bionic as an app developer
- Working on bionic itself
- What are the big pieces of bionic?
- libc/ — libc.so, libc.a
- libm/ — libm.so, libm.a
- libdl/ — libdl.so
- libstdc++/ — libstdc++.so
- linker/ — /system/bin/linker and /system/bin/linker64
- tests/ — unit tests
- benchmarks/ — benchmarks
- What’s in libc/?
- Adding libc wrappers for system calls
- Updating kernel header files
- Updating tzdata
- Verifying changes
- Running the tests
- Device tests
- Device tests via CTS
- Host tests
- Against glibc
- Gathering test coverage
- Attaching GDB to the tests
- Snapdragon, Bionic, Kirin, Exynos — сравнение процессоров в смартфонах
- Как работает процессор?
- Процессоры Snapdragon
- Процессоры Kirin
- Процессоры Bionic
- Процессоры Samsung
- Какой процессор выбрать?
Bionic (библиотека)
Bionic — стандартная библиотека языка Си, распространяемая под лицензией BSD и разработанная Google для Android. В Bionic отсутствуют некоторые не используемые в Android функции POSIX, доступные в полной реализации libc [1] .
См. также
Примечания
- ↑Burnette, Ed. Patrick Brady dissects Android (англ.) , ZDNet (4 июня2008 года). Проверено 10 августа 2011.
Ссылки
ANSI C (C89 и C90) • C99 • C11 | |
Компиляторы | Borland Turbo C • Clang • GCC • LCC • Pelles C • PCC • TCC • Visual C++ (C++/CLI • C++/CX) • Watcom C/C++ compiler |
Библиотеки | Стандартная библиотека языка Си • glibc • dietlibc • uClibc • Newlib • Eglibc • Bionic |
Особенности | C-строка • Синтаксис • Препроцессор • Типы и объявления переменных • • Функции |
Избранные потомки | C++ • C# • D • Objective-C • Java • Alef • Limbo • Go • Vala |
C и другие языки | C и C++ (Совместимость • Операторы) • Сравнение Pascal и C • Компилятор C в байт-код Java |
Категория:Язык программирования Си |
Разработка | Android SDK · Apache Ant · Bionic · Dalvik · Developer Challenge · Eclipse · Google Code · Google App Inventor · Google I/O · Android Debug Bridge (англ.) | |
---|---|---|
Интерфейсы пользователя | HTC Sense · Samsung TouchWiz (весь список) | |
Приложения | Earth · Goggles · Gmail · Maps · Sky Map · Talk · Translate · Voice · YouTube | |
Сервисы | Google Play | |
Списки | Список версий Android · Устройства с Android · Список оболочек Android |
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «Bionic (библиотека)» в других словарях:
Bionic (значения) — Bionic: Bionic 4 й студийный альбом американской исполнительницы Кристины Агилеры, выпущенный 8 июня 2010 года. Bionic libc библиотека стандартных функций, несовместимая с libc используемая в Android … Википедия
Стандартная библиотека языка Си — Стандартная библиотека языка программирования С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stdbool.h stddef.h … Википедия
Android — У этого термина существуют и другие значения, см. Андроид (значения). Android … Википедия
Google Play — Тип цифровая дистрибуция Разработчик Google Операционная система Android Первый выпуск 6 марта 2012 года (Google Play) 22 октября 2008 года ( … Википедия
Android Market — Логотип Android Market Тип цифровая дистрибуция Разработчик Google Операционная система Androi … Википедия
C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия
uClibc — Тип системная библиотека Операционная система Linux Последняя версия 0.9.33.2[1] (15 мая 2012) Лицензия GNU LGPL Сайт … Википедия
Newlib — Тип Стандартная библиотека языка Си во встраиваемых системах Разработчик Red Hat Операционная система Cross platform Последняя версия 1.20.0 (19 декабря 2011) Сайт … Википедия
C++11 — C++11[1][2] или ISO/IEC 14882:2011[3] (в процессе работы над стандартом носил условное наименование C++0x[4][5]) новая версия стандарта языка C++, вместо ранее действовавшего ISO/IEC 14882:2003. Новый стандарт включает дополнения в ядре… … Википедия
glibc — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью … Википедия
Источник
bionic
bionic is Android’s C library, math library, and dynamic linker.
Using bionic as an app developer
Working on bionic itself
This documentation is about making changes to bionic itself.
What are the big pieces of bionic?
libc/ — libc.so, libc.a
The C library. Stuff like fopen(3) and kill(2) .
libm/ — libm.so, libm.a
The math library. Traditionally Unix systems kept stuff like sin(3) and cos(3) in a separate library to save space in the days before shared libraries.
libdl/ — libdl.so
The dynamic linker interface library. This is actually just a bunch of stubs that the dynamic linker replaces with pointers to its own implementation at runtime. This is where stuff like dlopen(3) lives.
libstdc++/ — libstdc++.so
The C++ ABI support functions. The C++ compiler doesn’t know how to implement thread-safe static initialization and the like, so it just calls functions that are supplied by the system. Stuff like __cxa_guard_acquire and __cxa_pure_virtual live here.
linker/ — /system/bin/linker and /system/bin/linker64
The dynamic linker. When you run a dynamically-linked executable, its ELF file has a DT_INTERP entry that says “use the following program to start me”. On Android, that‘s either linker or linker64 (depending on whether it’s a 32-bit or 64-bit executable). It’s responsible for loading the ELF executable into memory and resolving references to symbols (so that when your code tries to jump to fopen(3) , say, it lands in the right place).
tests/ — unit tests
The tests/ directory contains unit tests. Roughly arranged as one file per publicly-exported header file.
benchmarks/ — benchmarks
The benchmarks/ directory contains benchmarks, with its own documentation.
What’s in libc/?
Adding libc wrappers for system calls
The first question you should ask is “should I add a libc wrapper for this system call?”. The answer is usually “no”.
The answer is “yes” if the system call is part of the POSIX standard.
The answer is probably “yes” if the system call has a wrapper in at least one other C library.
The answer may be “yes” if the system call has three/four distinct users in different projects, and there isn’t a more specific library that would make more sense as the place to add the wrapper.
In all other cases, you should use syscall(3) instead.
Adding a system call usually involves:
- Add entries to SYSCALLS.TXT. See SYSCALLS.TXT itself for documentation on the format.
- Add constants (and perhaps types) to the appropriate header file. Note that you should check to see whether the constants are already in kernel uapi header files, in which case you just need to make sure that the appropriate POSIX header file in libc/include/ includes the relevant file or files.
- Add function declarations to the appropriate header file. Don’t forget to include the appropriate __INTRODUCED_IN() .
- Add the function name to the correct section in libc/libc.map.txt.
- Add at least basic tests. Even a test that deliberately supplies an invalid argument helps check that we’re generating the right symbol and have the right declaration in the header file, and that you correctly updated the maps in step 5. (You can use strace(1) to confirm that the correct system call is being made.)
Updating kernel header files
As mentioned above, this is currently a two-step process:
- Use generate_uapi_headers.sh to go from a Linux source tree to appropriate contents for external/kernel-headers/.
- Run update_all.py to scrub those headers and import them into bionic.
Note that if you‘re actually just trying to expose device-specific headers to build your device drivers, you shouldn’t modify bionic. Instead use TARGET_DEVICE_KERNEL_HEADERS and friends described in config.mk.
Updating tzdata
This is handled by the libcore team, because they own icu, and that needs to be updated in sync with bionic). See system/timezone/README.android.
Verifying changes
If you make a change that is likely to have a wide effect on the tree (such as a libc header change), you should run make checkbuild . A regular make will not build the entire tree; just the minimum number of projects that are required for the device. Tests, additional developer tools, and various other modules will not be built. Note that make checkbuild will not be complete either, as make tests covers a few additional modules, but generally speaking make checkbuild is enough.
Running the tests
The tests are all built from the tests/ directory.
Device tests
Note that we use our own custom gtest runner that offers a superset of the options documented at https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#running-test-programs-advanced-options, in particular for test isolation and parallelism (both on by default).
Device tests via CTS
Most of the unit tests are executed by CTS. By default, CTS runs as a non-root user, so the unit tests must also pass when not run as root. Some tests cannot do any useful work unless run as root. In this case, the test should check getuid() == 0 and do nothing otherwise (typically we log in this case to prevent accidents!). Obviously, if the test can be rewritten to not require root, that’s an even better solution.
Currently, the list of bionic CTS tests is generated at build time by running a host version of the test executable and dumping the list of all tests. In order for this to continue to work, all architectures must have the same number of tests, and the host version of the executable must also have the same number of tests.
Running the gtests directly is orders of magnitude faster than using CTS, but in cases where you really have to run CTS:
Host tests
The host tests require that you have lunch ed either an x86 or x86_64 target. Note that due to ABI limitations (specifically, the size of pthread_mutex_t), 32-bit bionic requires PIDs less than 65536. To enforce this, set /proc/sys/kernel/pid_max to 65536.
You can supply gtest flags as extra arguments to this script.
Against glibc
As a way to check that our tests do in fact test the correct behavior (and not just the behavior we think is correct), it is possible to run the tests against the host’s glibc.
Gathering test coverage
To get test coverage for bionic, use //bionic/build/coverage.sh . Before running, follow the instructions at the top of the file to rebuild bionic with coverage instrumentation.
Attaching GDB to the tests
Bionic’s test runner will run each test in its own process by default to prevent tests failures from impacting other tests. This also has the added benefit of running them in parallel, so they are much faster.
However, this also makes it difficult to run the tests under GDB. To prevent each test from being forked, run the tests with the flag —no-isolate .
Источник
Snapdragon, Bionic, Kirin, Exynos — сравнение процессоров в смартфонах
Процессор — это один из важнейших компонентов, который в первую очередь влияет на удобство использования телефона. От его производительности зависит плавность работы операционной системы, приложений, игр и мультимедиа. Какие возможности предлагают процессоры в смартфонах популярных производителей и какой выбрать?
Как работает процессор?
Процессор представляет собой небольшой чип, который можно сравнить с мозгом, управляющим работой электронных устройств — настольных ПК, ноутбуков, планшетов, смартфонов. Производительность мобильного процессора зависит от количества ядер и их мощности, т.е. от их тактовой частоты. Ядро — это элемент процессора, отвечающий за выполнение вычислительных операций. Значение тактовой частоты самых мощных ядер, используемых в мобильных процессорах, достигает до 2,8 ГГц. В настоящее время 8-ядерные процессоры являются стандартными.
Очень часто используется конфигурация, которая состоит из четырех ядер с более высокой мощностью и четырех ядер с меньшей мощностью, например, 4 x 2,3 ГГц + 4 x 1,8 ГГц. При выполнении сложных задач, таких как игры или воспроизведение видео в формате Full HD, телефон использует мощные ядра. Для простых задач — ядра с более низкой тактовой частотой, которые потребляют меньше энергии. Использование такой системы позволяет продлить работу аккумулятора.
Производительность процессора влияет на плавность графики, скорость работы приложений и стабильность их работы. Выбор процессора зависит от того, для каких целей вы используете свой смартфон.
Если он чаще всего используется для игр или продвинутых графических и видео приложений, то ищите модели с процессором 2,5 ГГц и выше. Но если он используется для общения в социальных сетях и серфа в интернете, то будет достаточно процессора с частотой 1,8–2 ГГц.
На видео: Как работает процессор?
Процессоры Snapdragon
В настоящее время на рынке доминируют процессоры Snapdragon — продукт американской компании Qualcomm. Они используются в телефонах практически всех крупных производителей. Процессоры серии Snapdragon 4xx (например, 439) можно встретить только в старых моделях.
Процессоры Snapdragon серий 6xx и 7xx устанавливаются в смартфонах среднего ценового диапазона. Устройства с такими чипами обеспечивают быструю и удобную работу всех самых популярных приложений.
Последняя серия процессоров Snapdragon, 8xx, предназначена для самых эффективных моделей, которые идеально подходят для мультимедийных развлечений и работы в тяжелых программах.
Процессоры Kirin
Они производятся китайской компанией HiSilicon, которая принадлежит компании Huawei. По этой причине телефоны этого бренда, как правило, оснащены чипами Kirin. Большинство моделей Huawei с 2019 года имеют 8-ядерный процессор Kirin 710 с частотой до 2,2 ГГц.
Самые эффективные телефоны Huawei, такие как Huawei P30 и Huawei P30 Pro, оснащены Kirin 980. Это первый мобильный процессор, изготовленный по технологии 7 нм и основан на трехуровневой архитектуре. Чип состоит из двух ядер 2,6 ГГц, двух ядер 1,92 ГГц и четырех ядер 1,8 ГГц. Механизм Flex-Scheduling регулирует работу процессора, что позволяет снизить энергопотребление и продлить срок службы батареи.
Последний флагман этого бренда, Huawei P40 Pro, оснащен еще более эффективным 8-ядерным чипом Kirin 990 (2 x 2,86 ГГц + 2 x 2,36 ГГц + 4 x 1,95 ГГц), адаптированным для поддержки нового стандарта связи 5G. Двойной чип NPU, поддерживающий искусственный интеллект, основан на архитектуре Da Vinci, который обеспечивает огромную мощность при оптимальном энергопотреблении.
Процессоры Bionic
Телефоны с логотипом Apple оснащены процессорами Bionic. Однако гигант не раскрывает официальных данных о тактовой частоте своих компонентов. Тем не менее, многие тесты показывают, что чипы Apple являются лучшими на мобильном рынке. Все версии новейших iPhone оснащены Apple A13 Bionic.
Контрольные тесты показали, что возможности этого процессора превосходят возможности большинства других производителей, в том числе благодаря 64-битной архитектуре и отличной аппаратной оптимизации, а также оптимизации операционной системы. Кроме того, усовершенствованная обучающая система Neural Engine ускоряет работу телефона до 20% и снижает потребление энергии до 15%.
Процессоры Samsung
Samsung иногда использует чипы Snapdragon в своих смартфонах, но чаще чипы собственного производства под названием Exynos. Во всех трех версиях новейшего флагмана Samsung Galaxy S20, Galaxy S20 + и Galaxy S20 + Ultra были установлены последние модели процессора — Exynos 990 с максимальной частотой 2,7 ГГц.
8-ядерный процессор, поддерживаемый искусственным интеллектом, был адаптирован для поддержки стандарта 5G, который в скором времени заменит 4G. Чип также поддерживает матрицу высокого разрешения 108 Мп и позволяет записывать видео 4K (со скоростью 120 к/с) и 8K (30 к/с).
Какой процессор выбрать?
На этот вопрос нет четкого ответа. Телефон с мощным чипом (частотой выше 2,4 ГГц) — это лучшее решение для людей, которые планируют использовать его для игр, просмотра фильмов и сериалов в высоком качестве, графических приложений, с использованием дополненной реальности, фотографий высокого разрешения и 4K/8K видео.
Но стоит помнить, что процессор — это еще не все. Перед покупкой следует обратить внимание на другие важные параметры — особенно на объем оперативной памяти, которая оказывает огромное влияние на работу телефона. В этом случае рекомендуется присмотреть устройства с памятью 12 ГБ, предназначенную для самых требовательных пользователей.
Для тех, кому нужен телефон для работы в интернете и использования самых популярных приложений, процессора средней мощности будет вполне достаточно.
На видео: ОБЗОР ВСЕХ МОБИЛЬНЫХ ПРОЦЕССОРОВ! – КАКОЙ ЛУЧШЕ?
Источник