Фоновий процес — це комп'ютерний процес, який працює «за лаштунками» (тобто у фоновому режимі) і без втручання користувача. Типові завдання таких процесів включають ведення журналів, моніторинг системи, планування та сповіщення користувача.

У системі Windows фоновим процесом є або комп'ютерна програма, яка не створює інтерфейсу користувача, або служба Windows. Перші запускаються так само, як і будь-які інші програми, наприклад, через меню «Пуск». Служби Windows, з іншого боку, запускаються диспетчером керування службами.

У Unix-подібній системі демон є фоновим процесом. Однак у оболонці, яка підтримує керування завданнями, процес, що перебуває у групі процесів, ідентифікатор групи процесів якої відрізняється від ідентифікатора групи його термінала (TGID), є фоновим процесом. (TGID процесу — це ідентифікатор процесу лідера групи процесів, який відкрив термінал, зазвичай оболонки входу в систему. TGID визначає керуючий термінал групи процесів.) Такий тип процесу не може отримувати сигнали від клавіатури свого батьківського термінала і зазвичай не надсилає виведення до цього термінала. Це більш технічне визначення не розрізняє, чи може процес отримувати втручання користувача. Хоча фонові процеси зазвичай використовуються для завдань, що потребують мало ресурсів, у фоновому режимі можна запустити будь-який процес, і такий процес поводитиметься так само, як і будь-який інший процес, за винятками, наведеними вище.

Служби Windows

У сімействі Windows NT операційних систем служба Windows є спеціалізованим фоновим процесом. Служба Windows повинна відповідати правилам інтерфейсу та протоколам диспетчера керування службами, компонента, відповідального за керування службами Windows.

Служби Windows можна налаштувати на запуск під час запуску операційної системи та роботу у фоновому режимі доти, доки працює Windows. В іншому разі вони можуть запускатися вручну або за певною подією. Операційні системи Windows NT містять численні служби, які працюють у контексті трьох облікових записів користувачів: System, Network Service і Local Service. Ці компоненти Windows часто пов'язані з Host Process for Windows Services: svchost.exe. Оскільки служби Windows працюють у контексті власних спеціальних облікових записів користувачів, вони можуть працювати, навіть коли користувач не ввійшов у систему.

До Windows Vista служби, встановлені як «інтерактивні служби», могли взаємодіяти з робочим столом Windows і відображати графічний інтерфейс користувача. Однак у Windows Vista інтерактивні служби стали застарілими та перестали працювати належним чином унаслідок посилення безпеки служб Windows.

Три основні способи керування службами Windows: оснащення «Служби» для Microsoft Management Console sc.exe PowerShell

Демон

Демон — це тип фонового процесу, призначений для безперервної роботи у фоновому режимі в очікуванні виникнення події (подій) або виконання умови (умов). Коли демони запускаються за допомогою функції daemon, вони від'єднуються від свого батьківського термінала.

Фонові завдання в Unix

З командного рядка Unix фоновий процес можна запустити за допомогою оператора «&». Команда bg може відновити призупинене завдання (надіславши SIGCONT), запустивши його у фоновому режимі. Використання команди fg також встановлює передню групу процесів керувального термінала сеансу на групу процесів завдання, переводячи завдання на передній план. Команда jobs виводить список усіх процесів, пов'язаних із поточним терміналом, і може використовуватися для переведення фонових процесів на передній план.

Коли сеанс входу в систему завершується через явний вихід із системи або розрив мережевого з'єднання, усі процеси, включно з фоновими, за замовчуванням завершуються, щоб запобігти їх перетворенню на процеси-сироти. Зокрема, коли користувач завершує процес оболонки, з якого було запущено процес, під час завершення роботи оболонка надсилає сигнал hangup (SIGHUP) усім своїм завданням, щоб завершити всі процеси у відповідній групі процесів. Щоб процеси продовжили працювати, можна або не завершувати сеанс, або завершити сеанс без припинення процесів. Мультиплексор термінала можна використовувати для того, щоб залишити сеанс запущеним, але від'єднати від нього віртуальний термінал, залишивши процеси запущеними як дочірні процеси сеансу; після цього користувач може повторно під'єднатися до сеансу. Або завершенню можна запобігти, запустивши процес за допомогою команди nohup (наказавши процесу ігнорувати SIGHUP), або згодом виконавши disown з ідентифікатором завдання, що або повністю видаляє завдання зі списку завдань, або просто запобігає надсиланню SIGHUP. В останньому випадку, коли сеанс завершується, дочірні процеси не завершуються — або тому, що їм не надсилається SIGHUP, або тому, що вони його ігнорують, — і таким чином стають процесами-сиротами, які потім усиновлюються процесом init (ядро встановлює процес init як їхнього батька) і продовжують працювати без сеансу, тепер називаючись демонами.

Приклад У цьому прикладі, виконаному в Unix, утиліту sleep було запущено у фоновому режимі. Після цього у передньому режимі було запущено інструмент ps, який вивів наведений нижче текст. Обидва були запущені з оболонки. PID TT STAT TIME COMMAND 54659 10 S 0:00.06 su (zsh) 54703 10 IN 0:00.00 - sleep 1000 54852 10 R+ 0:00.00 - ps -U botty -axd

Смартфони Багато новіших версій смартфонів і КПК тепер містять можливість запускати фонові процеси. Через апаратні обмеження фонові процеси в мобільних операційних системах часто обмежуються певними завданнями або рівнями споживання ресурсів. В Android використання ЦП фоновими процесами може бути обмежене на рівні 5–10%. Застосунки в iOS від Apple обмежені підмножиною функцій під час роботи у фоновому режимі. І в iOS, і в Android фонові процеси, а також фонові або невикористовувані застосунки, можуть бути завершені системою, якщо вони використовують надто багато пам'яті або заряду акумулятора.

Див. також Багатозадачність Пакетна обробка Група процесів

Примітки