Мы разрабатываем компоненты системного и прикладного уровня на базе KasperskyOS и ориентированы на развитие свободного программного обеспечения с открытыми исходными кодами. KasperskyOS – защищенная микроядерная операционная система. Это не очередной дистрибутив Linux, а собственная разработка - проприетарная частично POSIX-совместимая микроядерная операционная система,
Нам необходим разработчик, который может и хочет участвовать в решении задач портирования на новые аппаратные платформы, разработки драйверов и системных сервисов.
В обязанности члена команды входит:
- Проектирование, разработка и портирование сервисов и модулей для KasperskyOS;
- Прототипирование решений;
- Подготовка набора тестов для верификации разработанных решений;
- Участие в разработке и ревью архитектуры;
- Участие в анализе требований;
- Участие в подготовке проектной документации;
- Участие в оценке трудоёмкости задач;
- Peer code review.
Чтобы быть успешным в данной роли необходимо:
- Отличное знание языка программирования С;
- Опыт низкоуровневой системной разработки под разные архитектуры процессоров (x86, ARM, MIPS, RISC-V);
- Опыт разработки ПО для встраиваемых систем на C/C++;
- Знание архитектур современных процессоров;
- Знание принципов построения современных операционных систем;
- Знакомство с архитектурой микроядерных операционных систем;
- Понимание принципов работы интерфейсов SPI, USB, RS-232, PCI-E, etc;
- Опыт многопоточного программирования с использованием примитивов синхронизации ОС;
- Знание базовых алгоритмов и структур данных;
- Опыт использования средств разработки ПО под Linux (GCC, Make, CMake, GDB, git, etc);
- Понимание методологий Agile, желание их применять;
- Технический английский – свободное чтение документации.
Крайне пригодится:
- Опыт коммерческой разработки на C/C++;
- Участие в проектах разработки драйверов или модулей ядра операционных систем;
- Assembler для одной из архитектур (x86, ARM, MIPS, RICS-V);
- Участие в проектах разработки систем управления памятью, ресурсами, задачами на уровне ядра;
- Знание методологических подходов проектирования программного обеспечения.