Системное программирование

От железа и ОС — к производительному коду

30 июля

3 месяца

Онлайн

Для кого этот курс?

  • Разработчики на системных языках (C, С++, Rust), желающие расширить свои знания
  • Backend-разработчики, которые планируют или работают с высокопроизводительными системами
  • Архитекторы и тимлиды, которым необходимо проектировать производительные компоненты и проводить разбор инцидентов/узких мест

Необходимые знания

  • Опыт программирования на C/C++
  • Знания структур данных

Чему научится студент на курсе?

  • Понимать, как код исполняется от железа к ОС: CPU/регистры, иерархия памяти и кэши, стек/куча, виртуальная память (MMU/TLB)
  • Разбираться, как устроен исполняемый файл и загрузка: статическая/динамическая линковка, анатомия ELF
  • Понимать устройство ядра как менеджера ресурсов: системные вызовы, прерывания, page fault, copy-on-write, процессы/потоки и планирование
  • Писать системный код на уровне API ОС: управление процессами, низкоуровневый I/O, управление памятью (brk/sbrk, mmap), многопоточность и синхронизация (pthread, mutex, semaphore, condition variables)
  • Работать с IPC: сигналы, пайпы/FIFO, shared memory (shm_open + mmap) и принципы корректной синхронизации между процессами
  • Отлаживать и профилировать системный/многопоточный код: strace, gdb, valgrind, AddressSanitizer/ThreadSanitizer

Почему стоит освоить?

 
Курс позволит закрыть разрыв между написанием кода и пониманием почему он не работает или тормозит на уровне ОС и железа. Часто эти знания критично необходимы для собеседований и первых задач в системной/инфраструктурной разработке.
 
Вы сможете на практике разобраться как устроена ОС: процессы/потоки, память, IPC. Также, в программу курса включен блок про отладку и профилирование.

Процесс обучения

Занятия в OTUS — это не заранее отснятый материал. Вебинары проходят в режиме реального времени, где преподаватели-практики рассказывают об актуальных кейсах и инструментах, которые нужны им в работе сейчас. Вы сможете активно участвовать голосом, практиковаться, задавать вопросы и получать обратную связь. Такой формат дает реальный результат. 

А если вы не смогли посетить занятие в реальном времени, то сможете посмотреть его в записи и задать вопрос преподавателю в закрытом чате.

Портфолио

Индивидуальная разработка итоговой проектной работы

Обучайтесь у экспертов


Программу ведут действующие специалисты

Перспективы

 

Получите знания, которые помогут повысить вашу востребованность и доход

Партнеры

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

  • Карьерные мероприятия в сообществе
    Публичный разбор резюме
    Публичное прохождение собеседования и воркшопы
  • Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров
* Информация в этом разделе не предназначена для корпоративного обучения
Формат обучения

Интерактивные вебинары


2 онлайн-трансляции по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда

Практика

 

Домашние задания + проектная работа, для усиления вашего портфолио и компетенций

Активное комьюнити

Живое общение с преподавателями на вебинарах, переписки в чате и развёрнутые ответы при проверке ДЗ

Программа

Аппаратный фундамент и управление памятью

Изучение что такое "железо", физические ограничения и аппаратные кэши. Основы для понимания ОС.

Тема 1: Архитектура CPU и физическая память

Тема 2: Иерархия памяти и кэширование данных

Тема 3: Стек и Куча на уровне процессора

Тема 4: Аппаратная виртуализация памяти (MMU и TLB)

Тема 5: Линковка и Анатомия бинарника (практика)

Операционная система как менеджер

Абстракции ядра, изоляция программ и управление аппаратной магией.

Тема 1: Пространство ядра и Системные вызовы

Тема 2: Как ОС управляет памятью (Page Faults)

Тема 3: Концепция Процесса и шедулинг

Тема 4: Концепция Потока (Thread)

Тема 5: Трассировка системных вызовов (практика)

Системное программирование и IPC

Написание кода, управляющий процессами, потоками и памятью через API операционной системы.

Тема 1: Управление процессами в коде

Тема 2: Низкоуровневый ввод-вывод (I/O)

Тема 3: Системное управление памятью

Тема 4: Многопоточность на практике

Тема 5: Конкурентность и Синхронизация

Тема 6: Проблемы синхронизации и Spin-locks

Тема 7: IPC: Сигналы ОС

Тема 8: IPC: Пайпы (Pipes)

Тема 9: IPC: Разделяемая память (Shared Memory)

