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

Системное программирование и 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”:

  1. Теория ОС: Таненбаум & Бос
  2. Системное программирование на Linux: Роберт Лав, Керриск, Стивенс & Раго
  3. Ядро Linux и внутреннее устройство: Роберт Лав
  4. Сетевое программирование: Стивенс — Разработка сетевых приложений

Почему этот раздел важен:

  • Дает фундамент для низкоуровневого программирования, работы с ядром и системными API.
  • Даёт навыки системного и сетевого программирования, которые нужны для backend, embedded и высоконагруженных систем.
  • Покрывает теорию + практику, то есть как ОС работает «изнутри» и как взаимодействовать с ней напрямую.