의견.png

데몬

위키원
125.141.56.75 (토론)님의 2020년 7월 27일 (월) 16:31 판
이동: 둘러보기, 검색

데몬(daemon)은 멀티태스킹 운영체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 ‘d’를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다.<ref name="dnzl"〈데몬〉, 《위키백과》 </ref>

데몬이란 서비스의 요청에 대해 은답하는 오랫동안 실행중인 백그라운드 프로세스다. 유닉스(리눅스 포함) 운영체제에서 이름이 "d"로 끝나는 프로세스들이 대표적인데 inetd, httpd, nfsd, sshd, named 와 lpd 등이 있다.

개요

데몬은 주기적인 서비스 요청을 처리하기 위해 계속 실행되는 프로그램을 말한다. 영어 발음은 데이먼(deɪmən) 또는 디먼(dimən)에 가깝다. 데몬은 수집된 요구들을 또다른 프로그램이나 프로세스들이 처리할 수 있도록 적절히 전달한다. 사전적 의미에 따르면, 신화에 나오는 디먼은 "신들과 사람들 중간에 위치하고 있는 일종의 수호신"이라고 되어 있다. 데몬은 대개 부모 프로세스를 갖지 않으며, 즉 PPID가 1이며, 따라서 프로세스 트리에서 init 바로 아래에 위치한다. 데몬이 되는 방법은 일반적으로 자식 프로세스를 포크(fork)하여 생성하고 자식을 분기한 자신을 죽이면서 init이 고아가 된 자식 프로세스를 자기 밑으로 데려가도록 하는 방식이다. 이러한 방법을 ‘fork off and die’라 부르기도 한다. 시스템은 시동할 때 데몬을 시작하는 경우가 많으며, 이런 데몬들은 네트워크 요청, 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당하게 된다. 그 밖에도 몇몇 리눅스에 있는 devfsd처럼 하드웨어 설정이나, cron처럼 주기적인 작업을 실행하는 등 기타 다양한 목적으로 사용된다. CD나 DVD에 대한 각종 CD 이미지 파일을 에뮬레이션하여 가상의 CD-ROM 드라이브의 역할을 하게 하는 프로그램. 시디스페이스와 비슷하며, 보통 그냥 "데몬"이라고 부른다.

데몬은 특별한 일이 없는 한 사용자와 상호 대화할 필요 없이 아무도 모르게 실행되어야 하기 때문에 터미널을 가지지 않는다. 또한 모든 데몬 프로세스는 부모 프로세스(PPID)가 1번으로 세팅된다. 이는 데몬 프로세스는 다른 어떤 프로세스의 영향도 받지 않음을 의미한다.

용어의 유래

도깨비나 유령을 뜻하는 데몬(daemon)이란 이름은 MIT의 MAC 프로젝트 프로그래머들이 만든 것이다. 처음 만들어질 때는 맥스웰의 도깨비 사고 실험에서 맥스웰이 언급한, 보이지 않는 곳에서 분자들을 골라주는 일을 하고 있는 유령에서 영감을 얻은 것이었다. 이후 유닉스 시스템은 이 용어를 받아들여 사용했다. 그리스 신화에서도 신들이 관여하지 않는 일을 처리하는 데몬이 등장하는데, 이는 사용자가 직접 신경쓰지 않도록 하면서 백그라운드에서 일을 처리해 주는 데몬의 역할과 맞아 떨어진다. BSD 계열의 운영 체제는 BSD 데몬을 마스코트로 삼았으나, 실제로 BSD의 마스코트는 기독교적 세계에서 그리는 악마의 모습을 귀엽게 만든 것이다. 또한 원래 daemon은 두문자어가 아니지만, disk and execution monitor로 두문자어처럼 뜻을 맞추어 말하기도 한다.

동작 방식

데몬 혼자 스스로 동작하는 독자형(Standalone)과 데몬을 관리하는 슈퍼 데몬에 의해 동작하는 방식이 있다. 독자형의 경우 시스템의 백그라운드에서 항상 동작하는데, 자주 호출되는 데몬이 아니라면 시스템의 자원을 낭비할 우려가 있다. 슈퍼 데몬에 의한 동작 방식은 평소에는 슈퍼 데몬만 동작하다가 서비스 요청이 오면 슈퍼 데몬이 해당 데몬을 동작시키는 것이다. 따라서 독자형보다는 서비스에 응답하는데 시간이 좀 더 걸릴 수 있지만 자원을 효율적으로 사용한다는 장점이 있다. 독자형이든 슈퍼 데몬에 의해 동작하는 형태든 데몬이 제대로 동작하지 않으면 시스템이 서비스를 제공할 수 없다.

각주

참고자료

같이 보기


  의견.png 이 데몬 문서는 인터넷에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.