Практикум для изучения ОС


Я решил систематизировать свои знания об устройстве операционных систем и читаю всякие книжки по этой теме. На отсутствие теории не могу жаловаться. А вот с практической стороной у меня сложилось не сразу. Чаще всего советуют для изучения ОС взять исходники Minix или одну из первых версий. Но у Minix очень большая кодовая база, а ядро Линукс это всё-таки еще не операционная система.

Для меня более подходящим полигоном для изучения и экспериментирования стал проект учебной ОС xv6. Это Unix-подобная ОС, которую используют в учебных целях в MIT и других университетах. Запустить её просто - нужно собрать загрузочный образ и загрузить с ним виртуальную машину:

$ make
$ make qemu

Набор пользовательских утилит сильно ограничен, но, например, можно посмотреть список файлов и запустить регресионные тесты:

Помимо исходного кода для xv6 доступен учебник с описанием её устройства.

Ещё один проект, который мне был полезен, это юнит-тесты для KVM. Каждый юнит-тест это простая программа на ассемблере, проверяет “железо”: наличие ACPI таблиц, возможность выделить память, порты ввода-вывода и т.д.

Метки: opensource softwaretesting