Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Компоненты некоторых окружений рабочего стола Linux, которые являются демонами, включают D-Bus , NetworkManager (здесь называется unetwork ), PulseAudio ( usound ) и Avahi .

В многозадачности компьютера операционных систем , а демон ( / д я м ən / или / д м ən / ) [1] является компьютерной программой , которая работает в качестве фонового процесса , а не находясь под непосредственным управлением интерактивного пользователя . Традиционно имена процессов демона заканчиваются буквой d для пояснения того, что процесс на самом деле является демоном, и для различия между демоном и обычной компьютерной программой. Например, syslogd- это демон, реализующий средство ведения системного журнала, а sshd - это демон, обслуживающий входящие SSH- соединения.

В среде Unix родительский процесс демона часто, но не всегда, является процессом инициализации . Демон обычно создается либо процессом, разветвляющим дочерний процесс, а затем немедленно завершающимся, что заставляет init принять дочерний процесс, либо процессом init, непосредственно запускающим демон. Кроме того, демон, запускаемый путем разветвления и выхода, обычно должен выполнять другие операции, такие как отключение процесса от любого управляющего терминала (tty). Такие процедуры часто реализуются в различных вспомогательных подпрограммах, таких как daemon (3) в Unix.

Системы часто запускают демонов во время загрузки, которые будут отвечать на сетевые запросы, активность оборудования или другие программы, выполняя определенные задачи. Демоны, такие как cron, также могут выполнять определенные задачи в запланированное время.

Терминология [ править ]

Этот термин был придуман программистами проекта MAC Массачусетского технологического института . Они взяли имя от демона Максвелла , воображаемого существа из мысленного эксперимента, который постоянно работает в фоновом режиме, сортируя молекулы. [2] Системы Unix унаследовали эту терминологию. Демон Максвелла согласуется с интерпретацией демона в греческой мифологии как сверхъестественного существа, действующего на заднем плане, без особой предвзятости к добру или злу. Однако BSD и некоторые ее производные использовали в качестве талисмана христианского демона, а не греческого демона . [ необходима цитата ]

Слово демон является альтернативой написания демона, [3] и является выраженным / д я м ən / DEE -mən . В контексте компьютерного программного обеспечения, оригинальное произношение / d я м ən / дрейфует к / d eɪ м ən / ДЕНЬ -mən для некоторых громкоговорителей. [1]

Альтернативные термины для демона - это служба (используется в Windows, начиная с Windows NT - и позже также в Linux), запущенная задача (IBM z / OS ), [4] и призрачное задание (XDS UTS ).

После того, как этот термин был принят для использования в компьютерах, он был рационализирован как « бэкроним » для Disk And Execution MONitor. [5]

Демоны, которые подключаются к компьютерной сети, являются примерами сетевых служб .

Реализации [ править ]

Unix-подобные системы [ править ]

В строго техническом смысле Unix-подобный системный процесс является демоном, когда его родительский процесс завершается, и демону назначается процесс init (процесс номер 1) в качестве родительского процесса, и он не имеет управляющего терминала. Однако в более общем плане демон может быть любым фоновым процессом, независимо от того, является ли он дочерним по отношению к процессу инициализации или нет.

В Unix-подобной системе общий метод превращения процесса в демона, когда процесс запускается из командной строки или из сценария запуска, такого как сценарий инициализации или сценарий SystemStarter , включает:

  • Необязательно удаление ненужных переменных из окружения.
  • Выполнение в качестве фоновой задачи путем разветвления и выхода (в родительской «половине» вилки). Это позволяет родительскому элементу демона (оболочке или процессу запуска) получать уведомление о выходе и продолжать нормальное выполнение.
  • Отсоединение от вызывающего сеанса, обычно выполняется одной операцией setsid():
    • Диссоциация от управляющего терминала .
    • Создание нового сеанса и становление его лидером.
    • Стать лидером группы процессов .
  • Если демон хочет гарантировать, что он не получит новый управляющий tty даже случайно (что происходит, когда лидер сеанса без управляющего tty открывает свободный tty), он может выполнить ответвление и снова выйти. Это означает, что он больше не является лидером сеанса в новом сеансе и не может получить управляющий tty.
  • Установка корневого каталога ( / ) в качестве текущего рабочего каталога, чтобы процесс не оставил в использовании какой-либо каталог, который может находиться в смонтированной файловой системе (что позволяет его размонтировать).
  • Изменение umask на 0, чтобы разрешить open(), creat()и другие вызовы операционной системы, чтобы предоставить свои собственные маски разрешений и не зависеть от umask вызывающего.
  • Перенаправление файловых дескрипторов 0, 1 и 2 для стандартных потоков ( stdin , stdout и stderr ) в / dev / null или файл журнала и закрытие всех остальных файловых дескрипторов, унаследованных от родительского процесса.

