데몬, 서비스 및 프로세스의 기술적 차이점은 무엇입니까?


120

우분투에서 실행되는 데몬, 프로세스 및 서비스의 동작에 어떤 차이점이 있는지 알고 싶습니다.


3
이는 편리하게 이미 요청하고 답변 한 StackOverflow에 더 적합합니다 .
Tom Brossman

5
@Tom : 아니오, SE 게시물은 서비스가 무엇인지에 대한 답변을하지 않습니다. 그리고 전반적인 답변은 더 정교합니다.
Mads Skjern

3
@TomBrossman, 당신이 링크 한 게시물은 아무 서비스도 이야기하지 않습니다 .
Pacerier

4
StackOverflow는 코딩에 관한 것입니다. 악마는 유닉스 물건입니다. 여기보다 더 좋은 곳은 없습니다
Mr.Robot Mr.Robot

1
응? 이 질문을 어떻게 닫을 수 있습니까?
Jacob Vlijm

답변:


123

데몬 -데몬은 디스크 및 실행 모니터 ( http://www.takeourword.com/TOW146/page4.html ) 를 나타내지 않습니다 . 백그라운드에서 실행되며 대화식이 아닌 프로세스입니다. 제어 단자가 없습니다.

사전 정의 된 시간에 또는 특정 이벤트에 대한 응답으로 특정 작업을 수행합니다. * NIX에서 데몬의 이름은 d로 끝납니다 .

서비스 -Windows에서 데몬을 서비스 라고 합니다 .

* NIX에 service 라는 명령이있는 이유가 궁금하다면 초기화 스크립트 ( 초기화 scriptrunlevel의 약칭)를 실행하는 데 사용됩니다 .

프로세스 -프로세스가 실행중인 프로그램입니다. 특정 시점에서 running , sleeping 또는 zombie (완료된 프로세스이지만 반환 값을 가져 오기 위해 부모 프로세스를 기다리는 중) 일 수 있습니다.

출처 및 추가 정보 :


2
프로세스는 리눅스에서 몇 가지 상태를 더 가지고있다 : linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp

이 공식 우분투 문서는 "서비스"에 대해 이야기하고 있으며, Windows에 대해 이야기하고 있지 않다고 생각합니다! 그래서 그냥 데몬으로 읽어야합니까? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
실제로 OP는 Ubuntu 내의 서비스에 대해 묻는 반면이 답변은 Windows의 서비스에 대해 알려줍니다. Anon의 대답은 정답입니다
Mads Skjern

주문에 따라하는 것은 할 수 serverfault.com/questions/129055/... 데몬과 서비스는 동일하지 않습니다
Mr.Robot

41
  1. 데몬 배경, 비 대화 형 프로그램 . 키보드에서 분리되어 대화식 사용자가 표시합니다. 백그라운드 프로그램을 나타내는 데몬이라는 단어는 유닉스 문화에서 온 것입니다. 보편적이지 않습니다.

  2. 서비스 A는 프로그램 (일반적으로 네트워크를 통해) 일부 프로세스 간 통신 메커니즘을 통해 다른 프로그램의 요청에 응답합니다. 서비스는 서버가 제공하는 것입니다. 예를 들어, NFS 포트 매핑 서비스는 portmapd데몬으로 구현되는 별도의 포트 맵 서비스로 제공됩니다 .

    서비스는 데몬 일 필요는 없지만 일반적으로 있습니다. GUI가있는 사용자 응용 프로그램에는 파일 공유 응용 프로그램과 같은 서비스가 내장되어있을 수 있습니다. 또 다른 예로는 X Window 서비스가 있는데, 배경, 화면, 키보드 및 포인팅 장치를 대신합니다. 이 서비스는 네트워크의 다른 곳에있을 수있는 응용 프로그램 (윈도우 생성 및 조작 등)의 요청에 응답하기 때문에 서비스입니다. 그러나 X 서비스는 모든 키 입력 및 마우스 움직임에도 반응합니다.

  3. 프로세스는 공유 자원 세트와 함께 하나 이상의 실행 스레드이며 , 그 중 가장 중요한 것은 주소 공간 및 열린 파일 디스크립터입니다. 프로세스는 이러한 전체 실행 스레드에 대한 환경을 만들어 전체 머신 자체를 가지고있는 것처럼 보입니다. 가상 머신입니다.

    프로세스 내에서 다른 프로세스와 커널의 리소스는 보이지 않으며 직접 액세스 할 수 없습니다 (적어도 사용자 공간 코드를 실행하는 스레드에는 해당되지 않음). 예를 들어, 다른 프로세스의 열린 파일 또는 해당 메모리 공간을 참조 할 방법이 없습니다. 마치 그런 것들이 존재하지 않는 것처럼 보입니다.

    프로세스와 커널 및 기타 프로세스와의 관계는 아마도 유닉스 계열 운영 체제에서 가장 중요한 추상화 일 것입니다. 시스템의 리소스는 프로세스로 분할되며 거의 모든 프로세스가 프로세스간에 발생하는 것으로 이해됩니다.


시스템의 RAM을 직접 쿼리하여 다른 프로세스의 메모리를 얻을 수 없습니까?
Pacerier

1
프로세스는 일반적으로 시스템의 RAM을 직접 쿼리 할 수 ​​없습니다. 최신 OS는 가상 주소 공간 ( en.wikipedia.org/wiki/Virtual_address_space )을 사용합니다. 즉, 각 프로세스는 OS가 액세스 가능한 것을 정확하게 제어하는 ​​가짜 메모리보기와 만 상호 작용할 수 있습니다.
akroy

"프로세스는 이러한 전체 실행 스레드를위한 환경을 생성합니다.이 스레드는 전체 머신 자체가 가상 머신입니다." 그것을 넣는 아주 좋은 방법은 그렇게 명확하게 생각하지 않았습니다. 그러나 물론 추상화가 유출되고 있습니다. 마찬가지로, 시간을 측정 할 수있는 프로세스 (프로세서를 통해서도 수행 할 수있는 프로세스)는 시스템에서 혼자가 아니라는 것을 알 수 있습니다. 물론 OS는 다른 프로세스를 열거하는 메커니즘을 제공합니다.
masterxilo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.