у чому полягає технічна різниця між демон, службою та процесом?


120

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


3
Це найкраще підходить для StackOverflow, де про нього зручно вже запитати та відповісти .
Том Броссман

5
@Tom: Ні, повідомлення в SE не відповідає, що таке послуга. І загалом відповіді тут більш детальні.
Mads Skjern

3
@TomBrossman, Пост, з яким ви пов’язали, не говорить про послуги .
Pacerier

4
StackOverflow стосується кодування. deamons - це річ unix, немає кращого місця для запитання, ніж тут
Mr.Robot

1
Так? як це питання можна було коли-небудь закрити?
Яків Влійм

Відповіді:


123

Демони - Daemon нічого НЕ стоять для дисків і Execution Monitor ( http://www.takeourword.com/TOW146/page4.html ). Це процеси, які працюють у фоновому режимі і не є інтерактивними. У них немає керуючого терміналу.

Вони виконують певні дії у визначений час або у відповідь на певні події. У * NIX назви демонів закінчуються на d .

Послуги - У Windows демони називають службами .

Якщо вам цікаво, чому * NIX має службу з іменем команди , вона просто використовується для запуску сценаріїв init (скорочення для ініціалізації scriptrunlevel ).

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

Джерела та додаткова інформація :


2
Процеси мають ще кілька станів на Linux, ось відмінна схема: linux-tutorial.info/modules.php?name=MContent&pageid=84
Дітріх Епп

Цей фрагмент офіційної документації Ubuntu говорить про "послуги", і я думаю, що вони не говорять про Windows! То я повинен просто читати це як демон? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
Насправді ОП запитує про послуги в Ubuntu, в той час як ця відповідь розповідає про сервіси в Windows. Тож очевидно відповідь Анона правильна
Мадс Скернер

відповідно до serverfault.com/questions/129055/… демони та послуги не однакові
Mr.Robot

41
  1. Демон є фон, неінтерактивному програмою . Він від'єднаний від клавіатури та відображення будь-якого інтерактивного користувача. Слово демон для позначення фонової програми походить від культури Unix; це не універсально.

  2. Послуга є програмою , яка відповідає на запити від інших програм в протягом деякого межпроцессного механізму зв'язку (зазвичай через мережу). Сервіс - це те, що надає сервер. Наприклад, послуга картографування портів NFS надається у вигляді окремої послуги портмапи, яка реалізується як portmapdдемон.

    Служба не повинна бути демоном, але зазвичай є. У програмі користувача із графічним інтерфейсом може бути вбудована послуга: наприклад, програма для обміну файлами. Інший приклад - служба X Window, яка є все лише поза фоном: вона переймає ваш екран, клавіатуру та вказівний пристрій. Це сервіс, оскільки він відповідає на запити програм (для створення та маніпулювання Windows, тощо), які можуть бути навіть в інших місцях мережі. Але служба X також відповідає на кожен ваш натискання клавіші та миші.

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

    Всередині процесу ресурси інших процесів і ядра є невидимими і не мають прямого доступу (принаймні, не для потоку, який виконує код простору користувача). Наприклад, немає можливості посилатися на відкриті файли іншого процесу або на їх простір пам'яті; це так, ніби цих речей навіть не існує.

    Цей процес та його відношення до ядра та інших процесів, можливо, є найбільш важливою абстракцією в операційних системах, схожих на Unix. Ресурси системи поділяються на процеси, і майже все розуміється як відбувається всередині того чи іншого процесу.


Не вдалося отримати пам'ять інших процесів, запитуючи безпосередньо оперативну пам'ять системи?
Pacerier

1
Процес, як правило, не може здійснювати запит безпосередньо на оперативну пам'ять системи. Сучасні ОС використовують віртуальний адресний простір ( en.wikipedia.org/wiki/Virtual_address_space ), тобто кожен процес може взаємодіяти лише з підробленим видом пам'яті, де ОС контролює саме те, що є доступним.
akroy

"Процес створює середовище для цих потоків виконання, схоже на те, що вони мають цілу машину для себе: це віртуальна машина." Дуже приємний спосіб його викласти, ніколи про це не думав так чітко. Але звичайно абстракція протікає. Мовляв, процес, який може виміряти час (який він може зробити навіть через процесор), може помітити, що він не один на машині. І звичайно, ОС має механізми для перерахування інших процесів.
masterxilo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.