Я профилирую свое приложение, используя oprofile на ARM Cortex-A8, и замечаю много примеров с именем изображения «[vectors] (tgid: 20712 range: 0xffff0000-0xffff1000)»
oprofile сообщает, что это отвечает за 17% моего времени процесса, так что, надеюсь, кто-то может объяснить, что это такое. Я много искал и не могу найти объяснения.
Я думал, может быть, что-то делать с обработкой исключений?
Linux использует настройку «высокие векторы», которая помещает векторы входа исключения в 0xffff0000
— таким образом, все системные вызовы, прерывания, ошибки и т. д. будут проходить через эту страницу.
Однако, так как страница векторов должна присутствовать всегда, ядро ARM использует оставшееся впустую пространство на остальной части страницы, чтобы разместить некоторые доступные пользователю вспомогательные функции за несколько вещей, которые иначе было бы трудно реализовать переносимым способом. Ваш процесс (скорее всего, библиотеки нижнего уровня) также вполне может использовать их — поскольку обычное использование — просто вызывать их фиксированные адреса напрямую, вероятно, для них нет символов, которые нужно разрешить.