← Все новости
[Перевод] Структуры данных на практике. Глава 17: Структуры данных загрузчиков

[Перевод] Структуры данных на практике. Глава 17: Структуры данных загрузчиков

Наш загрузчик оказался слишком медленным. Требование было чётким: загружаться менее чем за 500 миллисекунд. Показатели оставались не менее чёткими: 720 миллисекунд. Мы отставали от нужного значения на 44%.Это требование не было «мягким». Загрузчик должен был работать в промышленном контроллере, обязанном реагировать вскоре после включения питания. Каждая секунда времени загрузки — это потерянная продуктивность. В спецификации к изделию был указан максимум в 500 мс. Мы обязаны были их обеспечить.Задача загрузчика была простой:1. Инициализировать оборудование (UART, SPI, DDR-контроллер)2. Загрузить ядро из флэш-памяти3. Спарсить дерево устройств4. Перейти ко точке входа ядраРеализация казалась логичной: стандартные структуры данных из библиотеки C. Проблема выявилась при профилировании: 45% времени загрузки тратилось на malloc/free! В загрузчике всего с 64 КБ ОЗУ динамическое распределение роняло производительность. Читать далее