Этап 2 из 15 · ≈ 8 ч

Процессы, потоки и память

Основа с Junior

Процесс и поток, стек и куча, виртуальная память, системные вызовы и файловые дескрипторы.

Что важно знать

  • Процесс — изолированное адресное пространство и ресурсы; поток — единица выполнения внутри процесса, потоки делят память.
  • Стек — локальные переменные и вызовы, у каждого потока свой; куча — объекты, общая для потоков.
  • Виртуальная память: у процесса иллюзия собственной памяти, ядро отображает её на физическую страницами.
  • Системный вызов — переход в ядро (чтение файла, сеть); дороже обычного вызова функции.
  • Файловый дескриптор — номер открытого файла или сокета; у процесса их число ограничено.
  • Переключение контекста между потоками стоит времени — тысячи потоков на ядро работают медленнее, чем десятки.

Критерии освоения

Junior ≈ 8 ч

  • Объясняет разницу процесса и потока и что у них общее
  • Объясняет, где хранятся локальные переменные и объекты — стек и куча

Практика. Запустить программу с несколькими потоками и посмотреть их в top -H или диспетчере задач, объяснить увиденное.

Middle ≈ 6 ч

  • Объясняет виртуальную память, переключение контекста и цену системного вызова
  • Находит причину «Too many open files» и утечку дескрипторов

Практика. Воспроизвести исчерпание файловых дескрипторов в учебном сервисе, найти утечку через lsof и исправить.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что такое файловый дескриптор?Junior

Файловый дескриптор — небольшое целое число, по которому процесс обращается к открытому ресурсу: файлу, сокету, каналу, устройству.

Полный разбор
Что такое переключение контекста и почему оно дорогое?Middle

Ядро останавливает один поток, сохраняет его регистры и состояние и загружает другой. Прямая цена — единицы микросекунд, но главное — остывшие кэши процессора.

Полный разбор
Чем процесс отличается от потока?Junior

Процесс — запущенная программа со своим адресным пространством и ресурсами. Поток — ход выполнения внутри процесса; потоки делят память процесса.

Полный разбор
Как планировщик ОС решает, какой поток выполнять?Middle

Планировщик выдаёт потокам, готовым к работе, кванты времени на ядрах и вытесняет их по таймеру — так один поток не захватит процессор.

Полный разбор
Чем стек отличается от кучи?Junior

Стек — память для вызовов функций: локальные переменные и адрес возврата, выделяется и освобождается автоматически при входе и выходе. Куча — память для данных, чьё время жизни не привязано к вызову.

Полный разбор
Почему повторное чтение файла быстрее первого?Middle

ОС кэширует содержимое файлов в свободной памяти — page cache. Повторное чтение берётся из памяти, а запись сначала попадает в кэш и на диск уходит позже.

Полный разбор
Чем контейнер отличается от виртуальной машины?Junior

Виртуальная машина эмулирует оборудование и запускает собственное ядро ОС поверх гипервизора. Контейнер — обычный процесс хоста, изолированный механизмами общего ядра: namespaces (свои PID, сеть, файловая система, пользователи) и cgroups (лимиты CPU и…

Полный разбор
Как устроены права доступа к файлам в Linux?Junior

У файла есть владелец, группа и три набора прав — для владельца, группы и остальных: чтение (r = 4), запись (w = 2), выполнение (x = 1). chmod 755 — владелец rwx (7), группа и остальные r-x (5). Для каталога x — право войти в него, r — увидеть список файлов.

Полный разбор
Что такое системный вызов и чем режим ядра отличается от пользовательского?Middle

Программы работают в пользовательском режиме без прямого доступа к железу. Всё, что требует привилегий — файлы, сеть, память, процессы, — делается системным вызовом в ядро.

Полный разбор
Что такое виртуальная память?Middle

Каждый процесс видит своё виртуальное адресное пространство; процессор с ОС переводят виртуальные адреса в физические страницами (обычно по 4 КБ).

Полный разбор
Чем SIGTERM отличается от SIGKILL и как правильно завершать сервис?Middle

SIGTERM — вежливая просьба завершиться: процесс может её перехватить и закончить работу. SIGKILL — убийство ядром, перехватить нельзя.

Полный разбор

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования