описание
Навыки: Разработка программного обеспечения, C. Квалификация: Senior. Специализации: Десктоп разработчик.
**О проекте**
KasperskyOS – защищенная микроядерная операционная система. Это не очередной дистрибутив Linux, а собственная разработка, способная успешно конкурировать на международных рынках. Заложенный в KasperskyOS принцип кибериммунности позволяет разрабатывать безопасные решения из потенциально небезопасных компонентов.
**Об отделе**
Разработкой KasperskyOS занимается отдел Platform, состоящий из нескольких групп, которые отвечают за микроядро ОС, драйверы, системные компоненты, подсистему безопасности, средства виртуализации, а также обеспечивают непрерывный контроль качества разработки. Сейчас у команды много новых, интересных и сложных задач, так что она продолжает расти.
**О команде**
В команде разработки системных компонентов группа Networking отвечает за поддержку сетевого стека, всех компонентов для работы с сетью (DHCP, DNS, TLS и др.), а также других connectivity-стеков (Bluetooth, GPS, GSM). Также, поскольку мы находимся в рамках общей команды Components, бывают и задачи, связанные со смежными группами.
**Задачи группы**
В команде Platform группа разработки компонентов отвечает за:
- Инструменты разработки (GCC/Clang, Binutils, Qemu и т.д.);
- Базовые компоненты KasperskyOS (libc, поддержка POSIX);
- Поддержку файловых систем и систем хранения данных;
- Поддержку сетевых стеков и средств коммуникации между устройствами;
- Средства управления приложениями;
- Графическую и аудио подсистемы;
- Поддержку различных фреймворков и системных служб.
**Ваши задачи**
- Поддержка и развитие сетевого стека KasperskyOS;
- Проектирование и разработка компонентов и системных сервисов для работы с сетью;
- Разработка и портирование других connectivity-стеков (Bluetooth, GPS, GSM и др.);
- Портирование open source программного обеспечения на KasperskyOS.
**Что требуется от кандидата**
- Отличное знание языка программирования С;
- Знание базовых принципов построения современных операционных систем;
- Опыт многопоточного программирования;
- Знание классических алгоритмов и структур данных;
- Знание инструментов разработки в Unix системах (Linux, BSD и пр.);
- Опыт работы в команде, знакомство с процессами Code Review, CI/CD.
**Желательно**
- Хорошее знание принципов работы компьютерных сетей и основных сетевых протоколов;
- Понимание организации и работы сетевого стека ОС;
- Опыт работы над сетевым стеком и компонентами для работы с сетью, в Linux или других ОС;
- Знание стандарта протокола TLS и опыт разработки приложений с поддержкой TLS;
- Знание стандартов connectivity-протоколов (Bluetooth, GPS, GSM и др.) и опыт работы с ними;
- Опыт кросплатформенной разработки;
- Хорошее знание POSIX;
- Знакомство с архитектурой операционных систем, внутренним устройством ядра ОС (управление памятью, межпроцессное взаимодействие, планирование задач, VFS);
- Знание внутреннего устройства libc;
- Знание языка assembler по крайней мере для одной из архитектур (x86, ARM) на уровне, достаточном, для исследования объектного файла.