hostprofi.ru
Подобрать хостинг
Термин·буква П

Процесс

краткое определение

Процесс (process) — экземпляр выполняющейся программы в памяти операционной системы. Каждый процесс имеет уникальный идентификатор PID, изолированное адресное пространство, набор ресурсов и может находиться в одном из состояний: running, sleeping, stopped, zombie.

Процесс (process) — экземпляр программы, загруженный в оперативную память и выполняемый операционной системой. Каждый процесс изолирован: он имеет собственное виртуальное адресное пространство, набор файловых дескрипторов, переменные окружения и уникальный числовой идентификатор — PID (Process ID).

Как создаётся процесс

В Unix-подобных системах новый процесс создаётся системным вызовом fork(): дочерний процесс получает полную копию адресного пространства родителя (copy-on-write). Затем дочерний процесс может заменить себя другой программой через exec(). Первый процесс в системе — init (PID 1) или systemd — прародитель всех остальных.

Дерево процессов можно просмотреть командой pstree. Каждый процесс кроме PID знает PPID — PID своего родителя.

Состояния процесса

Running (R)
Процесс выполняется на CPU или стоит в очереди планировщика.
Sleeping (S/D)
Interruptible sleep (S) — ожидает события (ввод-вывод, сигнал). Uninterruptible sleep (D) — заблокирован на системном вызове, нельзя прервать даже SIGKILL.
Stopped (T)
Приостановлен сигналом SIGSTOP. Возобновляется SIGCONT.
Zombie (Z)
Процесс завершился, но родитель ещё не вызвал wait() для считывания кода возврата. Запись в таблице процессов сохраняется. Zombie не потребляет RAM, но занимает PID.
Orphan (осиротевший)
Процесс, чей родитель завершился. Автоматически усыновляется init (PID 1), который вызовет wait() и очистит записи.

История

Понятие процесса сформировалось в 1960-х с появлением мультипрограммных ОС. В Unix (1969) модель fork/exec/wait стала основой архитектуры. В 1973 году появилась концепция PID. Стандарт POSIX (1988) закрепил интерфейсы управления процессами, которые используются без изменений по сей день. В Linux 2.6 (2003) добавлены контрольные группы (cgroups) — механизм ограничения ресурсов для групп процессов.

Управление процессами

Основные команды:

  • ps aux — список всех процессов с PID, CPU%, MEM%.
  • top / htop — интерактивный мониторинг в реальном времени.
  • kill -SIGTERM [PID] — мягкое завершение (процесс может перехватить и завершиться корректно).
  • kill -SIGKILL [PID] — принудительное завершение, нельзя перехватить.
  • nice / renice — установка приоритета CPU (-20 до +19).

Процессы в контексте хостинга

На виртуальном хостинге число одновременных процессов ограничено. На VDS и VPS лимиты задаются через cgroups. Демоны веб-серверов (nginx, Apache) и серверов приложений (Gunicorn, PHP-FPM) запускают несколько воркер-процессов для параллельной обработки запросов. При нехватке памяти OOM Killer выбирает процессы для принудительного завершения.

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

Процесс может содержать несколько потоков (threads), совместно использующих адресное пространство. Поток создаётся быстрее и дешевле, чем процесс. Многопоточность применяют там, где нужен общий доступ к данным; многопроцессность — там, где важна изоляция (например, PHP-FPM с одним воркером на запрос предотвращает утечки состояния между запросами).

Другие термины