System Level Meetup | Москва
МЦК, станция «ЗИЛ»
ждем тебя на следующем!
О митапе
22 ноября мы соберемся в Москве, чтобы подробнее изучить C++ и ядро Linux.
Офлайн-участников также ждет демозона с «железом» YADRO для ЦОД и телеком-операторов, технические интерактивы и подарки от компании.
Программа
Направление:
Открытие
Вы узнаете о компании-организаторе, программно-аппаратных комплексах YADRO, их важности для цифровизации экономики, а также о роли и задачах разработчиков на С++ в этих процессах.
Открытие
Поделимся планами на дальнейшие митапы Linux kernel. Также расскажем о компании YADRO, организующей их, о программно-аппаратных комплексах YADRO, связанных ролях и задачах разработчиков.
Корутинные оптимизации в компиляторах
Вы узнаете, что компилятор может сделать с корутиной. Мы кратко обсудим необходимые для понимания детали корутин в стандарте C++ и покажем, как теория стандарта ложится на компиляторную практику.
RISC-V Supervisor Binary Interface: история и перспективы развития
RISC-V SBI (Supervisor Binary Interface) — интерфейс для среды ядра операционной системы, позволяющий переносить программное обеспечение режима супервизора на все реализации железа RISC-V, определяя абстракцию для специфической функциональности платформы (или гипервизора). В докладе я расскажу об SBI, его истории развития и поддержке со стороны ОС, а также о том, почему сегодня SBI понемногу начинает терять свое предназначение.
Модули C++20 в существующий проект: легкая прогулка или прыжок в бездну?
Мы столкнулись с проблемой медленной сборки проектов и рассматривали Precompiled Headers как возможное решение. Однако отсутствие гарантий ускорения компиляции и поддержки со стороны стандарта заставило нас обратить внимание на модули C++20, которые представились нам как «усовершенствованные PCH» — стандартизированные и более надежные.
В докладе расскажу о стратегии внедрения и первых проблемах. Поговорим о практических сложностях: отказе от import std и последствиях. Рассмотрим реорганизацию системы сборки по концепции «метацелей». В конце доклада — выводы и дорожная карта: стоит ли овчинка выделки?
Патчить ядро Linux — просто
В работе с ядром я хотел быстро проверять результат вносимых изменений. Для этого дополнительно погрузился в Linux: разобрался с созданием образа виртуальной машины с помощью команд, изучил процесс конфигурации и сборки ядра Linux, в том числе с подменой ядра в Debian. В докладе расскажу о своем опыте патчинга ядра и покажу, как автоматизировать процесс.
Перерыв
LRU-кеш: от решения с собеседования до продакшн-уровня
Задача «Напишите LRU-кеш» часто встречается на собеседованиях в разряде сложных. Когда мне на практике понадобилось реализовать такой кеш, я просто сделал реализацию с собеседования. Но оказалось, что в конкурентной среде она плохо работает при высоком contention. В докладе я покажу путь, который прошел от своей стартовой реализации до продакшн-варианта, применяемого в СУБД Pangolin.
USB — описание физического протокола и программной модели в ядре Linux
При всей своей популярности и распространенности протокол USB редко описывают в учебниках для разработчиков. В ходе доклада мы с вами изучим реализацию этого протокола и научимся писать драйверы устройств под Linux, использующих его.
Обед: еда, нетворкинг, а также стенды и квесты от YADRO
Дискуссия «AI-ассистенты в разработке на C++: панацея или опасный костыль?»
Спикеры обсудят недостатки и преимущества AI-ассистентов в разработке на «плюсах». Выявят сильные и слабые стороны ассистентов в создании ПО системного уровня. А также выяснят, как устроена интеграция нейропомощников в пайплайн разработки и реализации инженерных задач.
Дискуссия «Kernel vs User Space: где границы целесообразности?»
Разберем плюсы и минусы реализации функций в пространстве ядра и пользователя, определим границы их применения. Обсудим, когда выбор пространства обусловлен не только техническими, но и другими причинами.
Перерыв
Когда действительно нужны алгоритмы: опыт оптимизации KD-Tree
Алгоритмы — это не только про учебники и собеседования: в реальных сервисах поиск ближайших объектов требует глубоких инженерных оптимизаций KD-Tree. Покажу, как несколько продуманных изменений дали значительный прирост производительности на практике.
Доверенная среда исполнения: реализация в серверах, сценарии применения, новый ГОСТ
Построение безопасной вычислительной среды — сложная задача, и решать ее нужно комплексно. Усилий по предотвращению атаки может быть недостаточно, и тогда критически важно минимизировать последствия успешной атаки. Применение доверенной среды исполнения (ДСИ) позволяет реализовывать решения как для предотвращения атаки, так и для снижения ущерба. В докладе — все об особенностях реализации ДСИ на различных платформах, преимуществах решения (на примере системы контроля целостности ядра Linux) и необходимом наборе аппаратных элементов. Также я расскажу о проекте стандарта по доверенной среде исполнения, разрабатываемом в сотрудничестве с ведущими компаниями индустрии.
Перерыв
Анатомия чекеров в clang-tidy
Доклад посвящен устройству и созданию чекеров в статическом анализаторе clang-tidy. Я кратко расскажу об архитектуре clang-tidy и роли AST (Abstract Syntax Tree), а затем покажу, как превратить эти знания в инструмент поиска ошибок в вашем коде.
Универсальный хост: как одна ОС запускает все
Сегодня операционные системы стремятся стать универсальными платформами, способными работать с приложениями из «чужих» экосистем. Как это возможно?
В докладе мы рассмотрим проблему «зоопарка» приложений, предназначенных для разных ОС. Обсудим инструменты и «исторические» решения — двойную загрузку и тяжеловесные виртуализации. А в финале перейдем к решению в современных ОС, безопасному и эффективному.
Строки, строки, строки и initializer_list
Вернемся к основам — std::string_view и std::string. Разберемся, что такое нуль-терминированность строки и как с ней не напортачить H��t H�5�+. Поговорим о constinit: зачем он нужен и почему std::string с ним несовместим. Посмотрим, как создавать «бессмертные» constinit-строки и обойдем ограничения std::initializer_list.
Вечный IOCTL: вызовы, требующие помощи ядра
Мы рассмотрим, почему для полноценной эмуляции устройств с переиспользованием инструментов и библиотек необходим вызов IOCTL, как работает эта эмуляция в CUSE и какие ограничения имеет этот подход. Разберем, почему для полноценной работы с GPIO_V2_GET_LINE_IOCTL потребовалось создание внутриядерного драйвера GUSE.