Лабораторні
Як це влаштовано
Section titled “Як це влаштовано”Доріжок дві, і йдуть вони паралельно теорії. На доріжці A ви пишете системний код на C і реалізуєте механізми, про які читали. На доріжці B адмініструєте систему й спостерігаєте ті самі механізми в живій машині.
Одна від одної доріжки не залежать. Можна пройти якусь одну, можна обидві, можна брати роботи вибірково: кожна самодостатня й містить перелік модулів, які треба прочитати перед нею.
Три рівні складності означають глибину роботи, проходити їх по порядку не обов’язково. Базовий перевіряє, чи ви зрозуміли механізм. Середній вимагає його застосувати. Просунутий вимагає виміряти результат і пояснити його.
До кожної роботи є автоперевірка: скрипт, який ганяє ваш розв’язок і каже, що саме не працює. Курс розрахований на самостійне проходження, тому перевірка не залежить від того, чи хтось загляне у ваш код.
Сторінки робіт побудовані однаково. «Мета» каже, що ви зможете після роботи і де це знадобиться. «Завдання» описує результат, межі й критерій «готово». «Перед початком» перелічує, що прочитати й підготувати. Далі йдуть етапи, перевірка й часті помилки.
Що потрібно
Section titled “Що потрібно”Вам знадобиться Linux, який не шкода зламати. Частина робіт передбачає розмітку дисків, збирання RAID і доведення системи до аварійного режиму, тож на робочій машині цього робити точно не варто.
Файли для роботи
Section titled “Файли для роботи”Перевірки, заготовки й скрипти встановлення лежать в одному архіві:
curl -fsSL https://os.easy-tech.blog/os-course-labs.tar.gz | tar xzcd os-course-labsДалі всі команди зі сторінок робіт виконуються саме з цього каталогу.
Якщо потрібен один-єдиний файл, його можна взяти окремо — наприклад
https://os.easy-tech.blog/labs/a1-shell/check.sh.
Еталонних розв’язків в архіві немає.
Готове середовище
Section titled “Готове середовище”В архіві є каталог setup/ з Vagrant-машиною на Debian 12, у якій
уже стоїть усе потрібне:
cd setup && vagrant up && vagrant sshУсередині стоять gcc, make, gdb, strace, ltrace, perf,
bpftrace, lsof, sysstat, numactl, libfuse3-dev та libcap2-bin,
а до машини підключено чотири додаткові диски по 1 ГіБ для B5.
Якщо Vagrant вам не підходить, setup/provision.sh поставить те саме
на будь-який свіжий Debian чи Ubuntu:
sudo bash setup/provision.shЯк перевіряти себе
Section titled “Як перевіряти себе”cd labs/a1-shell./check.sh ./myshellСкрипт друкує список перевірок і показує, які з них не пройшли. Оцінок він не виставляє й нікуди нічого не надсилає.
Роботи доріжки B перевіряються інакше, бо там немає програми, яку можна запустити. Кожна з них закінчується переліком тверджень, і кожне з цих тверджень ви маєте вміти підтвердити командою на власній системі.
Майже кожна робота просить щось «записати у звіт». Звіт тут не документ для викладача, його ніхто не збиратиме. Це текстовий файл поруч із кодом, на сторінку-дві, у якому ви фіксуєте:
- числа, які отримали: заміри, розміри, кількість винятків;
- відповіді на запитання, поставлені в етапах роботи;
- що не запрацювало з першого разу і чому.
Поки число лише на екрані, здається, що все зрозуміло. Коли треба написати, чому воно саме таке, прогалини стають видимими. Для робіт доріжки B звіт заміняє автоперевірку: він і є результатом роботи.
Роботи
Section titled “Роботи”Доріжка A — системне програмування на C
Section titled “Доріжка A — системне програмування на C”| Робота | Рівень | Спирається на | |
|---|---|---|---|
| A1 | Власний shell | базовий | 3, 6 |
| A2 | Симулятор планувальника | базовий | 7 |
| A3 | Producer–consumer | середній | 8, 9 |
| A4 | Власний аллокатор | середній | 10, 12 |
| A5 | Заміщення сторінок | просунутий | 11, 12 |
| A6 | Файлова система через FUSE | просунутий | 15 |
| A7 | HTTP-сервер у трьох редакціях | просунутий | 13 |
Доріжка B — адміністрування та інфраструктура
Section titled “Доріжка B — адміністрування та інфраструктура”| Робота | Рівень | Спирається на | |
|---|---|---|---|
| B1 | Встановлення системи | базовий | 5 |
| B2 | Власний mini-top | базовий | 2, 6 |
| B3 | cgroups і OOM killer | середній | 12, 17 |
| B4 | Контейнер руками | середній | 16, 17 |
| B5 | LVM і RAID | просунутий | 14 |
| B6 | Профілювання | просунутий | 13, 18 |