데몬에 대해서 이해하기 위해 먼저 프로세스에 대해 살펴보자면
프로세스는 연속으로 실행되고 있는 컴퓨터 프로그램을 의미한다. 프로세스는 포그라운드 프로세스와 백그라운드 프로세스로 나눌 수 있다.
각각에 대해 살펴보면 포그라운드 프로세스는 인터넷 브라우저, 인텔리제이, 카톡, 등 눈에 보이는 프로그램을 말한다. 반면 백그라운드 포르세스는 백신 프로그램이나, 그래픽 드라이버와 같이 눈에 보이지 않는 프로그램등을 말한다.
또한 포그라운드 프로세스의 경우 사용자와 대화할 수 있는 표준 입출력 장치 즉, 터미널과 키보드(tty 또는 pts)를 사용하지만 백그라운드 프로세스의 경우 사용자에게 어떤 장치를 통해 값을 전달받는 것이 아니라, 스스로 동작하는 프로세스를 의미한다.
데몬은 유닉스(Unix) 운영체제에서 부팅 시 자동으로 켜져, 백그라운드에서 계속 실행되는 프로세스를 의미합니다.
- 백그라운드에서 계속 실행되는 프로세스라는 말에서 알 수 있는 것처럼, 데몬은 프로세스의 범주 안에 속하는 것이다.
- 데몬은 백그라운드 프로세스에 속하기 때문에 백그라운드 프로세스와 마찬가지로 TTY(터미널 장치)를 가지고 있지 않으며, 추가로 PPID(parent id)가 1이고 SID(session id) 역시 자신의 아이디와 같다는 특징이 있다.
- 유닉스(리눅스를 포함한) 운영체제에서 이름이 d로 끝나느 프로세스들이 대표적인 데몬 프로세스라고 불릴 수 있다.
- 웹서버 또한 서버에서 터미널을 통해 실행될 수는 있지만 tty, pts등을 사용해 사용자와 대화할 필요가 없기 때문에 대표적인 데몬 프로세스로 볼 수 있다.
데몬이 백그라운드에서 계속 실행되고 있다는 것은 요청이 오면 즉시 대응할 수 있도록 대기 중이라고도 볼 수 있는데요.
데몬이 실행되는 방식은 'Stand alond', 'Xinetd' 두 가지입니다.
데몬이 독자적으로 구동되는 방식으로 혼자서 요청을 받아 처리합니다. 메모리에 상주하며 항상 구동되고 있기 때문에 요청에 대한 응답 속도가 빨라서 요청이 빈번하게 일어나는 프로세스에 많이 사용됩니다.
속도는 빠르지만 메모리에 계속 상주하며 구동되고 있기 때문에 부하를 줄 수 있다는 점은 알아두어야 하는 부분입니다.
다른 데몬들의 상위에 존재하며, 슈퍼 데몬(Super Daemon)이라고도 불립니다.
요청이 왔을 때 자신(xinetd)에게 종속된 하위 데몬을 실행시키는 방식이지만, xinetd 자체는 stand alone 방식으로 동작합니다.
하위 데몬의 기준으로 본다면 응답 처리 속도는 위 stand alone 방식에 비해서 느리지만, 요청이 들어오지 않을 때는 휴먼 상태가 되어 메모리를 사용하지 않는다는 장점이 있으며, 요청이 빈번하지 않은 서비스에서 사용됩니다.