Архитектор ПО/Software Architect (KasperskyOS)
О проекте:Отдел развития архитектуры операционной системы отвечает за формирование технического видения для микроядерной ОС Лаборатории Касперского. Мы определяем, как должна работать современная ОС общего назначения, чтобы эффективно конкурировать с продуктами крупных компаний на мировом рынке.
Отдел владеет процессом архитектурного ревью и осуществляет архитектурный надзор, выравнивая архитектуру компонентов системы под стратегические цели бизнеса, осуществляет арбитраж при принятии трудных решений.
Мы работаем над моделью безопасности будущей 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.