Research Developer, KasperskyOS (Architecture Office)
Отдел развития архитектуры операционной системы отвечает за формирование технического видения для микроядерной ОС Лаборатории Касперского. Мы определяем, как должна работать современная ОС общего назначения, чтобы эффективно конкурировать с продуктами крупных компаний на мировом рынке.
Отдел владеет процессом архитектурного ревью и осуществляет архитектурный надзор, выравнивая архитектуру компонентов системы под стратегические цели бизнеса, осуществляет арбитраж при принятии трудных решений.
Мы работаем над моделью безопасности будущей 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
Apply for a job
Fields marked with * are required