Jaka jest różnica techniczna między demonem, usługą i procesem?


120

Chcę wiedzieć, jakie są różnice w zachowaniu demona, procesu i usługi działającej w Ubuntu.


3
Jest to lepsze dopasowanie do StackOverflow, gdzie wygodnie już zostało zadane i udzielono odpowiedzi .
Tom Brossman,

5
@Tom: Nie, ten post SE nie odpowiada na to, czym jest usługa. Ogólnie rzecz biorąc, odpowiedzi tutaj są bardziej skomplikowane.
Mads Skjern,

3
@TomBrossman, link, który podłączyłeś, nie mówi o usługach .
Pacerier

4
StackOverflow polega na kodowaniu. diamony są rzeczą uniksową, nie ma lepszego miejsca do zapytania niż tutaj
Mr.Robot

1
Co? jak to pytanie można kiedykolwiek zamknąć?
Jacob Vlijm

Odpowiedzi:


123

Daemons - Daemon nie oznacza Monitora dysku i wykonania ( http://www.takeourword.com/TOW146/page4.html ). Są to procesy działające w tle i nie są interaktywne. Nie mają terminala sterującego.

Wykonują określone działania w określonych momentach lub w odpowiedzi na określone zdarzenia. W * NIX nazwy demonów kończą się na d .

Usługi - w systemie Windows demony są nazywane usługami .

Jeśli zastanawiasz się, dlaczego * NIX ma komendę o nazwie usługa , jest ona po prostu używana do uruchamiania skryptów inicjujących (skrót do inicjalizacji scriptrunlevel ).

Proces - proces jest uruchomionym programem. W określonym momencie może być uruchomiony , uśpiony lub zombie (proces zakończony, ale czeka, aż proces nadrzędny przejmie wartość zwracaną).

Źródła i dalsze informacje :


2
Procesy mają jeszcze kilka stanów w Linuksie, oto doskonały diagram: linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp

Ta część oficjalnej dokumentacji Ubuntu mówi o „usługach” i myślę, że nie mówią o Windowsie! Czy powinienem to po prostu odczytać jako demona? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
W rzeczywistości OP pyta o usługi w Ubuntu, podczas gdy ta odpowiedź mówi o usługach w systemie Windows. Więc oczywiście odpowiedź Anona jest poprawna
Mads Skjern

według serverfault.com/questions/129055/... demony i usługi nie są takie same
Mr.Robot

41
  1. Demon jest tło, non-interactive programu . Jest odłączony od klawiatury i wyświetlacza każdego interaktywnego użytkownika. Słowo demon oznaczające program działający w tle pochodzi z kultury uniksowej; to nie jest uniwersalne.

  2. Usługa jest program, który odpowiada na żądania z innych programów na niektóre między procesami mechanizmu komunikacji (zazwyczaj przez sieć). Usługa jest tym, co zapewnia serwer. Na przykład usługa mapowania portów NFS jest udostępniana jako osobna usługa mapowania portów, która jest implementowana jako portmapddemon.

    Usługa nie musi być demonem, ale zwykle nim jest. Aplikacja użytkownika z GUI może mieć wbudowaną usługę: na przykład aplikację do udostępniania plików. Innym przykładem jest usługa X Window, która nie działa w tle: przejmuje ekran, klawiaturę i urządzenie wskazujące. Jest to usługa, ponieważ odpowiada na żądania aplikacji (w celu tworzenia okien i manipulowania nimi itp.), Które mogą znajdować się nawet w innym miejscu w sieci. Ale usługa X reaguje również na każde naciśnięcie klawisza i ruch myszy.

  3. Proces to jeden lub więcej wątków wykonania wraz z ich wspólnym zestawem zasobów, z których najważniejszymi są przestrzeń adresowa i otwarte deskryptory plików. Proces tworzy środowisko dla tych wątków wykonywania, które wygląda jakby miały całą maszynę dla siebie: jest to maszyna wirtualna.

    Wewnątrz procesu zasoby innych procesów i jądra są niewidoczne i nie są bezpośrednio dostępne (przynajmniej nie dla wątku, który wykonuje kod przestrzeni użytkownika). Na przykład nie ma sposobu na odniesienie się do otwartych plików innego procesu lub ich przestrzeni pamięci; to tak, jakby te rzeczy nawet nie istniały.

    Proces i jego związek z jądrem i innymi procesami może być najważniejszą abstrakcją w systemach operacyjnych typu Unix. Zasoby systemu są podzielone na procesy i prawie wszystko jest rozumiane jako dzieje się w jednym procesie.


Czy nie można uzyskać pamięci innych procesów poprzez bezpośrednie zapytanie o pamięć RAM systemu?
Pacerier

1
Proces zasadniczo nie może bezpośrednio zapytać o pamięć RAM systemu. Nowoczesne systemy operacyjne wykorzystują wirtualne przestrzenie adresowe ( en.wikipedia.org/wiki/Virtual_address_space ), co oznacza, że ​​każdy proces może oddziaływać tylko z fałszywym widokiem pamięci, w którym system operacyjny kontroluje dokładnie to, co jest dostępne.
akroy

„Proces tworzy środowisko dla tych wątków wykonania, które wygląda jakby miały całą maszynę dla siebie: jest to maszyna wirtualna”. Bardzo fajny sposób na wyrażenie tego, nigdy tak o tym nie myślałem. Ale oczywiście abstrakcja przecieka. Na przykład proces, który może mierzyć czas (który może to zrobić nawet przez procesor), może zauważyć, że nie jest on sam na komputerze. I oczywiście system operacyjny zapewnia mechanizmy wyliczania innych procesów.
masterxilo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.