Введение
Процесс, работающий в фоновом режиме. Процесс в фоновом режиме — это компьютерный процесс, выполняющийся незаметно (то есть в фоновом режиме) и без вмешательства пользователя. Типичные задачи для таких процессов включают ведение журналов, мониторинг системы, планирование и уведомление пользователей. В системе 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
A background process is a computer process that runs behind the scenes (i. e., in the background) and without user intervention. Typical tasks for these processes include logging, system monitoring, scheduling, and user notification. On a Windows system, a background process is either a computer program that does not create a user interface, or a Windows service. The former are started just as any other program is started, e. g., via Start menu. Windows services, on the other hand, are started by Service Control Manager. In Windows Vista and later, they are run in a separate session. On a Unix or Unix like system, a background process or job can be further identified as one whose process group ID differs from its terminal group ID (TGID). (The TGID of a process is the process ID of the process group leader that opened the terminal, which is typically the login shell. The TGID identifies the control terminal of the process group.) This type of process is unable to receive keyboard signals from its parent terminal, and typically will not send output to that terminal. This more technical definition does not distinguish between whether or not the process can receive user intervention. Although background processes are typically used for purposes needing few resources, any process can be run in the background, and such a process will behave like any other process, with the exceptions given above. A Windows service must conform to the interface rules and protocols of the Service Control Manager, the component responsible for managing Windows services. Windows services can be configured to start when the operating system starts, and to run in the background as long as Windows runs. Alternatively, they can be started manually or by an event. Windows NT operating systems include numerous services which run in context of three user accounts: System, Network Service and Local Service. These Windows components are often associated with Host Process for Windows Services: svchost. exe. Since Windows services operate in the context of their own dedicated user accounts, they can operate when a user is not logged on. Before Windows Vista, services installed as "interactive services" could interact with Windows desktop and show a graphical user interface. With Windows Vista, however, interactive services became deprecated and ceased operating properly, as a result of Windows Service Hardening. The three principal means of managing Windows services are:
Services snap in for Microsoft Management Console
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, система может принудительно завершить фоновые процессы, если они потребляют слишком много памяти.