Prog Academy

MilTech · за підпискою

Системи реального часу

Не «швидко», а «вчасно»: планування задач, яке можна довести

  • 12 модулів
  • 25+ практичних завдань
  • Автоматична перевірка
  • Українською

Отримати доступ до курсу

Курс за підпискою · Навчання у власному темпі

Про курс

Що це за курс?

Контур стабілізації дрона мусить відпрацювати кожні 2.5 мс, навігація — кожні 20 мс, а телеметрія може трохи почекати. Система реального часу — це не найшвидша система, а та, про яку можна заздалегідь довести, що кожна задача встигне до свого дедлайну, і яка передбачувано поводиться, коли щось пішло не так: задача перевищила свій час, черга переповнилась, модуль перестав відповідати.

Такі системи стоять у польотних контролерах, у платах керування наземних роботів, у радіомодемах і камерах — скрізь, де пізня відповідь так само погана, як неправильна. Зазвичай ними керує RTOS (real-time operating system, операційна система реального часу): вона вирішує, яку з багатьох задач виконувати на одному процесорі в кожен момент.

У курсі ви рахуєте й симулюєте: скільки процесора забирають задачі, чи гарантовано вони встигнуть (тест Ліу–Лейленда і точний аналіз часу відгуку), як працюють планувальники RM (Rate Monotonic — пріоритет за періодом), DM (Deadline Monotonic — за дедлайном) і EDF (Earliest Deadline First — найраніший дедлайн першим), що таке інверсія пріоритетів і як її лікують, як виміряти джитер із логів, побудувати статичний розклад, контролювати пропуски дедлайнів, черги з обмеженням потоку (backpressure) і бюджети WCET (worst-case execution time — найгірший час виконання). Фінал — власний симулятор планувальника і звіт за трасою виконання.

Аудиторія

Для кого цей курс?

  • Embedded-розробник на C++

    Навчитеся доводити, що задачі встигнуть до дедлайну: тест Ліу–Лейленда, аналіз часу відгуку, RM і EDF.

  • Знаєте Python і C++, але не RTOS

    Задачу, планувальник, пріоритет і витіснення пояснюємо з нуля, а у фіналі пишете власний симулятор планувальника.

  • Шлях «MilTech Software Engineer»

    Розберете інверсію пріоритетів, джитер, черги з backpressure і бюджети WCET у сценаріях дрона й робота.

Спершу потрібна підготовка

Курс спирається на знання, позначені нижче як обов’язкові.

Потрібно знати

  • Обов'язково обидві мови

    Python на рівні безкоштовного курсу «Основи програмування на Python» (включно з уроками про списки, словники, sorted з ключем і класи) і C++ на рівні «Основи програмування на C++» (включно зі структурами, посиланнями і uint32_t) та курсу «C++ Advanced»: у C++-задачах трапляються масив, переданий покажчиком, вихідні структури через ->, ініціалізація = {}, рекурсія і std::sort з лямбдою — короткий приклад є в першому уроці

Варто знати

  • Математика

    Ділення, НСК/НСД і округлення вгору; усе інше пояснюємо.

    Детальніше

Не потрібно знати заздалегідь

  • Пояснюємо в курсі

    Що таке задача, планувальник, пріоритет, витіснення, дедлайн, RTOS.

    Детальніше

Результат

Що ви навчитеся робити

описувати задачі періодом, WCET і дедлайном, рахувати гіперперіод і утилізацію

перевіряти планованість достатніми тестами і точним аналізом часу відгуку з блокуваннями й джитером

симулювати витісняльні планувальники RM, DM, EDF і пояснювати, де і чому вони відрізняються

розпізнавати інверсію пріоритетів і реалізовувати протокол успадкування пріоритету

вимірювати джитер і пропуски активацій з логів, будувати циклічний розклад і контролювати перевищення

детектувати пропуски дедлайнів, втрату серцебиття, керувати чергами і бюджетами часу

Формат

Як влаштоване навчання?

12 модулів: модель задач і швидкі тести → планувальники і точний аналіз → ефекти реальних систем (спільні ресурси, джитер) → інженерні засоби (статичний розклад, контроль дедлайнів, черги, бюджети) → фінальний симулятор. У кожному модулі — теорія з розібраним прикладом і дві практичні задачі з автоматичною перевіркою на прихованих наборах задач: інші періоди, фази, рівні дедлайни, перевантаження. Задачі приблизно порівну на Python і C++17. Частина — «знайдіть помилку» в правдоподібному коді. П'ять тестів з поясненнями і дві практичні форми.

  • Теорія

    13 уроків з прикладами

  • Практика в браузері

    25+ завдань з автоматичною перевіркою

  • Тести

    5 тестів для самоперевірки

  • Власний темп

    Онлайн на my.prog.academy, без встановлення програм

