next up previous contents
Next: Таблица процессов Up: Процессы Previous: Процессы   Contents

Основные сведения о процессах.

В ОС Linux управление процессами является ключевой технологией при разработке многих программ.

Определение: Процесс - это находящаяся в состоянии выполнения программа вместе с ее средой выполнения.

Так как Linux - это настоящая многозадачная система, в ней одновременно могут выполняться несколько программ (процессов, задач). Термин ``одновременно'' не всегда соответствует действительности дословно. Обычно процессор (CPU) может работать в данный момент только с одним процессом. Если вам действительно необходимо выполнить одновременно несколько программ параллельно, нужно использовать либо несколько компьютеров, либо больше процессоров. Однако, для большинства пользователей этот вариант может быть непривлекательным из-за расходов на приобретение дополнительной техники.

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

Отдельные процессы получают доступ к CPU по очереди. Планировщик процессов решает, как долго и в какой последовательности процессы будут занимать CPU. При этом создается впечатление, что процессы протекают действительно параллельно.

В Linux реализована вытесняющая многозадачность. Это значит, что система сама решает, как долго конкретный процесс может использовать CPU, и когда наступит очередь следующего процесса. Если вы хотите вмешаться в процесс планирования, вы можете сделать это как root с помощью команды nice.

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

ps -x
При этом выводится список выполняющихся в данный момент процессов. Рассмотрим коротко, что означает каждая колонка.

PID     TTY     STAT     TIME    COMMAND

1234    pts/0    R       0:00    ps -x

PID - идентификатор процесса. Каждый процесс получает свой собственный однозначный идентификатор процесса. Пользуясь этим идентификатором, вы можете получать доступ к конкретному процессу. Если вы хотите, например, получить сведения о процессе с ID 1501, введите команду

ps 1501
Если вы не знаете идентификатор процесса, но знаете команду, запустившую этот процесс, введите в консоли команду

pidof /bin/bash
и вы получите идентификатор этого процесса. pidof можно выполнять только как root.

TTY показывает в каком терминале выполняется процесс. Если в колонке не указано никакое значение, речь идет, как правило, о процессе - демоне.

STAT показывает текущее состояние процесса. В приведенном примере стоит значение R, означающее выполнение (running). Этот процесс выполняется именно сейчас. Для процессов применяются следующие обозначения:

TIME - время работы процесса.

COMMAND - имя команды, с помощью которой запущен процесс.

В Linux все процессы упорядочены иерархически, подобно генеалогическому дереву. Каждый процесс владеет информацией того процесса, от которого он был порожден. То же самое справедливо и для его родительского процесса и т.д.

Если вы хотите узнать, сколько времени CPU необходимо каждому процессу, Вы можете использовать команду top. Она показывает, какое время вычислений занимает определенная программа в процессоре. Обратите внимание на колонку '%CPU'.



2003-12-09