Обучение разработке операционных систем с использованием ядра Linux и Raspberry Pi.
Этот репозиторий содержит пошаговое руководство, в котором рассказывается, как создать простое ядро операционной системы (ОС) с нуля. Я называю эту ОС Raspberry Pi OS или просто RPi OS. Исходный код ОС RPi во многом основан на ядре Linux, но операционная система имеет очень ограниченную функциональность и поддерживает только Raspberry PI 3.
Каждый урок построен таким образом, что сначала объясняется, как та или иная функция ядра реализована в ОС RPi, а затем делается попытка продемонстрировать, как та же функциональность работает в ядре Linux. Каждому уроку в каталоге src соответствует соответствующая папка, содержащая снимок исходного кода ОС на тот момент, когда урок только что был завершен. Это позволяет изящно вводить новые концепции и помогает читателям следить за развитием ОС RPi. Понимание этого руководства не требует каких-либо специальных навыков разработки ОС.
Более подробную информацию о целях и истории проекта можно найти во Введении. Проект все еще находится в активной разработке, если вы готовы принять участие - прочтите руководство по участию.
Оглавление
- Введение
- Руководство по вкладу
- Предварительные условия
- Урок 1: Инициализация ядра
- 1.1 Представляем RPi OS, или голое железо «Hello, world!»
- Линукс
- 1.2 Структура проекта
- 1.3 Система сборки ядра
- 1.4 Последовательность запуска
- 1.5 Упражнения
- Урок 2. Инициализация процессора
- 2.1 ОС РПи
- 2.2 Линукс
- 2.3 Упражнения
- Урок 3: Обработка прерываний
- 3.1 ОС РПи
- Линукс
- 3.2 Обработка исключений низкого уровня
- 3.3 Контроллеры прерываний
- 3.4 Таймеры
- 3.5 Упражнения
- Урок 4. Планировщик процессов
- 4.1 ОС РПи
- Линукс
- 4.2 Базовые структуры планировщика
- 4.3 Формирование задачи
- 4.4 Планировщик
- 4.5 Упражнения
- Урок 5: Пользовательские процессы и системные вызовы
- 5.1 ОС РПи
- 5.2 Линукс
- 5.3 Упражнения
- Урок 6: Управление виртуальной памятью
- 6.1 ОС РПи
- 6.2 Linux (в разработке)
- 6.3 Упражнения
- Урок 7: Сигналы и ожидание прерываний (следует сделать)
- Урок 8: Файловые системы (следует сделать)
- Урок 9: Исполняемые файлы (ELF) (Необходимо сделать)
- Урок 10: Драйверы (следует сделать)
- Урок 11: Работа в сети (следует сделать)