В ОС Linux управление процессами является ключевой технологией при разработке многих программ. Процесс - это находящаяся в состоянии выполнения программа вместе со средой ее выполнения.
Так как Linux - это настоящая многозадачная система, в ней одновременно могут выполняться несколько программ (процессов, задач). Термин ``одновременно'' не всегда соответствует действительности. Обычно центральный процессор (ЦП) может работать в данный момент только с одним процессом. Если необходимо выполнить одновременно несколько программ параллельно, нужно использовать либо несколько компьютеров, либо несколько процессоров. Однако для большинства пользователей этот вариант может быть непривлекательным из-за расходов на приобретение дополнительной техники.
Каждый процесс имеет собственное виртуальное адресное пространство. Это необходимо, чтобы гарантировать, что ни один процесс не будет подвержен помехам или влиянию со стороны других.
Отдельные процессы получают доступ к ЦП по очереди. Планировщик процессов решает, как долго и в какой последовательности процессы будут занимать ЦП. При этом создается впечатление, что процессы протекают параллельно.
В Linux реализована вытесняющая многозадачность. Это значит, что система сама решает, как долго конкретный процесс может использовать ЦП, и когда наступит очередь следующего процесса. Если пользователь желает вмешаться в процесс планирования, он может сделать это как 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 все процессы упорядочены иерархически подобно генеалогическому дереву. Каждый процесс владеет информацией того процесса, от которого он был порожден. То же самое справедливо и для его родительского процесса.
Если нужно узнать, сколько времени ЦП необходимо для каждого процесса, можно использовать команду top. Она показывает в колонке '%CPU', какое время вычислений занимает определенная программа в процессоре.