Введение

Процесс, работающий в фоновом режиме. Процесс в фоновом режиме — это компьютерный процесс, выполняющийся незаметно (то есть в фоновом режиме) и без вмешательства пользователя. Типичные задачи для таких процессов включают ведение журналов, мониторинг системы, планирование и уведомление пользователей. В системе Windows фоновым процессом является либо компьютерная программа, не создающая пользовательский интерфейс, либо служба Windows. Первые запускаются как любая другая программа, например, через меню «Пуск». Службы Windows, с другой стороны, запускаются Диспетчером управления службами. В Windows Vista и более поздних версиях они запускаются в отдельной сессии. В Unix или Unix-подобной системе фоновый процесс или задание может быть дополнительно идентифицирован как процесс, чей идентификатор группы процессов отличается от идентификатора группы терминалов (TGID). (TGID процесса — это идентификатор процесса лидера группы процессов, открывшего терминал, который обычно является оболочкой входа в систему. TGID определяет управляющий терминал группы процессов.) Такой процесс не может принимать сигналы клавиатуры от родительского терминала и обычно не отправляет вывод на этот терминал. Это более техническое определение не различает, может ли процесс получать вмешательство пользователя. Хотя фоновые процессы обычно используются для задач, требующих небольших ресурсов, любой процесс может быть запущен в фоновом режиме, и такой процесс будет вести себя как любой другой процесс, за исключением вышеуказанных. Служба Windows должна соответствовать правилам интерфейса и протоколам Диспетчера управления службами — компонента, ответственного за управление службами Windows. Службы Windows могут быть настроены на запуск при старте операционной системы и на работу в фоновом режиме, пока работает Windows. В качестве альтернативы они могут быть запущены вручную или событием. Операционные системы Windows NT включают множество служб, работающих в контексте трех учетных записей пользователей: Системной, Сетевой и Локальной. Эти компоненты Windows часто связаны с хост-процессом для служб Windows: svchost.exe. Поскольку службы Windows работают в контексте собственных выделенных учетных записей пользователей, они могут работать даже когда пользователь не вошел в систему. До Windows Vista службы, установленные как «интерактивные службы», могли взаимодействовать с рабочим столом Windows и отображать графический пользовательский интерфейс. Однако с Windows Vista интерактивные службы устарели и перестали работать должным образом из-за усиления безопасности служб Windows. Три основных способа управления службами Windows:
Панель служб в консоли управления Microsoft
sc.exe
Windows PowerShell

Демон

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

Работа в Unix

Из командной строки Unix фоновый процесс может быть запущен с помощью оператора "&". Команда `bg` может возобновить приостановленную задачу (отправкой сигнала SIGCONT), запустив её в фоновом режиме. Использование команды `fg` также восстановит стандартный ввод, подключив его к родительскому терминалу, и перенесет процесс на передний план. Команда `jobs` выводит список всех процессов, связанных с текущим терминалом, и может использоваться для переноса фоновых процессов на передний план. Когда сеанс входа в систему завершается, либо явным выходом из системы, либо из-за отключения от сети, все процессы, включая фоновые, по умолчанию завершаются, чтобы предотвратить их превращение в "сиротские" процессы. В частности, когда пользователь выходит из процесса запуска оболочки, в рамках завершения работы он посылает сигнал "hangup" (SIGHUP) всем своим задачам, чтобы завершить все процессы в соответствующей группе процессов. Чтобы процессы продолжали выполняться, можно либо не завершать сеанс, либо завершить сеанс, не завершая процессы. Терминальный мультиплексор можно использовать для сохранения сеанса активным, но отсоединения от него виртуального терминала, оставляя процессы выполняться как дочерние процессы сеанса; пользователь может затем повторно подключиться к сеансу позже. Или, завершение можно предотвратить, запустив процесс с помощью команды `nohup` (которая предписывает процессу игнорировать SIGHUP), либо впоследствии выполнив команду `disown` с указанием идентификатора задачи, которая либо полностью удаляет задачу из списка задач, либо просто предотвращает отправку сигнала SIGHUP. В последнем случае, когда сеанс завершается, дочерние процессы не завершаются, либо потому, что им не отправляется SIGHUP, либо потому, что они его игнорируют, и таким образом становятся сиротскими процессами, которые затем перехватывает процесс `init` (ядро устанавливает процесс `init` в качестве их родительского процесса), и они продолжают выполняться без сеанса, будучи теперь демонами.

Смартфоны

Многие новые версии операционных систем для смартфонов и карманных персональных компьютеров (КПК) теперь включают возможность запуска фоновых процессов. В связи с ограничениями аппаратного обеспечения, фоновые процессы в мобильных операционных системах часто ограничены определенными задачами или уровнями потребления ресурсов. На Android использование процессора фоновыми процессами может быть ограничено до 5–10%. Приложения на iOS от Apple имеют ограниченный набор функций при работе в фоновом режиме. Как на iOS, так и на Android, система может принудительно завершить фоновые процессы, если они потребляют слишком много памяти.