Отдел развития архитектуры операционной системы отвечает за формирование технического видения для микроядерной ОС Лаборатории Касперского. Мы определяем, как должна работать современная ОС общего назначения, чтобы эффективно конкурировать с продуктами крупных компаний на мировом рынке.
Отдел владеет процессом архитектурного ревью и осуществляет архитектурный надзор, выравнивая архитектуру компонентов системы под стратегические цели бизнеса, осуществляет арбитраж при принятии трудных решений.
Мы работаем над моделью безопасности будущей KasperskyOS, переориентированной на сценарии общего назначения: мобильные устройства, рабочие станции. Это серьезная переработка, затрагивающая практически каждый системный компонент, ведь не так давно система ориентировалась преимущественно на встраиваемое применение, где возможна статическая конфигурация политик безопасности. В столь широкой переработке системы важно учитывать аспекты производительности и энергоэффективности, которые вступают в техническое противоречие с безопасностью.
Для успешной конкуренции на рынке операционных систем критически важно добиваться высоких показателей производительности в типовых пользовательских сценариях. Сегодня это один из фокусов проекта KasperskyOS и нашего отдела. Нам предстоит трансформировать процессы разработки KasperskyOS, чтобы уделять производительности значительно больше внимания: отслеживать ключевые метрики производительности релизов, ставить конкретные цели по производительности подсистем, компонентов и приложений, вести прицельные работы по их оптимизации.
В нашем отделе работают архитекторы ПО и исследователи, специализирующиеся в области информационной безопасности и формальных методов.
Кого ищем
Ищем программиста с опытом в разработке ядер операционных систем, драйверов и системных библиотек, готового работать над исследовательскими задачами: прототипирование и анализ новых механизмов микроядра и подсистемы безопасности, разработка механизмов, улучшающих производительность, утилизацию ресурсов и энергопотребление, исследование производительности операционной системы и её компонентов, создание инструментария для анализа потребления ресурсов и проблем с производительностью.
Нам нужен инженер со склонностью к исследовательской проектной работе, ведущей в первую очередь к получению нового знания, а уже во вторую к продуктизации. Придется разбираться с научными статьями в области разработки операционных систем, пробовать изученное на практике, отлаживать и профилировать код, искать решение сложных технических противоречий (например, должно быть быстро и безопасно).
Формат работы будет отличаться от типичного продуктового "нужно сделать компонент, который зарелизим в июне", потребуется проводить исследования, которые могут оказать значительное влияние на систему на длительной дистанции. Вместо ответа на вопрос, как подсистема ОС будет решать конкретную задачу в этом году, нужно понять, как концептуально трансформировать систему, чтобы она через 2-5 лет лучше решала задачи бизнеса, не растеряв при этом самобытности.
Обязанности
- Исследование производительности компонентов операционной системы, их оптимизация
- Разработка инструментов профилирования, анализа производительности и потребления ресурсов
- Проверка гипотез архитекторов, прототипирование
- Исследования с целью развития базовых механизмов операционной системы: изоляции компартментов, межпроцессного взаимодействия, синхронизации, механизмов управления доступом, харденингов
Требования:
- Глубокое понимание архитектуры современных операционных систем и системного программного обеспечения
- Понимание основ архитектуры вычислительных систем: иерархия пямяти, разделение на пространство ядра и пространство пользователя, виртуальная память, механизмы когеррентности кэшей
- Знание типовых алгоритмов и структур данных, навык асимптотического анализа алгоритмов
- Понимание типовых причин просадки производительности, знание тактик оптимизации производительности
- Хорошее знание языков программирования 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