H
HireSeeker
лаборатория касперского

Research Developer, KasperskyOS (Architecture Office)

лаборатория касперского · 17 июн.

Зарплата не указана

Отдел развития архитектуры операционной системы отвечает за формирование технического видения для микроядерной ОС Лаборатории Касперского. Мы определяем, как должна работать современная ОС общего назначения, чтобы эффективно конкурировать с продуктами крупных компаний на мировом рынке.

Отдел владеет процессом архитектурного ревью и осуществляет архитектурный надзор, выравнивая архитектуру компонентов системы под стратегические цели бизнеса, осуществляет арбитраж при принятии трудных решений.

Мы работаем над моделью безопасности будущей 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