Демон (вычисления)
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( июнь 2018 г. ) |
В многозадачных компьютерных операционных демон ən ( / ˈ d iː m / / или ˈ ) d eɪ m ən / системах [1] — это компьютерная программа , которая работает как фоновый процесс , а не находится под прямым контролем интерактивного пользователя. Традиционно имена процессов демона заканчиваются буквой d , чтобы прояснить, что процесс на самом деле является демоном, и чтобы отличить демона от обычной компьютерной программы. Например, syslogd — это демон, реализующий функцию системного журналирования, и sshd — это демон, который обслуживает входящие SSH- соединения.
В Unix среде родительским процессом демона часто, но не всегда, является процесс init . Демон обычно создается либо процессом, который разветвляет дочерний процесс и затем немедленно завершает работу, тем самым заставляя init принять дочерний процесс, либо процессом init, непосредственно запускающим демон. Кроме того, демон, запускаемый путем разветвления и выхода, обычно должен выполнять другие операции, такие как отключение процесса от любого управляющего терминала (tty). Такие процедуры часто реализуются в различных удобных процедурах, таких как daemon(3) в Unix.
Системы часто запускают демоны во время загрузки , которые отвечают на сетевые запросы, активность оборудования или другие программы, выполняя некоторые задачи. Демоны, такие как cron, также могут выполнять определенные задачи в запланированное время.
Терминология
[ редактировать ]Этот термин был придуман программистами проекта MAC Массачусетского технологического института . По словам Фернандо Х. Корбато , который работал над проектом MAC в 1963 году, его команда была первой, кто использовал термин «демон», вдохновленный демоном Максвелла , воображаемым агентом в физике и термодинамике , который помогал сортировать молекулы, заявив: «Мы причудливо начали использовать слово «демон» для описания фоновых процессов, которые неустанно работали над выполнением системных задач». [2] Системы Unix унаследовали эту терминологию. Демон Максвелла согласуется с интерпретацией демона в греческой мифологии как сверхъестественного существа, действующего на заднем плане.
В общем смысле демон — это более старая форма слова «демон», от греческого δαίμων. В « Руководстве по системному администрированию Unix» Эви Немет говорит о демонах следующее: [3]
Многие люди приравнивают слово «демон» к слову «демон», подразумевая некую сатанинскую связь между UNIX и преисподней . Это вопиющее недоразумение. «Демон» на самом деле является гораздо более старой формой слова «демон»; демоны не имеют особого предубеждения к добру или злу, а скорее помогают определить характер или личность человека. Концепция «личного демона» у древних греков была похожа на современную концепцию «ангела-хранителя»: эвдемония — это состояние, когда добрый дух помогает или защищается. Как правило, системы UNIX наполнены как демонами, так и демонами.
Дальнейшая характеристика мифологического символизма заключается в том, что демон — это нечто невидимое, но всегда присутствующее и действующее по своей воле. В «Теагах» , приписываемых Платону , Сократ описывает своего личного демона как что-то вроде современной концепции моральной совести: «Благосклонность богов дала мне чудесный дар, который никогда не покидал меня с самого детства. голос, который, когда он становится услышанным, удерживает меня от того, что я собираюсь сделать, и никогда не побуждает меня к этому». [ нужна ссылка ]
В современном использовании в контексте компьютерного программного обеспечения слово демон произносится / ˈ d iː m ən / DEE -mən или / ˈ d eɪ m ən / DAY -mən . [1]
Альтернативными терминами для демона являются служба (используется в Windows, начиная с Windows NT, а позже и в Linux), запущенная задача (IBM z/OS ), [4] и призрачная работа (XDS UTS ). более общий термин «сервер» или «серверный процесс» Иногда используется , особенно для демонов, которые работают как часть клиент-серверных систем . [5]
После того, как этот термин был принят для использования на компьютере, он был рационализирован как бэкроним для Disk And Execution MONitor. [6] [1]
Демоны, подключающиеся к компьютерной сети, являются примерами сетевых служб .
Реализации
[ редактировать ]Unix-подобные системы
[ редактировать ]В строго техническом смысле Unix-подобный системный процесс является демоном, когда его родительский процесс завершается и демону назначается процесс инициализации (процесс номер 1) в качестве родительского процесса и он не имеет управляющего терминала. Однако в более общем смысле демоном может быть любой фоновый процесс, независимо от того, является ли он дочерним процессом процесса инициализации или нет.
В Unix-подобных системах общий метод превращения процесса в демона, когда процесс запускается из командной строки или из сценария запуска, такого как сценарий инициализации или сценарий SystemStarter , включает в себя:
- При необходимости удаление ненужных переменных из среды.
- Выполнение фоновой задачи путем разветвления и выхода (в родительской «половине» вилки). Это позволяет родительскому элементу демона (оболочке или процессу запуска) получать уведомление о выходе и продолжать нормальное выполнение.
- Отсоединение от вызывающего сеанса, обычно выполняемое одной операцией.
setsid()
:- Отключение от контролирующего терминала .
- Создание нового сеанса и становление лидером этого сеанса.
- Стать руководителем группы процессов .
- Если демон хочет гарантировать, что он не получит новый управляющий терминал даже случайно (что происходит, когда лидер сеанса без управляющего терминала открывает свободный терминал), он может разветвиться и снова выйти. Это означает, что он больше не является лидером нового сеанса и не может получить управляющий терминал.
- Установка корневого каталога ( / ) в качестве текущего рабочего каталога , чтобы процесс не использовал какой-либо каталог, который может находиться в смонтированной файловой системе (что позволяет его размонтировать).
- Изменение umask на 0, чтобы разрешить
open()
,creat()
и другие вызовы операционной системы, чтобы предоставить свои собственные маски разрешений и не зависеть от маски вызывающего объекта. - Перенаправление файловых дескрипторов 0, 1 и 2 для стандартных потоков ( stdin , stdout и stderr ) в /dev/null или файл журнала и закрытие всех остальных файловых дескрипторов, унаследованных от родительского процесса.
Если процесс запускается демоном суперсервера , например инетд , запуск или systemd , демон суперсервера выполнит эти функции для процесса, [7] [8] [9] за исключением демонов старого стиля, не преобразованных для работы под управлением systemd и указан как Тип=разветвление [9] и «многопоточные» серверы датаграмм под инетд . [7]
MS-DOS
[ редактировать ]В среде Microsoft DOS программы-демоны были реализованы как резидентные программы завершения и пребывания (TSR).
Windows НТ
[ редактировать ]В системах Microsoft Windows NT программы, называемые службами Windows, выполняют функции демонов. Они запускаются как процессы, обычно не взаимодействуют с монитором, клавиатурой и мышью и могут запускаться операционной системой во время загрузки. В Windows 2000 и более поздних версиях службы Windows настраиваются, запускаются и останавливаются вручную с помощью панели управления , специальной программы управления/конфигурации, компонента Service Controller диспетчера управления службами ( sc ), команда чистый старт и net stop или систему сценариев PowerShell .
Однако любое приложение Windows может выполнять роль демона, а не просто службы, а некоторые демоны Windows могут работать как обычный процесс.
Классическая Mac OS и macOS
[ редактировать ]В классической Mac OS дополнительные функции и службы предоставлялись файлами, загружаемыми во время запуска и исправлявшими операционную систему; они были известны как системные расширения и панели управления . Более поздние версии классической Mac OS дополнили их полноценными безликими фоновыми приложениями : обычными приложениями, работающими в фоновом режиме. Для пользователя они по-прежнему описывались как обычные системные расширения.
macOS , которая является системой Unix , использует демоны, но использует термин «службы» для обозначения программного обеспечения, которое выполняет функции, выбранные в меню «Службы» , а не использует этот термин для демонов, как это делает Windows.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с Эрик С. Рэймонд . «демон» . Файл жаргона . Проверено 22 октября 2008 г.
- ^ «Происхождение слова Демон» .
- ^ «Демон BSD» . Freebsd.org . Проверено 15 ноября 2008 г.
- ^ «Глоссарий терминов и сокращений z/OS» . Документация IBM . ИБМ . 31 января 2006 г.
- ^ «sshd: серверный процесс OpenSSH | Академия SSH» . www.ssh.com . Проверено 4 декабря 2023 г.
- ^ «Определение демона» . www.linfo.org .
- ^ Jump up to: а б FreeBSD системного администратора Руководство –
- ^ Darwin и macOS по форматам файлов Руководство –
- ^ Jump up to: а б "systemd.service" . сайт freedesktop.org . Проверено 25 августа 2012 г.
Внешние ссылки
[ редактировать ]- Программирование демонического сервера Unix на Wayback Machine (архивировано 30 октября 2019 г.)