Фоновый процесс представляет собой вычислительный процесс , который работает за кулисами (то есть, на заднем плане) и без вмешательства пользователя. [1] Типичные задачи для этих процессов включают ведение журнала, системный мониторинг, планирование, [2] и уведомление пользователя. [3] Фоновый процесс обычно представляет собой дочерний процесс, созданный процессом управления для обработки вычислительной задачи. После создания дочерний процесс будет работать сам по себе, выполняя задачу независимо от процесса управления, освобождая процесс управления от выполнения этой задачи. [ необходима цитата ]
В системе Windows фоновый процесс - это либо компьютерная программа , не создающая пользовательский интерфейс , либо служба Windows . Первые запускаются так же, как и любая другая программа, например, через меню «Пуск» . С другой стороны, службы Windows запускаются диспетчером управления службами . В Windows Vista и более поздних версиях они запускаются в отдельном сеансе . Нет ограничений на то, насколько системная служба или фоновый процесс может использовать системные ресурсы. Действительно, в семействе Windows Server операционных систем Microsoft ожидается, что фоновые процессы будут основными потребителями системных ресурсов.[ необходима цитата ]
В Unix или Unix-подобной системе фоновый процесс или задание может быть дополнительно идентифицировано как процесс, идентификатор группы процессов которого отличается от идентификатора конечной группы (TGID). (TGID процесса - это идентификатор процесса лидера группы процессов, открывшего терминал, который обычно является оболочкой входа в систему. TGID идентифицирует управляющий терминал группы процессов.) Этот тип процесса не может получать сигналы клавиатуры от его родительский терминал и обычно не отправляет вывод на этот терминал. [4] Это более техническое определение не делает различия между тем, может ли процесс получать вмешательство пользователя. Хотя фоновые процессы обычно используются для целей, требующих небольшого количества ресурсов, любой процесс может выполняться в фоновом режиме, и такой процесс будет вести себя так же, как и любой другой процесс, с исключениями, указанными выше. [1]
Службы Windows
В семействе операционных систем Windows NT служба Windows представляет собой выделенный фоновый процесс. [5] Служба Windows должна соответствовать правилам интерфейса и протоколам диспетчера управления службами , компонента, отвечающего за управление службами Windows. [6]
Службы Windows можно настроить для запуска при запуске операционной системы и для работы в фоновом режиме, пока работает Windows. Кроме того, они могут быть запущены вручную или по событию. Операционные системы Windows NT включают в себя многочисленные услуги , которые выполняются в контексте трех учетных записей пользователей : System
, Network Service
и Local Service
. Эти компоненты Windows часто связаны с хост-процессом для служб Windows: svchost.exe . Поскольку службы Windows работают в контексте своих собственных выделенных учетных записей пользователей, они могут работать, когда пользователь не вошел в систему.
До Windows Vista службы, установленные как «интерактивные службы», могли взаимодействовать с рабочим столом Windows и отображать графический пользовательский интерфейс . Однако в Windows Vista интерактивные службы стали устаревшими и перестали работать должным образом в результате усиления защиты служб Windows . [7] [8]
Три основных средства управления службами Windows:
- Оснастка служб для консоли управления Microsoft
sc.exe
- Windows PowerShell
Демон
Демон - это тип фонового процесса, предназначенный для непрерывной работы в фоновом режиме, ожидая наступления события (событий) или выполнения условия (условий). [9] Эти процессы обычно используют минимальные системные ресурсы и выполняют задачи, которые практически не требуют ввода от пользователя. При запуске с демоном функции, демоны диссоциирует от своего родительского терминала. [10]
Запуск и возобновление в Unix
Из командной строки Unix фоновый процесс можно запустить с помощью оператора «&». Б.Г. утилита может возобновить приостановленное задание (отправка SIGCONT ), работает в фоновом режиме. Использование утилиты fg также повторно подключит стандартный ввод к его родительскому терминалу, переведя его на передний план. Работы утилиты будут перечислены все процессы , связанные с текущим терминалом и могут быть использованы , чтобы принести фоновые процессы на передний план. [4] [11]
Когда сеанс входа в систему завершается через явный выход из системы или отключение от сети, все процессы, включая фоновые, по умолчанию завершаются, чтобы предотвратить их превращение в бесхозные процессы . Конкретно, когда пользователь выходит из процесса запуска оболочки, как часть завершения работы, он отправляет сигнал зависания ( SIGHUP ) всем своим заданиям , чтобы завершить все процессы в соответствующей группе процессов . Чтобы процессы продолжали работать, можно либо не завершить сеанс, либо завершить сеанс, не завершая процессы. Оконечный мультиплексор может быть использован , чтобы оставить сеанс работает , но отделить виртуальный терминал от него, в результате чего процессов , запущенные как дочерние процессы сессии; затем пользователь может повторно подключиться к сеансу позже. Или завершение можно предотвратить, запустив процесс с помощью команды nohup (указав процессу игнорировать SIGHUP), или путем последующего запуска disownс идентификатором задания, который либо полностью удаляет задание из списка заданий, либо просто предотвращает запуск SIGHUP. послал. В последнем случае, когда сеанс завершается, дочерние процессы не завершаются либо потому, что им не отправляется сигнал SIGHUP, либо потому, что они игнорируют его и, таким образом, становятся потерянными процессами, которые затем принимаются процессом init (ядро устанавливает процесс init как их родитель), и они продолжают работать без сеанса, теперь называемые демонами .
Пример
В этом примере, запущенном в Unix , утилита сна была запущена в фоновом режиме. После этого инструмент ps был запущен на переднем плане, где он выводил текст ниже. Оба были запущены из снаряда. [12]
PID TT STAT TIME COMMAND 54659 10 S 0 : 00.06 su ( zsh ) 54703 10 IN 0 : 00.00 - спящий режим 1000 54852 10 R + 0 : 00.00 - ps -U botty -axd
Смартфоны
Многие новые версии операционных систем для смартфонов и КПК теперь включают возможность запуска фоновых процессов. Из-за аппаратных ограничений фоновые процессы в мобильных операционных системах часто ограничиваются определенными задачами или уровнями потребления. В Android использование ЦП для фоновых процессов ограничено 5-10%. [13] Сторонние приложения на iOS от Apple ограничены набором функций при работе в фоновом режиме. [3] И на iOS, и на Android фоновые процессы могут быть прекращены системой, если они используют слишком много памяти. [3] [13]
Смотрите также
- Пакетная обработка
- Многозадачность компьютера
- Группа процессов
Рекомендации
- ^ a b «Что такое операционная система? Процессы» . Учебник по Linux. Архивировано из оригинального 15 августа 2020 года . Проверено 14 ноября 2010 года .
- ^ Мишель Сиран (декабрь 1993 г.). Oracle Database Concepts, 10g Release 1 . Корпорация Oracle. B10743-01 . Проверено 12 ноября 2010 года .
- ^ а б в Хесус Диас (8 апреля 2010 г.). «Как многозадачность работает в новой iPhone OS 4.0» . Gizmodo. Архивировано 2 ноября 2010 года . Проверено 14 ноября 2010 года .
- ^ а б Справочное руководство GNU Bash, издание 4.1, Основы управления заданиями . Фонд свободного программного обеспечения, Inc. 23 декабря 2009 года архивация с оригинала на 3 декабря 2010 года . Проверено 10 ноября 2010 года .
- ^ «Обзор услуг» . Microsoft TechNet . Microsoft . Проверено 29 марта 2013 года .
- ^ «Услуги» . Сеть разработчиков Microsoft . Microsoft . Проверено 29 марта 2013 года .
- ^ «New Elevation PowerToys для Windows Vista» . Журнал TechNet . Microsoft . Июнь 2008 . Проверено 21 июня 2013 года .
Служба CmdAsSystem настроена как интерактивная, поддержка которой прекращается. Служба может работать некорректно. Проблема в том, что этот сценарий пытается создать и запустить интерактивную службу. Интерактивные службы не будут работать правильно из-за изоляции сеанса 0 в Windows Vista.
- ^ «Сервисы в Windows» . MSDN . Microsoft . 18 октября 2010 . Проверено 21 июня 2013 года .
- ^ Эрик С. Раймонд (1 октября 2004 г.). Файл жаргона, версия 4.4.8, «демон» . Архивировано 3 ноября 2010 года . Проверено 10 ноября 2010 года .
- ^ raf (12 июня 2010 г.). Руководство пользователя Linux, «демон» . Архивировано 21 октября 2010 года . Проверено 10 ноября 2010 года .
- ^ Оке Нордлунд (7 февраля 2007 г.). «Фоновые процессы в Unix / Linux» . Архивировано из оригинального 13 февраля 2012 года . Проверено 10 ноября 2010 года .
- ^ "POSIX" ps " " . IEEE Std 1003.1, 2004 Edition .
- ^ а б Мэтт Бьюкенен (29 апреля 2010 г.). «Giz объясняет: как многозадачность работает на телефоне» . Gizmodo. Архивировано 17 октября 2010 года . Проверено 14 ноября 2010 года .