Как в MIT учат операционным системам на живом ядре xv6
В большинстве вузов операционные системы изучают по слайдам, и студент так и не видит, как всё устроено внутри. В MIT подход другой: студенту выдают полностью рабочее ядро в духе Unix и предлагают самому в нём копаться, ломать и переписывать.
Это ядро называется xv6. По сути это переосмысление шестой версии Unix 1975 года, переписанное на современном C под многопроцессорные системы RISC-V. Оригинальный Unix V6 был отличным учебным материалом, но опирался на железо, которого давно нет. xv6 сохраняет идеи оригинала, но запускается на современной архитектуре и читается куда легче.
Главное, что подкупает, это размер. Всё ядро занимает около шести тысяч строк, поэтому его реально прочитать целиком, а не утонуть в нём на первой неделе. Внутри процессы, системные вызовы, виртуальная память, файловые дескрипторы, каналы и планировщик, и со всем этим можно экспериментировать руками.
Хорошо это видно на примере каналов. Реализация чтения из pipe в файле kernel/pipe.c укладывается примерно в пятнадцать строк. Если канал пуст, читатель засыпает и ждёт, а как только писатель добавляет данные, читателя будят. Блокировка, засыпание и пробуждение умещаются в паре десятков строк, и этот кусок кода объясняет про синхронизацию нагляднее любой лекции.
Книга и исходники выложены в открытый доступ и бесплатно на сайте курса MIT 6.828, так что любой желающий может пройти тот же путь, что и студенты: https://pdos.csail.mit.edu/6.828/2025/xv6/book-riscv-rev5.pdf
