Системное программирование и Linux
1. Таненбаум & Бос — Современные операционные системы
-
Что изучаем:
- Основы ОС на примере Linux и других систем: процессы, потоки, планирование, управление памятью.
- Работа с файловыми системами и вводом-выводом.
- Синхронизация, блокировки, семафоры, мьютексы.
- Безопасность и управление пользователями.
-
Что получаем:
- Теоретический фундамент системного программирования.
- Понимание того, как ОС управляет ресурсами, что нужно учитывать при разработке низкоуровневого софта.
2. Роберт Лав — Linux системное программирование
-
Что изучаем:
- Практическая работа с Linux API: процессы, потоки, файловые дескрипторы, сигналы.
- Работа с памятью: mmap, shared memory.
- Системные вызовы и взаимодействие с ядром.
-
Что получаем:
- Навыки программирования под Linux на низком уровне.
- Понимание, как пользоваться системными вызовами, работать с ресурсами ОС напрямую.
3. Керриск — Linux API (исчерпывающее руководство)
-
Что изучаем:
- Детальное описание POSIX и Linux API: управление процессами, файловая система, ввод-вывод, сигнализация, IPC.
- Сетевое программирование и сокеты на системном уровне.
-
Что получаем:
- Систематическое знание API Linux для разработки любых системных программ.
- Библиотека готовых решений для низкоуровневого кода.
4. Стивенс & Раго — UNIX. Профессиональное программирование
-
Что изучаем:
- Системное программирование на Unix-подобных системах: процессы, файловые дескрипторы, сигнализация.
- Стандарты POSIX, межпроцессное взаимодействие (IPC), сокеты.
- Примеры написания реальных утилит и демонов.
-
Что получаем:
- Практика профессионального уровня для работы с Unix/Linux.
- Понимание того, как строятся надёжные системные программы.
5. Роберт Лав — Ядро Linux. Описание процесса разработки (3-е изд., 2013)
-
Что изучаем:
- Архитектура ядра Linux, внутренняя структура кода, модули.
- Как разрабатывается ядро, процесс ревью и интеграции патчей.
- Управление памятью, планирование процессов, драйверы устройств.
-
Что получаем:
- Глубокое понимание ядра Linux и внутренней структуры ОС.
- Контекст, как создаётся и поддерживается крупный проект open-source.
6. Стивенс — Разработка сетевых приложений
-
Что изучаем:
- Сетевое программирование: TCP/IP, UDP, сокеты.
- Архитектура клиент-сервер, многопоточность, неблокирующие I/O.
- Практические примеры сетевых приложений на C.
-
Что получаем:
- Умение писать высокопроизводительные сетевые приложения.
- Понимание, как OS и сеть взаимодействуют на уровне API и протоколов.
Итог по разделу “Системное программирование и Linux”:
- Теория ОС: Таненбаум & Бос
- Системное программирование на Linux: Роберт Лав, Керриск, Стивенс & Раго
- Ядро Linux и внутреннее устройство: Роберт Лав
- Сетевое программирование: Стивенс — Разработка сетевых приложений
Почему этот раздел важен:
- Дает фундамент для низкоуровневого программирования, работы с ядром и системными API.
- Даёт навыки системного и сетевого программирования, которые нужны для backend, embedded и высоконагруженных систем.
- Покрывает теорию + практику, то есть как ОС работает «изнутри» и как взаимодействовать с ней напрямую.