Перейти до вмісту

Лабораторні

Доріжок дві, і йдуть вони паралельно теорії. На доріжці A ви пишете системний код на C і реалізуєте механізми, про які читали. На доріжці B адмініструєте систему й спостерігаєте ті самі механізми в живій машині.

Одна від одної доріжки не залежать. Можна пройти якусь одну, можна обидві, можна брати роботи вибірково: кожна самодостатня й містить перелік модулів, які треба прочитати перед нею.

Три рівні складності показують глибину, а не порядок проходження. Базовий перевіряє, чи ви зрозуміли механізм. Середній — чи вмієте його застосувати. Просунутий — чи можете виміряти результат і пояснити його.

До кожної роботи є автоперевірка: скрипт, який ганяє ваш розв’язок і каже, що саме не працює. Курс розрахований на самостійне проходження, тому перевірка не повинна залежати від людини, яка загляне у ваш код.

Вам знадобиться Linux, який не шкода зламати. Частина робіт передбачає розмітку дисків, збирання RAID і доведення системи до аварійного режиму, тож на робочій машині цього робити точно не варто.

Перевірки, заготовки й скрипти встановлення лежать в одному архіві:

Terminal window
curl -fsSL https://os.easy-tech.blog/os-course-labs.tar.gz | tar xz
cd os-course-labs

Далі всі команди зі сторінок робіт виконуються саме з цього каталогу. Якщо потрібен один-єдиний файл, його можна взяти окремо — наприклад https://os.easy-tech.blog/labs/a1-shell/check.sh.

Еталонних розв’язків в архіві немає, і це навмисно.

В архіві є каталог setup/ з Vagrant-машиною, де вже все є, — щоб не витрачати перший тиждень на «у мене не збирається»:

Terminal window
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:

Terminal window
sudo bash setup/provision.sh
Terminal window
cd labs/a1-shell
./check.sh ./myshell

Скрипт друкує список перевірок і показує, які з них не пройшли. Оцінок він не виставляє й нікуди нічого не надсилає, це інструмент виключно для вас.

Роботи доріжки B перевіряються інакше, бо там немає програми, яку можна запустити. Кожна з них закінчується переліком тверджень, і кожне з цих тверджень ви маєте вміти підтвердити командою на власній системі.

Доріжка 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