В чем техническая разница между демоном, сервисом и процессом?


121

Я хочу знать, каковы различия в поведении демона, процесса и службы, работающих в Ubuntu.


3
Это лучше всего подходит для StackOverflow, где его уже удобно спрашивать и отвечать .
Том Броссман

5
@ Том: Нет, этот пост SE не отвечает, что такое сервис. И в целом ответы здесь более сложны.
Мадс Скьерн

3
@ TomBrossman, пост, который вы связали, ничего не говорит об услугах .
Pacerier

4
StackOverflow - это кодирование. Деймоны - вещь Unix, лучше спросить
некуда,

1
А? как этот вопрос может быть закрыт?
Джейкоб Влейм

Ответы:


123

Деймоны - Демон не расшифровывается как Disk и Execution Monitor ( http://www.takeourword.com/TOW146/page4.html ). Это процессы, которые работают в фоновом режиме и не являются интерактивными. У них нет управляющего терминала.

Они выполняют определенные действия в заранее определенное время или в ответ на определенные события. В * NIX имена демонов заканчиваются на d .

Сервисы - в Windows демоны называются сервисами .

Если вам интересно, почему * NIX имеет команду с именем service , она просто используется для запуска сценариев инициализации (сокращение для инициализации scriptrunlevel ).

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

Источники и дополнительная информация :


2
У процессов есть еще несколько состояний в Linux, вот отличная диаграмма: linux-tutorial.info/modules.php?name=MContent&pageid=84
Дитрих Эпп

Эта часть официальной документации по Ubuntu говорит о «сервисах», и я думаю, что они не говорят о Windows! Так я должен просто прочитать это как демон? help.ubuntu.com/community/UbuntuBootupHowto
Мэдс Скьерн

1
На самом деле OP спрашивает об услугах в Ubuntu, а этот ответ рассказывает об услугах в Windows. Очевидно, что ответ Анона правильный
Мэдс Скьерн

в соответствии с serverfault.com/questions/129055/… демоны и сервисы не совпадают
Mr.Robot

41
  1. Демон является фон, неинтерактивная программой . Он отсоединен от клавиатуры и дисплея любого интерактивного пользователя. Слово «демон» для обозначения фоновой программы происходит из культуры Unix; это не универсально.

  2. Услуга является программой , которая отвечает на запросы от других программ в течение некоторого межпроцессного механизма связи (обычно через сеть). Сервис - это то, что предоставляет сервер. Например, служба сопоставления портов NFS предоставляется как отдельная служба сопоставления портов, которая реализована как portmapdдемон.

    Служба не обязательно должна быть демоном, но обычно это так. Пользовательское приложение с графическим интерфейсом может иметь встроенную службу: например, приложение для обмена файлами. Другим примером является служба X Window, которая работает не только в фоновом режиме: она захватывает ваш экран, клавиатуру и указывающее устройство. Это сервис, потому что он отвечает на запросы от приложений (для создания и управления окнами и т. Д.), Которые могут быть даже в других местах сети. Но служба X также реагирует на каждое нажатие клавиши и движения мыши.

  3. Процесс - это один или несколько потоков выполнения вместе с их общим набором ресурсов, наиболее важными из которых являются адресное пространство и дескрипторы открытых файлов. Процесс создает среду для этих потоков выполнения, которая выглядит так, словно у них есть целая машина: это виртуальная машина.

    Внутри процесса ресурсы других процессов и ядра невидимы и недоступны напрямую (по крайней мере, не для потока, выполняющего код пользовательского пространства). Например, нет способа сослаться на открытые файлы другого процесса или их пространство памяти; как будто эти вещи даже не существуют.

    Процесс и его отношение к ядру и другим процессам, возможно, составляют наиболее важную абстракцию в Unix-подобных операционных системах. Ресурсы системы разделены на процессы, и почти все понимается как происходящее внутри того или иного процесса.


Не могли бы вы получить память о других процессах, обратившись непосредственно к оперативной памяти системы?
Pacerier

1
Процесс, как правило, не может напрямую запрашивать ОЗУ системы. Современные ОС используют виртуальные адресные пространства ( en.wikipedia.org/wiki/Virtual_address_space ), что означает, что каждый процесс может взаимодействовать только с поддельным представлением памяти, где ОС контролирует именно то, что доступно.
Акрой

«Процесс создает среду для этих потоков выполнения, которая выглядит так, словно у них есть целая машина: это виртуальная машина». Очень хороший способ выразить это, никогда не думал об этом так ясно. Но, конечно, абстракция подтекает. Например, процесс, который может измерять время (что он может делать даже через процессор), может заметить, что он не один на машине. И, конечно, ОС предоставляет механизмы для перечисления других процессов.
masterxilo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.