Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Архитектура компьютера и ОС

1. Паттерсон Д., Хеннесси Дж. — Архитектура компьютеров и проектирование компьютерных систем (4-е изд., 2012)

Что изучаем:

  • Компьютерные абстракции и архитектура: как устроен современный процессор, память, кеши, шины.
  • Инструкции и язык компьютера: машинные коды, инструкции, арифметика на уровне процессора.
  • Процессор и параллельность: конвейеры, суперскалярные архитектуры, многопоточность.
  • Иерархия памяти: кэш, основной RAM, виртуальная память, управление памятью.
  • Архитектурные решения: RISC vs CISC, оптимизация для производительности.

Знания, которые получаешь:

  • Понимание, как работает процессор «изнутри».
  • Понимание, почему код работает медленно или быстро, что влияет на производительность.
  • Основы для низкоуровневого программирования, оптимизации кода, компиляторов и системного ПО.

2. Таненбаум Э. — Современные операционные системы (4-е изд., 2015)

Что изучаем:

  • Основы ОС: процессы, потоки, планирование, управление ресурсами.
  • Управление памятью: виртуальная память, страничная организация, кеши.
  • Файловые системы и ввод/вывод: как ОС управляет дисками, устройствами, буферами.
  • Синхронизация и межпроцессное взаимодействие (IPC): семафоры, мьютексы, очереди сообщений.
  • Безопасность и защита: права доступа, контроль ресурсов.

Знания, которые получаешь:

  • Понимание, как ОС управляет процессами и ресурсами.
  • Как программировать с учётом ограничений ОС.
  • Основы для системного программирования и работы с ядром ОС.

3. Таненбаум Э., Стеен М. — Распределённые системы. Принципы и парадигмы (2003)

Что изучаем:

  • Основы распределённых систем: архитектуры клиент-сервер, peer-to-peer.
  • Согласованность и отказоустойчивость: как поддерживать данные в разных узлах.
  • Коммуникации: RPC, обмен сообщениями, синхронизация времени.
  • Распределённые файловые системы, транзакции: CAP теорема, блокировки, алгоритмы репликации.
  • Проблемы масштабируемости: как проектировать системы на сотни/тысячи узлов.

Знания, которые получаешь:

  • Понимание принципов работы распределённых приложений.
  • Осознание, как строятся крупные сетевые системы и базы данных.
  • Теоретическая база для backend-разработки и систем, работающих на кластерах.

Итог — какие знания мы получаем из этого раздела:

  1. Архитектура компьютера: как устроен процессор, память, конвейеры, и как это влияет на код.
  2. Операционные системы: процессы, потоки, синхронизация, управление памятью и I/O.
  3. Распределённые системы: проектирование масштабируемых и отказоустойчивых систем, принципы работы сетевых приложений.

Почему этот блок важен:

  • Даёт фундаментальные знания, без которых сложно понимать низкоуровневое программирование, системный софт, оптимизацию, backend и распределённые системы.
  • После этого проще понимать книги по Linux, системному программированию, сетям, и высоконагруженным системам.