Разработчик (группа разработки компонентов, команда Core)
Требования
Местоположение и тип занятости
Компания
Описание вакансии
Условия работы
О проекте
KasperskyOS – защищенная микроядерная операционная система. Это не очередной дистрибутив Linux, а собственная разработка, способная успешно конкурировать на международных рынках. Заложенный в KasperskyOS принцип кибериммунности позволяет разрабатывать безопасные решения из потенциально небезопасных компонентов.
Об отделе
Разработкой KasperskyOS занимается отдел Secure Platform Development (SPD), состоящий из нескольких групп, которые отвечают за микроядро ОС, драйверы, системные компоненты, подсистему безопасности, средства виртуализации, а также обеспечивают непрерывный контроль качества разработки. Сейчас у команды много новых, интересных и сложных задач, так что она продолжает расти.
Задачи группы
В команде SPD группа разработки компонентов отвечает за:
- Инструменты разработки (GCC/Clang, Binutils, Qemu и т.д.);
- Базовые компоненты KasperskyOS (libc, поддержка POSIX);
- Поддержку файловых систем и систем хранения данных;
- Поддержку сетевых стеков и средств коммуникации между устройствами;
- Средства управления приложениями;
- Графическую и аудио подсистемы;
- Поддержку различных фреймворков и системных служб;
О команде
В группе разработки системных компонент команда Core отвечает за поддержку тулчейна (gcc/clang, binutils), а также за разработку и поддержку различных технологий повышения надежности кода (статический, динамический анализ, фаззинг тестирование). Кроме того, поскольку мы находимся в рамках общей команды Components, бывают и задачи, связанные со смежными группами
Ваши задачи
- Поддержка и портирование GCC, clang, binutils;
- Поддержка и развитие технологий статического и динамического анализа кода;
- Поддержка и развитие технологий получения Code Coverage и фаззинг тестирования;
- Поддержка и развитие технологий hardening для повышения безопасности запускаемых приложений;
Что требуется от кандидата
- Отличное знание языка программирования С/C++;
- Знание базовых принципов построения современных операционных систем;
- Знание инструментов разработки в Unix системах (Linux, BSD и пр.);
- Опыт работы в команде, знакомство с процессами Code Review, CI/CD;
Желательно
- Опыт кросплатформенной разработки;
- Хорошее знание POSIX;
- Знакомство с архитектурой операционных систем, внутреннего устройства ядра ОС (управление памятью, межпроцессное взаимодействие, планирование задач, VFS);
- Знание внутреннего устройства libc
- знание языка assembler по крайней мере для одной из архитектур (x86, ARM) на уровне, достаточном, для исследования объектного файла;
- Знакомство с устройством GNU/clang/LLVM тулчейнов;
- Знание форматов ELF, PE;