О проекте:
Отдел развития архитектуры операционной системы отвечает за формирование технического видения для микроядерной ОС Лаборатории Касперского. Мы определяем, как должна работать современная ОС общего назначения, чтобы эффективно конкурировать с продуктами крупных компаний на мировом рынке.
Отдел владеет процессом архитектурного ревью и осуществляет архитектурный надзор, выравнивая архитектуру компонентов системы под стратегические цели бизнеса, осуществляет арбитраж при принятии трудных решений.
Мы работаем над моделью безопасности будущей KasperskyOS, переориентированной на сценарии общего назначения: мобильные устройства, рабочие станции. Это серьезная переработка, затрагивающая практически каждый системный компонент, ведь не так давно система ориентировалась преимущественно на встраиваемое применение, где возможна статическая конфигурация политик безопасности. В столь широкой переработке системы важно учитывать аспект производительности, который вступает в техническое противоречие с безопасностью.
Для успешной конкуренции на рынке операционных систем критически важно добиваться высоких показателей производительности в типовых пользовательских сценариях. Сегодня это один из фокусов проекта KasperskyOS и нашего отдела. Нам предстоит трансформировать процессы разработки KasperskyOS, чтобы уделять производительности значительно больше внимания: отслеживать ключевые метрики производительности релизов, ставить конкретные цели по производительности подсистем, компонентов и приложений, вести прицельные работы по их оптимизации.
В нашем отделе работают архитекторы ПО и исследователи, специализирующиеся в области информационной безопасности и формальных методов.
Чем предстоит заниматься:
- Разработкой методологии по улучшению производительности операционной системы общего назначения;
- Выработкой ключевых метрик производительности;
- Выполнением и координированием проектов по улучшению производительности сценариев использования системы, её подсистем и копонентов;
- Архитектурным надзором с фокусом на производительности и энергопотреблении.
Требования: - Способность выстроить методологию систематического улучшения производительности для большого проекта (операционная система общего назначения);
- Способность сформулировать ключевые метрики производительности, нефункциональные требования относительно производительности конкретных подсистем и компонентов;
- Понимание типовых причин просадки производительности, знание тактик оптимизации производительности;
- Опыт оптимизации производительности системного программного обеспечения;
- Опыт использования профилировщиков, счетчиков производительности, трейсеров, отладчиков и других инструментальных средств, позволяющих находить код, нуждающийся в оптимизации;
- Способность разработать недостающий инструментарий с нуля;
- Глубокое понимание и опыт использования многопоточного программирования, примитивов синхронизации, барьеров памяти, lockless-алгоритмов, SIMD-оптимизаций;
- Глубокое понимание архитектуры современных операционных систем и системного программного обеспечения;
- Понимание основ архитектуры вычислительных систем: иерархия памяти, разделение на пространство ядра и пространство пользователя, виртуальная память, механизмы когеррентности кэшей;
- Знание типовых алгоритмов и структур данных, навык асимптотического анализа алгоритмов;
- Хорошее знание языков программирования C и C++;
- Базовое знание ассемблера для armv8 или x86_64;
- Базовое владение языком Python 3.x;
- Опыт работы в GNU/Linux, владение POSIX shell и типовыми инструментами командной строки, способность настраивать и поддерживать Linux-систему в рабочих сценариях;
- Понимание принципов работы компиляторов и линкеров, оптимизаций на уровне компилятора, ABI;
- Знание типовых сетевых протоколов, модели OSI;
- Аналитический склад ума, внимание к деталям, самостоятельность;
- Способность грамотно формулировать мысли на письме;
- Умение читать и писать технические тексты на английском языке.
Желательно: - Знание устройства современных микроядер: seL4, NOVA, Fiasco, Zircon, Managarm;
- Знакомство с архитектурой ОС на базе микроядер, например Sculpt OS (Genode OS Framework), Fuchsia;
- Знание архитектуры современных мобильных ОС: iOS, Android, Tizen, Sailfish OS/ОС Аврора, Chrome OS;
- Знание основ информационной безопасности;
- Базовые знания в криптографии;
- Понимание причин типовых уязвимостей в программном обеспечении и способов их митигации;
- Знакомство с языками Rust, Dart, Haskell.