Удачные примеры погружения в кодовую базу
Для развития как специалиста полезно изучать чужие подходы к проектированию и программированию реальных систем. Да и это просто интересно. Я уже писал пост по погружению в архитектуру. В этот раз я нашел другие примеры, которые удачно описывают архитектуру и код.
Первый пример: “История одного блокчейна”
Статья на Хабре про реализацию блокчейна — это отличный пример того, как можно доступно описать архитектуру сложного проекта. В разделе “Утечка памяти” разбирается проблема оседания памяти в контейнерах при долгой работе приложения. Именно эту проблему решает мой проект Malloc_tracer.
Второй пример: плейлист “Source Dive”
Короткий, но содержательный плейлист SourceDive на YouTube от Low Byte Productions.
Автор разбирает устройство операционной системы на примере xv6-riscv — это переписанная версия Unix v6 для обучения.
Основные темы из видео:
- Инициализация процессора для запуска C-кода ядра: настройка регистров, уровня привилегий, адресов стека, таймеров и прерываний.
- Инициализация консоли:
- Устройство
spin_lock
для управления доступом к ресурсам. - Использование
uart
и рольvolatile
при работе с устройствами, замапленными в память.
- Устройство
- Реализация
printf
с поддержкой переменного количества аргументов. - Аллокатор памяти и использование интрузивных связных списков для управления страницами.
- Основы виртуальной памяти и таблиц страниц.
Плейлист, к сожалению, не завершён, но даже в таком виде он хорош.
Рекомендации из Вастрика
Дополнительно я задал вопрос на vas3k.club, и там порекомендовали интересные ресурсы из геймдева, парсинга Ruby, системного программирования, с которыми можно ознакомиться, перейдя по ссылке.