Лабораторні
Як це влаштовано
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-машиною, де вже все
є, — щоб не витрачати перший тиждень на «у мене не збирається»:
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 перевіряються інакше, бо там немає програми, яку можна запустити. Кожна з них закінчується переліком тверджень, і кожне з цих тверджень ви маєте вміти підтвердити командою на власній системі.
Роботи
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 |