В ОС Linux управление процессами является ключевой технологией при разработке многих программ.
Определение: Процесс - это находящаяся в состоянии выполнения программа вместе с ее средой выполнения.
Так как Linux - это настоящая многозадачная система, в ней одновременно могут выполняться несколько программ (процессов, задач). Термин ``одновременно'' не всегда соответствует действительности дословно. Обычно процессор (CPU) может работать в данный момент только с одним процессом. Если вам действительно необходимо выполнить одновременно несколько программ параллельно, нужно использовать либо несколько компьютеров, либо больше процессоров. Однако, для большинства пользователей этот вариант может быть непривлекательным из-за расходов на приобретение дополнительной техники.
Каждый процесс имеет собственное виртуальное адресное пространство. Это гарантирует, что ни один из процессов не будет подвержен помехам или влиянию со стороны других.
Отдельные процессы получают доступ к CPU по очереди. Планировщик процессов решает, как долго и в какой последовательности процессы будут занимать CPU. При этом создается впечатление, что процессы протекают действительно параллельно.
В Linux реализована вытесняющая многозадачность. Это значит, что система сама решает, как долго конкретный процесс может использовать CPU, и когда наступит очередь следующего процесса. Если вы хотите вмешаться в процесс планирования, вы можете сделать это как root с помощью команды nice.
Вы можете узнать с помощью команды ps, какие процессы выполняются в настоящий момент.
1234 pts/0 R 0:00 ps -x
TTY показывает в каком терминале выполняется процесс. Если в колонке не указано никакое значение, речь идет, как правило, о процессе - демоне.
STAT показывает текущее состояние процесса. В приведенном примере стоит значение R, означающее выполнение (running). Этот процесс выполняется именно сейчас. Для процессов применяются следующие обозначения:
COMMAND - имя команды, с помощью которой запущен процесс.
В Linux все процессы упорядочены иерархически, подобно генеалогическому дереву. Каждый процесс владеет информацией того процесса, от которого он был порожден. То же самое справедливо и для его родительского процесса и т.д.
Если вы хотите узнать, сколько времени CPU необходимо каждому процессу, Вы можете использовать команду top. Она показывает, какое время вычислений занимает определенная программа в процессоре. Обратите внимание на колонку '%CPU'.