Тема 10: Отладка и профилирование системного кода (практика)

Проектная работа

Тема 1: Консультация по проектам и домашним заданиям

Тема 2: Защита проектных работ

Тема 3: Подведение итогов курса

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

Выпускной проект

 
Тема проектной работы: "Микро-Docker: разработка собственной примитивной системы контейнеризации"
 
Студент реализует минимальную систему контейнеризации, которая запускает процесс в изолированном окружении и управляет его жизненным циклом. В результате проектной работы должен быть работающий прототип микро-контейнера и краткая документация (архитектура, ограничения, инструкция запуска).

Преподаватели

Руководитель курса

Артём Токарев

Lead Rust Developer

Сергей Кольцов

Владимир Щерба

Фото в обработке

Николай Макаров

Фото в обработке

Петр Усольцев

старший инженер-программист

ООО "Стайл Телеком"

Егор Мищерин

Разработчик С++

NDA

Александр Першин

Ольга Плисенко

Зав. сектором разработки

ЦИГИТ АГУ

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

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

Продвинутое использование отладчика GDB
Владимир Щерба
На открытом уроке рассмотрим:
- Кратко вспомним базовое использование GDB;
- Написание сценариев GDB;
- Условные точки останова и точки наблюдения;
- Дампы памяти и отладка по сети.

После занятия вы будете знать:
- Как отлаживать программы на другой машине;
- Как использовать возможности автоматизации отладчика для поимки плавающих багов;
- Как отладчик работает "под капотом".
...
8 июля в 17:00
Открытый вебинар
malloc — кто же ты на самом деле?
Артём Токарев
На открытом уроке рассмотрим:
- Как работает malloc и какую роль он играет в управлении памятью в системном программировании;
- Что происходит при выделении памяти: от вызова функции до взаимодействия с ОС и аллокатором;
- Какие типичные ошибки возникают при работе с динамической памятью и к каким последствиям они приводят;
- Как понимать поведение программ на уровне памяти и писать более надежный и предсказуемый код.

После занятия вы будете знать:
- Как устроено динамическое выделение памяти в программах на низком уровне;
- Что именно делает malloc и почему его работа не сводится к "просто выделить память";
- Как более осознанно использовать механизмы управления памятью в системной разработке.
...
23 июля в 17:00
Открытый вебинар

Этот курс может оплатить ваш работодатель

Обучайтесь за счёт работодателя или разделите оплату 50/50
  • Подробно расскажем об интересующем вас курсе
  • Объясним, как договориться с работодателем
  • Сообщим стоимость обучения и варианты оплаты
  • Ответим на вопросы
  • Предоставим шаблон договора и счёт на оплату

Подтверждение знаний и навыков

OTUS осуществляет лицензированную образовательную деятельность.

Вы получите сертификат о прохождении обучения, а также можете получить удостоверение о повышении квалификации.

После обучения:

  • Удостоверение о повышении квалификации: если вы успешно защитили выпускной проект и готовы предоставить копию документа о высшем или среднем профессиональном образовании

  • Доступ к учебным материалам курса

  • Ваш личный проект, который поможет проходить собеседования

Частые вопросы

Смогу ли я совмещать учебу с работой?
Да. Программа курса рассчитана на студентов, у которых мало времени. Лекции проводим дважды в неделю, домашние задания — не чаще 1 раза в неделю.
Обязательно ли выполнять и защищать выпускной проект?
Для получения сертификата OTUS и УПК (удостоверение повышения квалификации государственного образца) необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем. Для получения УПК также понадобится предъявить документ об образовании.
Обязательно ли выполнять все домашние задания?
Да, если хотите хорошо отточить навыки. На курсе будут практические домашние задания, их выполнение занимает примерно 2-3 часа.
Что, если в середине курса я не смогу продолжать обучение?
Вы можете бесплатно перейти в другую группу. Но только один раз.
Я могу вернуть деньги?
Да, мы можем вернуть деньги за то время курса, которое вы ещё не успели отучиться. Например, если курс длится пять месяцев, а вы отучились один, мы вернём деньги за оставшиеся четыре месяца за вычетом фактически понесенных расходов.
Может ли мой работодатель оплатить курс?
Да. Когда свяжетесь с нашим менеджером, уточните, что оплачивать курс будет ваш работодатель.
Остались вопросы?
Оставляйте заявку и задавайте вопросы менеджеру, команда курса с ним на связи и постарается дать вам исчерпывающую информацию.