Потоки процессов
100%

Использование процессов · Урок 3

Потоки процессов

Узнайте, как потоки Linux совместно используют ресурсы процесса и как проверять их с помощью ps.

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

Процессы и потоки

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

У отдельных процессов обычно разные адресные пространства, и они обмениваются через явные межпроцессные механизмы. Ни один подход не является автоматически быстрее или безопаснее; компромисс определяется нагрузкой и реализацией.

Какой ресурс обычно совместно используется потоками одного процесса?

Идентификаторы потоков

Linux представляет каждый поток как планируемую задачу с собственным идентификатором потока. Идентификатор лидера группы потоков обычно показывается как идентификатор процесса, а все участники имеют общий идентификатор группы потоков. Инструменты используют метки PID, TID, LWP и SPID; проверяйте определения полей конкретного инструмента, а не считайте все метки равнозначными.

Что каждый поток хранит независимо?

Перечисление потоков через ps

Используйте явные поля вывода, чтобы избежать неоднозначных стандартных представлений:

$ ps -eLo pid,tid,psr,stat,comm

В ps из procps параметр -L показывает потоки, а -e выбирает все процессы. pid обозначает группу потоков, tid — отдельный поток, psr показывает CPU, на котором поток выполнялся последним, а stat сообщает состояние. Чтобы проверить один процесс:

$ ps -L -p 1234 -o pid,tid,stat,pcpu,comm

Списки потоков являются снимками. Сразу после вывода поток может завершиться или изменить состояние.

Какая команда перечисляет потоки PID 1234 с явными полями?

Интерпретация активности потоков

Высокое использование CPU одним потоком может скрываться за средним значением всего процесса. Сопоставляйте образцы CPU потоков с журналами приложения, трассировками стеков и профилировщиками. Не подключайте отладчики и не отправляйте сигналы производственным задачам, не разобравшись с остановками, правами и влиянием на службу.

Почему список потоков ps нельзя считать постоянным состоянием?

Урок завершён

Вы завершили Потоки процессов

Теперь вы можете отличать ресурсы процесса от состояния выполнения отдельного потока.

  • Помните, что у каждого процесса есть хотя бы один поток.

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

  • Перечисляйте явные идентификаторы процессов и потоков через ps -L.

  • Считайте вывод потоков снимком и сопоставляйте его с другими свидетельствами.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Использование процессов