Москва, Ленинградский проспект, 36с41
Метро: ДинамоМы разрабатываем системное ПО, работающее с блочной подсистемой Linux: семейство модулей ядра и системные утилиты вокруг них. Один из ключевых модулей отслеживает изменённые блоки и делает copy-on-write снапшоты дисков - это фундамент для быстрых инкрементальных бэкапов. Всё это работает в проде на широком диапазоне версий ядра.
Ищем специалиста с реальным низкоуровневым бэкграундом. Мы не ждём готового kernel-разработчика - kernel-специфику даём внутри, но системный, POSIX-уровневый фундамент нужен на входе.
Чем предстоит заниматься:
- Разработкой и сопровождением модулей ядра Linux, работающих с блочной подсистемой - от перехвата блочного ввода-вывода до отслеживания изменённых блоков и copy-on-write снапшотов дисков;
- Поддержкой широкого диапазона версий ядра - от старых до самых свежих: разбором изменений во внутренних API и адаптацией кода под них;
- Поиском и устранением багов в низкоуровневом C-коде, включая работу с состояниями снапшотов, механикой COW-файлов и групповыми (атомарными) операциями над несколькими устройствами;
- Написанием и расширением тестов - интеграционных и юнит-тестов на Python; - Разработкой и сопровождением системных утилит и userspace-обвязки: разделяемых/статических библиотек, CLI-инструментов и IOCTL-интерфейсов между ядром и пользовательским пространством;
- Чтением и рефакторингом чужого объёмного C-кода - и уверенной работой в нём без страха.
Что ждём от тебя:
- Знание C на уровне «могу написать и отладить нетривиальную программу»;
- Опыт системного программирования - писал не только прикладной код, но и работал с системными вызовами: файлы и дескрипторы, процессы, сигналы, потоки, IPC, память;
- Знание POSIX API и модели ОС: чем read/write/ioctl/mmap отличаются по семантике, как устроены блокирующий/неблокирующий ввод-вывод, как ведут себя дескрипторы и права;
- Понимание внутреннего устройства Linux: файловые системы, блочные устройства, страничный кэш;
- Комфортная работа в Linux CLI: make, git, loop-девайсы, mount, LVM;
- Готовность лезть в исходники ядра и документацию, а не ждать готовых ответов.
Будет плюсом:
- Опыт с модулями ядра или драйверами (хотя бы учебными);
- Понимание устройства блочного уровня Linux;
- Пет-проекты на C/C++/Rust, участие в опенсорсе, CTF/low-level.
Что даём:
- Реальные продукты в проде и наставника с ревью кода, а не задачи «в стол»;
- Редкую и дорогую на рынке экспертизу в kernel/storage, таких инженеров единицы;
- Понятную траекторию роста: junior → разработчик, отвечающий за свой участок;
- Возможность удаленной работы (преимущественно гибридный формат работы);
- ДМС (после испытательного срока);
- Работа в БЦ класса «А» в шаговой доступности от м. Петровский парк и м. Динамо.
Москва
Не указана
Научно-Производственное Объединение Кайсант
Москва
от 150000 RUR
Научно-Производственное Объединение Кайсант
Москва
от 140000 RUR