Архитектура компьютера и ОС
1. Паттерсон Д., Хеннесси Дж. — Архитектура компьютеров и проектирование компьютерных систем (4-е изд., 2012)
Что изучаем:
- Компьютерные абстракции и архитектура: как устроен современный процессор, память, кеши, шины.
- Инструкции и язык компьютера: машинные коды, инструкции, арифметика на уровне процессора.
- Процессор и параллельность: конвейеры, суперскалярные архитектуры, многопоточность.
- Иерархия памяти: кэш, основной RAM, виртуальная память, управление памятью.
- Архитектурные решения: RISC vs CISC, оптимизация для производительности.
Знания, которые получаешь:
- Понимание, как работает процессор «изнутри».
- Понимание, почему код работает медленно или быстро, что влияет на производительность.
- Основы для низкоуровневого программирования, оптимизации кода, компиляторов и системного ПО.
2. Таненбаум Э. — Современные операционные системы (4-е изд., 2015)
Что изучаем:
- Основы ОС: процессы, потоки, планирование, управление ресурсами.
- Управление памятью: виртуальная память, страничная организация, кеши.
- Файловые системы и ввод/вывод: как ОС управляет дисками, устройствами, буферами.
- Синхронизация и межпроцессное взаимодействие (IPC): семафоры, мьютексы, очереди сообщений.
- Безопасность и защита: права доступа, контроль ресурсов.
Знания, которые получаешь:
- Понимание, как ОС управляет процессами и ресурсами.
- Как программировать с учётом ограничений ОС.
- Основы для системного программирования и работы с ядром ОС.
3. Таненбаум Э., Стеен М. — Распределённые системы. Принципы и парадигмы (2003)
Что изучаем:
- Основы распределённых систем: архитектуры клиент-сервер, peer-to-peer.
- Согласованность и отказоустойчивость: как поддерживать данные в разных узлах.
- Коммуникации: RPC, обмен сообщениями, синхронизация времени.
- Распределённые файловые системы, транзакции: CAP теорема, блокировки, алгоритмы репликации.
- Проблемы масштабируемости: как проектировать системы на сотни/тысячи узлов.
Знания, которые получаешь:
- Понимание принципов работы распределённых приложений.
- Осознание, как строятся крупные сетевые системы и базы данных.
- Теоретическая база для backend-разработки и систем, работающих на кластерах.
Итог — какие знания мы получаем из этого раздела:
- Архитектура компьютера: как устроен процессор, память, конвейеры, и как это влияет на код.
- Операционные системы: процессы, потоки, синхронизация, управление памятью и I/O.
- Распределённые системы: проектирование масштабируемых и отказоустойчивых систем, принципы работы сетевых приложений.
Почему этот блок важен:
- Даёт фундаментальные знания, без которых сложно понимать низкоуровневое программирование, системный софт, оптимизацию, backend и распределённые системы.
- После этого проще понимать книги по Linux, системному программированию, сетям, и высоконагруженным системам.