...
프로세스 (Process)
프로세스는 메모리에 적재되어 CPU에 의해 실행되는 컴퓨터 프로그램을 지칭한다. 각 프로세스는 고유한 프로세스 ID(PID)를 가지며, 운영체제는 프로세스 간의 자원 공유를 관리한다. 예를 들어, 웹 브라우저를 실행하는 경우 브라우저라는 프로그램은 하나의 프로세스로 실행되는 것이다. 그리고 프로세스는 눈에 보이는 프로세스(foreground process) 와 눈에 보이지 않은 프로세스(background process) 로 구분된다.
포그라운드 프로세스 | 백그라운드 프로세스 |
사용자와 상호작용하는 프로세스 | 프로세스는 사용자와 상호작용하지 않고 시스템에서 실행되는 프로세스 |
최소화를 하더라도 눈에 보이는 프로세스를 포그라운드 프로세스 | 눈에 보이지 않지만 뒤에서 일을 하고 있는 프로세스를 백그라운드 프로세스 |
인터넷, 카카오톡, 메모장, 그림판 등 눈에 보이는 프로그램 | 백신 프로그램, 그래픽 드라이버, 마이크 드라이버 등 눈에 보이지 않는 프로그램 |
데몬 (Daemon)
데몬은 백그라운드에서 실행되는 프로그램으로, 사용자가 직접적으로 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 사용자의 요청을 기다리고 있다가 요청이 발생하면 이에 적절히 대응하는 리스너와 같은 역할을 한다. 즉, 메모리에 상주하면서 특정 요청이 오면 즉시 대응 할 수 있도록 대기중인 프로세스를 말한다.
Daemon 단어의 어원
데몬이란 용어는 맥스웰의 도깨비 사고 실험에서 영감을 얻어 탄생하였다. 맥스웰의 도깨비는 보이지 않는 곳에서 분자들을 골라주는 일을 하는데, 보이지 않는 곳에서 조용히 일한다는 점에서 맥스웰의 도깨비와 데몬 프로그램은 비슷하기 때문이다. 또한 데몬는 악마나 유령을 뜻하는데, 유령은 걷지 않고 항상 떠 있다는 점에서 백그라운드에서 조용하게 항상 수행되는 프로그램을 데몬 프로그램이라 부르게 된 것이다.
데몬은 항상 돌아가고 있어야하는 웹서버에 적합하여 일반적으로 서버에서 주로 사용된다. 대표적인 예로 Apache 웹서버의 httpd가 바로 데몬 프로그램이다. httpd는 웹서버에 백그라운드에서 실행되면서 서버로 들어오는 요청에 자동으로 응답해 준다.
이밖에도 유닉스(리눅스) 운영체제에서 운영체제에서 프로세스 이름 끝이 d로 끝나는 프로세스들이 대표적인데 inetd, httpd, nfsd, sshd, named, lpd 등이 있다.
서비스 명 | 데몬 명 | 정의 |
Linux 슈퍼데몬 | xinetd | Linux 내 여러 서비스를 한번에 관리 |
File Transfer Protocol | vsftpd | File을 전송하는 서비스 |
Secure Shell Service | sshd | 암호화 원격 작업이 가능한 서비스 |
Network File System | nfs | Network 를 이용하여 FileSystem 을 공유하는 서비스 |
Domain Name Service | named | IP와 Domain 을 mapping 시켜주는 서비스 |
Web Service | httpd | Browser 를 이용하여 웹 문서 페이지를 출력시킬 수 있는 서비스 |
Database Management | mysqld | DB를 관리하는 서비스 |
Mail Service(send) | sendmail | mail을 전송할 수 있는 서비스 |
서비스 (Service)
서비스는 백그라운드에서 실행되는 응용 프로그램이다. 윈도우 서비스는 일반적으로 사용자 인터페이스를 필요로 하지 않는 작업(네트워크 서비스, 데이터베이스 서버, 백업 서비스) 등을 수행한다. 이러한 서비스들은 시스템이 부팅될 때 자동으로 시작되며, 사용자가 로그인하지 않은 상태에서도 계속해서 실행된다.
이렇게만 보면 데몬과 서비스의 차이가 잘 와닿지 않을 것인데, 윈도우 OS에서는 백그라운드에서 실행되는 응용 프로그램을 service 라 부르고 유닉스(리눅스) OS에서는 daemon 이라고 불리운다고 보면 된다. 즉, 둘이 거의 비슷하다.
프로세스, 데몬, 서비스 차이
데몬 vs 백그라운드 프로세스
일반적으로 프로세스와 데몬의 차이는 프로세스는 필요시 실행시키는 것이고 데몬은 자동 실행이라는 것이다. 예를들어 노트패드를 실행시키려면 사용자가 직접 조작해야되지만, 백신 프로그램은 컴퓨터를 재부팅해도 자동으로 실행된다.
그럼 포그라운드가 아닌 백그라운드 프로세스와 데몬은 무슨 차이일까?
데몬과 백그라운드 프로세스의 가장 큰 차이점은 운영체제에서 사용되는 점이다. 데몬은 주로 유닉스나 리눅스와 같은 운영체제에서 사용되며 시스템 레벨에서 실행되는 반면, 백그라운드 프로세스는 윈도우 운영체제에서 사용되며 데몬과 비슷한 역할을 수행하지만 대신 서비스(Service)라는 용어를 사용한다는 점에서 미세한 차이가 있다고 보면 된다. 또한 데몬은 유닉스와 같은 운영체제에서는 일반적으로 init 프로세스를 통해 실행되는 반면, 윈도우 운영체제에서는 서비스 매니저를 통해 실행된다.
init 프로세스는 시스템이 종료될 때까지 계속 실행되는 데몬 프로세스이며 다른 모든 프로세스의 직간접 부모 프로세스이다.
데몬 vs 서비스
Daemon 과 Service는 비슷한 개념이지만, 운영 체제 차이점 있다고 했다. 그외에도 사용처에도 차이가 있는데, 데몬은 일반적으로 서버에서 주로 사용되고, 서비스는 다른 프로그램이나 서비스를 지원하기 위해 실행된다. 데몬은 시스템에서 독립적으로 실행되고, 서비스는 시스템의 상태를 모니터링하고, 백그라운드에서 실행되는 애플리케이션을 제어하고, 작업을 수행하는 등의 역할 지원하는데 초점이 맞춰져 있다는 뜻이다.
하지만 이들 용어는 종종 상호교환적으로 사용되기도 하며, 컴퓨터 시스템에서 다양한 역할을 수행하므로, 구체적인 용어 해석은 사용되는 컨텍스트에 따라 달라질 수 있다. 예를들어 리눅스에서 포트/프로토콜 정보를 정의해놓은 /etc/services 디렉토리가 있기 때문에 두 OS에서 '서비스'와 '데몬'은 혼용되어 쓰인다고 보면 된다.
그렇지만 윈도우 일반 솔루션에서도 데몬이라는 용어를 쓰기도 한다. 그 솔루션의 기능을 수행하기 위해서는 필수적으로 항상 실행이 되어 있어야 하기에, 프로세스라 부르면 조금 어색해져 데몬이라 부르는 것이다.
# 참고자료
https://hec-ker.tistory.com/323
https://jins-dev.tistory.com/entry/Daemon-%EA%B3%BC-Background-Process-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://blogger.pe.kr/770
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.