Если процесс запускается демоном суперсервера , таким как inetd , launchd или systemd , демон суперсервера будет выполнять эти функции для процесса, [6] [7] [8] за исключением демонов старого стиля, которые не преобразован для работы под управлением systemd и указан как Type = forking [8] и "многопоточные" серверы дейтаграмм под inetd . [6]

MS-DOS [ править ]

В среде Microsoft DOS программы , подобные демонам, были реализованы как программное обеспечение для прерывания и сохранения резидентности (TSR).

Windows NT [ править ]

В системах Microsoft Windows NT программы, называемые службами Windows, выполняют функции демонов. Они работают как процессы, обычно не взаимодействуют с монитором, клавиатурой и мышью и могут запускаться операционной системой во время загрузки. В Windows 2000 и более поздних версиях службы Windows настраиваются, запускаются и останавливаются вручную с помощью панели управления , специальной программы управления / настройки, компонента Service Controller диспетчера управления службами ( команда sc ), команд net start и net stop или PowerShell сценариев системы.

Однако любое приложение Windows может выполнять роль демона, а не только службы, а некоторые демоны Windows могут работать как обычный процесс.

Классическая Mac OS и macOS [ править ]

В классической Mac OS дополнительные функции и услуги предоставлялись файлами, загружаемыми во время запуска и исправляющими операционную систему; они были известны как системные расширения и панели управления . Более поздние версии классической Mac OS дополнили их полноценными безликими фоновыми приложениями : обычными приложениями, работающими в фоновом режиме. Для пользователя они все еще описывались как обычные системные расширения.

macOS , которая является системой Unix , использует демонов. Обратите внимание, что macOS использует термин «службы» для обозначения программного обеспечения, которое выполняет функции, выбранные в меню «Службы» , а не использует этот термин для демонов, как это делает Windows.

Этимология [ править ]

По словам Фернандо Дж. Корбато , который работал над проектом MAC в 1963 году, его команда была первой, кто использовал термин демон, вдохновленный демоном Максвелла , воображаемым агентом в физике и термодинамике, который помогал сортировать молекулы, заявив: «Мы фантастически начали использовать слово демон для описания фоновых процессов, которые без устали выполняли системные обязанности ". [9]

В общем смысле демон - это более старая форма слова «демон» от греческого δαίμων. В Руководстве по системному администрированию Unix Эви Немет говорит о демонах следующее: [10]

Многие люди отождествляют слово «демон» со словом «демон», подразумевая некую сатанинскую связь между UNIX и преступным миром . Это вопиющее недоразумение. «Демон» на самом деле гораздо более старая форма «демона»; Демоны не имеют особой предвзятости к добру или злу, а скорее служат для определения характера или личности человека. Представление древних греков о «личном демоне» было похоже на современное понятие «ангел-хранитель» - эвдемония - это состояние, когда добрый дух помогает или защищает. Как правило, системы UNIX кишат как демонами, так и демонами.

Еще одна характеристика мифологического символизма состоит в том, что демон - это нечто невидимое, но всегда присутствующее и действующее по своей воле. В « Теагах» , приписываемых Платону , Сократ описывает своего личного демона как нечто вроде современной концепции моральной совести: «Милость богов дала мне чудесный дар, который не покидал меня с детства. голос, который, когда он дает себя услышать, удерживает меня от того, что я собираюсь сделать, и никогда не подстегивает меня ". [ необходима цитата ]

См. Также [ править ]

  • Сообщение о возврате (также известное как демон почтовой программы)
  • Список этимологий компьютерных терминов
  • Список демонов Unix
  • Обертка службы
  • Программный бот
  • Прекратить и остаться резидентом программы
  • Пользовательское пространство
  • веб-сервис
  • Служба Windows

Ссылки [ править ]

  1. ^ а б Эрик С. Реймонд . "демон" . Файл жаргона . Проверено 22 октября 2008 .
  2. ^ Корбато (2002-01-23). «Поверьте нам на слово» . Проверено 20 августа 2006 .
  3. ^ "Мерриам-Вебстер определение демона" . Merriam-Webster Интернет . Проверено 5 августа 2009 .
  4. ^ «Центр знаний IBM - Глоссарий терминов и сокращений z / OS» . IBM .
  5. ^ «Определение демона» . www.linfo.org .
  6. ^ a b inetd(8)  -  Руководство администратора системы FreeBSD
  7. ^ launchd.plist(5)  -  Руководство по форматам файлов Darwin и macOS
  8. ^ a b "systemd.service" . freedesktop.org . Проверено 25 августа 2012 года .
  9. ^ "Происхождение слова Демон" .
  10. ^ "Демон BSD" . Freebsd.org . Проверено 15 ноября 2008 .

Внешние ссылки [ править ]

  • Программирование сервера демона Unix
  • Linux Daemon Написание HOWTO