AI-помічник

AI-помічник поруч під час навчання

На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.

  • Пояснить інакше

    Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.

  • Допоможе із завданням

    Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.

  • Знайде потрібну тему

    Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.

  • Продовжить розмову

    Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.

Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.

Програма

Програма курсу

12 модулів, 25+ практичних завдань з автоматичною перевіркою і 5 тестів. Відкрийте модуль, щоб побачити всі теми.

Модуль 1 — Задачі, періоди, дедлайни 2 уроки · 2 практики

Модель періодичної задачі: C, T, D, фаза; гіперперіод і перелік робіт

  • Теорія Вступ: коли «пізно» означає «неправильно»
  • Теорія Мова систем реального часу
  • Практика Таблиця задач польотного контролера
  • Практика Перелік робіт у вікні
Модуль 2 — Утилізація і тест Ліу–Лейленда 1 урок · 2 практики · 1 тест

Достатні тести планованості для RM: межа n(2^(1/n) − 1) і гіперболічна межа

  • Теорія Тести на утилізацію
  • Практика Тест Ліу–Лейленда
  • Практика Знайдіть помилку — гіперболічна межа
  • Тест Модель задач і утилізація
Модуль 3 — Симуляція планувальника RM 1 урок · 2 практики

Витісняльний планувальник з фіксованими пріоритетами крок за кроком: випуск, вибір, витіснення, пропуск

  • Теорія Дискретна симуляція планувальника
  • Практика Симулятор RM
  • Практика Знайдіть помилку — нічия в RM
Модуль 4 — EDF: найраніший дедлайн першим 1 урок · 2 практики

Динамічні пріоритети, оптимальність EDF на одному процесорі, порівняння з RM

  • Теорія EDF
  • Практика Вибір роботи в EDF
  • Практика RM проти EDF
Модуль 5 — Аналіз часу відгуку 1 урок · 2 практики · 1 тест

Точний тест для фіксованих пріоритетів: ітерація R = C + Σ⌈R/Tj⌉Cj, блокування і джитер

  • Теорія Response-time analysis
  • Практика Аналіз часу відгуку
  • Практика Блокування і джитер
  • Тест RM, EDF, аналіз відгуку
Модуль 6 — Інверсія пріоритетів і успадкування пріоритету 1 урок · 2 практики

Як спільний м'ютекс змушує найважливішу задачу чекати на середню і як це лікує протокол успадкування

  • Теорія Інверсія пріоритетів
  • Практика Успадкування пріоритету
  • Практика Знайдіть помилку — ланцюжок успадкування
Модуль 7 — Джитер з логів таймстемпів 1 урок · 2 практики · 1 тест

Ідеальна сітка активацій, відхилення, пропущені запуски; знакова різниця беззнакових часів

  • Теорія Джитер активацій
  • Практика Джитер з логу
  • Практика Знайдіть помилку — беззнаковий джитер
  • Тест Інверсія і джитер
Модуль 8 — Циклічний виконавець 1 урок · 3 практики

Статичний розклад без RTOS: вибір розміру рамки, таблиця рамок, перевищення часу в рамці

  • Теорія Cyclic executive
  • Практика Розмір рамки
  • Практика Перевищення часу в рамці
  • Практика Який планувальник обрати
Модуль 9 — Детекція пропуску дедлайну і watchdog 1 урок · 2 практики

(m, k)-firm контроль, серцебиття модулів, межі тайм-аутів і відновлення

  • Теорія Що робити, коли дедлайн пропущено
  • Практика (m, k)-firm монітор
  • Практика Знайдіть помилку — монітор серцебиття
Модуль 10 — Обмежені черги і backpressure 1 урок · 2 практики · 1 тест

Фіксовані черги між задачами: політики переповнення, затримка, XON/XOFF з гістерезисом

  • Теорія Черги між задачами
  • Практика Симуляція обмеженої черги
  • Практика XON/XOFF з гістерезисом
  • Тест Дедлайни, черги, гістерезис
Модуль 11 — Бюджети WCET 1 урок · 3 практики

Від вимірювань до бюджету: максимум, перцентиль, запас; контроль бюджету під час роботи

  • Теорія WCET і бюджети
  • Практика Бюджети з вимірювань
  • Практика Контроль бюджету часу
  • Практика Таблиця бюджетів
Модуль 12 — Фінал: симулятор планувальника 1 урок · 2 практики · 1 тест

Власний симулятор RM/DM/EDF з фазами і пропусками, звіт за трасою виконання

  • Теорія Від симулятора до звіту
  • Практика Симулятор RM / DM / EDF
  • Практика Звіт за трасою виконання
  • Тест Підсумковий тест: системи реального часу

Стек

Які технології використовуються?

  • C++
  • Python

Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.

Застосування

Де застосовуються ці знання?

  1. Польотні контролери і плати керування роботів
  2. Налаштування задач під RTOS
  3. Діагностика пропущених дедлайнів і джитера

Доступ

Як отримати доступ?

  1. Залиште заявку

    Заповніть коротку форму на цій сторінці.

  2. Завершіть реєстрацію в боті

    Після заявки оберіть Telegram або Viber — бот надішле подальші інструкції щодо доступу.

  3. Навчайтеся на платформі

    Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.

Контакт

Почніть навчання на платформі

Залиште контакти — надішлемо деталі доступу до курсу «Системи реального часу».

Наступні й суміжні курси

C++

C++ для embedded і MilTech

Прошивка мікроконтролерів на C++17: регістри, драйвери, переривання, CRC, ШІМ і watchdog на віртуальних платах.

20 модулів · 45+ практичних завдань

Часті питання про курс

Що це за курс?

«Системи реального часу» — онлайн-курс за підпискою на навчальній платформі Prog Academy. Не «швидко», а «вчасно»: планування задач, яке можна довести. Контур стабілізації дрона мусить відпрацювати кожні 2.5 мс, навігація — кожні 20 мс, а телеметрія може трохи почекати. Система реального часу — це не найшвидша система, а та, про яку можна заздалегідь довести, що кожна задача встигне до свого дедлайну, і яка передбачувано поводиться, коли щось пішло не так: задача перевищила свій час, черга переповнилась, модуль перестав відповідати.

Для кого цей курс?

Embedded-розробникам, яким потрібно гарантувати, що задачі польотного контролера чи плати керування встигнуть до дедлайну.

Які знання потрібні перед стартом?

Обов'язково обидві мови: Python на рівні безкоштовного курсу «Основи програмування на Python» (включно з уроками про списки, словники, sorted з ключем і класи) і C++ на рівні «Основи програмування на C++» (включно зі структурами, посиланнями і uint32_t) та курсу «C++ Advanced»: у C++-задачах трапляються масив, переданий покажчиком, вихідні структури через ->, ініціалізація = {}, рекурсія і std::sort з лямбдою — короткий приклад є в першому уроці Математика: ділення, НСК/НСД і округлення вгору; усе інше пояснюємо. Дробові степені й логарифм у межі Ліу — Лейленда (модуль 2) простіше читати після курсу «Математика для MilTech з нуля» Пояснюємо з нуля: що таке задача, планувальник, пріоритет, витіснення, дедлайн, RTOS. Досвід з мікроконтролерами бажаний (курс «C++ для embedded і MilTech»), але не обов'язковий

Які практичні завдання будуть?

12 модулів: модель задач і швидкі тести → планувальники і точний аналіз → ефекти реальних систем (спільні ресурси, джитер) → інженерні засоби (статичний розклад, контроль дедлайнів, черги, бюджети) → фінальний симулятор. У кожному модулі — теорія з розібраним прикладом і дві практичні задачі з автоматичною перевіркою на прихованих наборах задач: інші періоди, фази, рівні дедлайни, перевантаження. Задачі приблизно порівну на Python і C++17. Частина — «знайдіть помилку» в правдоподібному коді. П'ять тестів з поясненнями і дві практичні форми.

Які технології використовуються?

C++, Python. Код пишете й запускаєте прямо в браузері на платформі — встановлювати нічого не потрібно.

Скільки модулів містить курс?

12 модулів: Задачі, періоди, дедлайни; Утилізація і тест Ліу–Лейленда; Симуляція планувальника RM; EDF: найраніший дедлайн першим; Аналіз часу відгуку; Інверсія пріоритетів і успадкування пріоритету; Джитер з логів таймстемпів; Циклічний виконавець; Детекція пропуску дедлайну і watchdog; Обмежені черги і backpressure; Бюджети WCET; Фінал: симулятор планувальника. Практичних завдань з автоматичною перевіркою — 25+, тестів — 5.

Як отримати доступ?

Залиште заявку на цій сторінці й завершіть реєстрацію в Telegram- або Viber-боті Prog Academy — там ви отримаєте подальші інструкції щодо доступу. Навчання проходить на платформі my.prog.academy у власному темпі.

Чи входить курс у підписку?

Так. Курс входить у підписку на платформі Prog Academy: доступ до всіх курсів за підпискою; ai-помічник з навчання в кожному курсі; усі уроки, домашні завдання та автоматична перевірка; нові курси за підпискою додаються автоматично.

Які сценарії й дані використовуються в курсі?

Сценарії цивільні: знімальний дрон, наземний робот, радіомодем телеметрії, наземна станція.

Не знайшли відповідь?

Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.