본문 바로가기
CS

[CS/개발지식] 프로세스 / 데몬 / 서비스 차이

by 두유_ 2024. 9. 9.

[1] 프로세스 (Process)

가. 프로세스의 정의

프로세스는 컴퓨터에서 실행 중인 프로그램이다. 우리가 프로그램을 실행하면 그 프로그램은 메모리에 올라가고 CPU가 그 작업을 처리하게 되는데, 이 실행 중인 상태를 프로세스라고 한다.

나. 프로세스의 특징

  1. 메모리에서 실행: 프로그램이 메모리에 적재되어야 CPU가 그 프로그램을 처리할 수 있다. 프로세스는 메모리에 올라간 후 CPU에 의해 실제로 실행된다.
  2. 고유한 ID (PID): 모든 프로세스는 고유한 번호를 가지는데, 이를 프로세스 ID (PID)라고 한다. 이 ID를 통해 여러 프로세스를 구별하고 관리할 수 있다.
  3. 자원 관리: 운영체제는 여러 프로세스가 동시에 실행되도록 관리하는데, 이를 위해 메모리와 CPU 시간을 프로세스들이 나눠서 쓸 수 있도록 조정한다.

다. 프로세스의 종류

  • 전경 프로세스 (Foreground Process):
    • 화면에서 보면서 직접 조작할 수 있는 프로그램들이다.
    • 크롬이나 엣지 같은 웹 브라우저를 실행하면, 이 브라우저는 하나의 프로세스로 동작한다. 사용자가 직접 볼 수 있는 이 웹 브라우저는 전경 프로세스에 해당한다.
    • 사용자와 상호작용하는 프로세스
    • 최소화를 하더라도 눈에 보이는 프로세스
    • 인터넷, 카카오톡, 메모장, 그림판 등 눈에 보이는 프로그램
  • 백그라운드 프로세스 (Background Process):
    • 화면에서는 보이지 않지만, 컴퓨터가 뒤에서 실행하고 있는 프로그램들이다.
    • 예를 들어, 자동으로 실행되는 백업 프로그램이나 소프트웨어 업데이트 프로그램이 이에 해당한다.
    • 용자와 상호작용하지 않고 시스템에서 실행되는 프로세스
    • 백신 프로그램, 그래픽 드라이버 등 눈에 보이지 않는 프로그램

프로세스는 우리가 실행하는 프로그램이 컴퓨터에서 실제로 돌아가는 상태라고 이해할 수 있다.


[2] 데몬 (Daemon)

가. 데몬(Daemon)의 정의

  • 데몬은 사용자가 직접 조작하지 않고, 백그라운드에서 자동으로 실행되면서 특정 작업을 처리하는 프로그램이다.
  • 사용자의 요청을 기다리고 있다가 요청이 오면 이에 반응하는 역할을 한다.

나. 데몬의 특징

  1. 백그라운드에서 실행: 데몬은 우리가 화면에서 보거나 직접 조작하지 않아도, 컴퓨터 뒤에서 항상 실행되고 있다.
  2. 대기 상태: 데몬은 특정 요청이 올 때까지 메모리에 상주하면서 계속 대기하고 있다가, 요청이 들어오면 바로 작업을 처리할 수 있다.
  3. 리스너 역할: 사용자의 요청이나 시스템의 요구에 즉각적으로 반응할 수 있도록 기다리고 있다. 이를 '리스너'라고 할 수 있다.

다. 데몬의 어원

  • 맥스웰의 도깨비: 데몬이라는 용어는 물리학 실험에서 나온 개념인 '맥스웰의 도깨비'에서 유래했다. 이 도깨비는 보이지 않는 곳에서 일을 조용히 처리하는데, 데몬 프로그램도 마찬가지로 보이지 않는 곳에서 조용히 백그라운드에서 작업을 처리하기 때문에 이와 비슷하다고 여겨졌다.
  • 유령 또는 악마: 데몬은 또한 '악마'나 '유령'을 뜻하는데, 유령이 항상 떠다니며 조용히 활동하는 것처럼, 데몬도 백그라운드에서 조용히 작동하고 있는 프로그램이다.

라. 데몬의 사용 예시

1. 운영 체제의 백그라운드 서비스

  • 리눅스/유닉스 시스템에서 데몬은 시스템의 중요한 작업을 백그라운드에서 수행하는 프로세스다.
    • cron 데몬: 주기적인 작업을 예약하여 특정 시간에 스크립트나 명령어를 자동으로 실행한다.
    • sshd 데몬: 원격으로 시스템에 접속할 수 있도록 SSH 서비스를 제공하는 데몬이다.
    • httpd 데몬: 데몬은 항상 작동해야 하는 서버 환경에서 주로 사용된다. 예를 들어, Apache 웹서버의 httpd는 대표적인 데몬 프로그램이다. 이 프로그램은 서버에서 백그라운드에서 실행되며, 웹 요청이 들어오면 자동으로 응답해준다.

2. 네트워크 관련 데몬

  • 네트워크 통신을 처리하는 데몬은 서버의 네트워크 트래픽을 관리하거나 라우팅하는 역할을 한다.
    • dnsmasq 데몬: 네트워크 내에서 DNS와 DHCP 서버 역할을 한다.
    • ftpd 데몬: FTP 서버를 제공하는 데몬으로, 파일 업로드 및 다운로드를 처리한다.

3. 보안 및 모니터링 데몬

  • 보안 및 시스템 모니터링을 위한 데몬도 많이 사용된다.
    • fail2ban 데몬: 로그 파일을 모니터링하고 비정상적인 로그인 시도가 감지되면 해당 IP를 차단한다.
    • auditd 데몬: 시스템의 보안 관련 이벤트를 기록하는 데몬으로, 시스템 감사를 위한 데이터를 수집하고 기록한다.

4. 데이터베이스 관리 데몬

  • 데이터베이스 서버에서는 데몬이 쿼리를 처리하고, 데이터베이스 작업을 백그라운드에서 수행한다.
    • mysqld 데몬: MySQL 데이터베이스 서버를 실행하는 데몬으로, 클라이언트의 요청을 처리하고 응답한다.
    • postgresql 데몬: PostgreSQL 데이터베이스 서버를 관리하는 데몬이다.

5. 파일 시스템 및 스토리지 관리 데몬

  • 스토리지와 파일 시스템 관리를 위해 데몬이 사용되기도 한다.
    • nfsd 데몬: 네트워크 파일 시스템(NFS)을 제공하여, 클라이언트가 네트워크를 통해 파일에 접근할 수 있게 한다.
    • automount 데몬: 파일 시스템을 자동으로 마운트하고 언마운트하여 외부 장치나 네트워크 드라이브를 자동으로 연결한다.

6. 백그라운드 작업 처리 데몬

  • 시간이 오래 걸리는 작업을 백그라운드에서 처리하여 사용자에게 대기 시간을 줄여준다.
    • printd 데몬: 인쇄 작업을 백그라운드에서 처리하며, 사용자 인터페이스에 영향을 주지 않고 인쇄 요청을 관리한다.
    • uucp 데몬: 파일 전송, 이메일 전송 등을 백그라운드에서 처리하는 전통적인 유닉스 데몬이다.

마. 데몬 프로그램의 예

유닉스나 리눅스 운영체제에서 데몬 프로그램은 주로 이름이 'd'로 끝난다.

  • inetd: 인터넷 서비스를 관리하는 데몬
  • httpd: 웹서버 데몬
  • nfsd: 네트워크 파일 시스템 데몬
  • sshd: SSH 접속을 관리하는 데몬
  • named: DNS 서버를 운영하는 데몬
  • lpd: 프린터 관련 작업을 처리하는 데몬

데몬은 서버에서 필수적인 역할을 하며, 자동으로 시스템의 다양한 요청에 대응하는 중요한 프로그램이다.


[3] 서비스 (Service)

가. 서비스(Service)의 정의

  • 서비스는 백그라운드에서 실행되는 응용 프로그램으로, 주로 사용자와 직접 상호작용하지 않고 자동으로 특정 작업을 수행하는 프로그램이다.
  • 예를 들어, 네트워크 서비스, 데이터베이스 서버, 백업 서비스 등이 이에 해당한다.

나. 서비스의 특징

  1. 백그라운드 실행: 서비스는 사용자 인터페이스가 필요 없고, 시스템이 부팅될 때 자동으로 시작되며, 사용자가 로그인하지 않아도 계속 실행된다.
  2. 자동 시작: 시스템이 켜지면 자동으로 시작되며, 사용자가 로그인하지 않아도 계속해서 작업을 수행한다.

다. 데몬과 서비스의 차이

  • 윈도우 OS: 백그라운드에서 실행되는 응용 프로그램을 서비스라고 부른다. 예를 들어, 네트워크 서비스나 데이터베이스 서버 같은 것들이 서비스에 해당한다.
  • 유닉스(리눅스) OS: 백그라운드에서 실행되는 응용 프로그램을 데몬이라고 부른다.

즉, 윈도우에서는 서비스, 유닉스나 리눅스에서는 데몬이라고 불리며, 기능적으로 거의 비슷하다. 둘 다 사용자와 직접 상호작용하지 않고, 시스템에서 자동으로 실행되어 특정 작업을 수행한다.


[4] 프로세스, 데몬, 서비스 차이

가. 데몬 vs 백그라운드 프로세스

  1. 프로세스와 데몬의 차이
  • 프로세스: 필요에 따라 사용자가 직접 실행하는 프로그램이다. 예를 들어, 노트패드를 실행하려면 사용자가 직접 클릭하거나 실행 명령을 입력해야 한다.
  • 데몬: 자동으로 실행되는 백그라운드 프로그램이다. 예를 들어, 백신 프로그램은 컴퓨터를 재부팅해도 자동으로 시작된다. 데몬은 주로 시스템 부팅 시 자동으로 시작되어 계속 실행된다.

2. 백그라운드 프로세스와 데몬의 차이

  • 백그라운드 프로세스:
    • 윈도우 운영체제에서 사용됨: 백그라운드에서 조용히 실행되는 프로세스다. 윈도우에서는 이를 서비스라고 부른다.
    • 기능: 데몬과 유사한 역할을 하지만, 용어와 관리 방법이 다르다. 윈도우에서 자동으로 시작되는 백그라운드 프로세스는 일반적으로 서비스 매니저를 통해 관리된다.
  • 데몬:
    • 유닉스/리눅스 운영체제에서 사용됨: 유닉스나 리눅스에서 시스템 레벨에서 실행되는 백그라운드 프로세스다.
    • 기능: 시스템의 특정 요청이나 작업을 처리하며, init 프로세스를 통해 실행된다.
    • init 프로세스는 시스템이 종료될 때까지 계속 실행되는 데몬 프로세스이며, 다른 모든 프로세스의 직간접적인 부모 프로세스이다.

3. 요약

  • 데몬: 유닉스/리눅스에서 사용되며, 시스템 부팅 시 자동으로 시작되고 계속 실행되는 프로세스.
  • 백그라운드 프로세스: 윈도우에서 사용되며, 사용자와 직접 상호작용하지 않고 백그라운드에서 실행되는 프로그램. 윈도우에서는 이를 서비스라고 한다.

데몬백그라운드 프로세스는 역할이 비슷하지만, 사용하는 운영체제와 관리 방법에 차이가 있다.

나. 데몬 vs 서비스

1. 개념적인 유사점

  • 데몬서비스는 비슷한 개념으로, 둘 다 백그라운드에서 자동으로 실행되며 시스템의 특정 작업을 수행하는 프로그램이다.

2. 운영 체제 차이

  • 데몬: 주로 유닉스 및 리눅스 운영체제에서 사용된다. 시스템의 여러 기능을 지원하며, 주로 서버 환경에서 사용된다.
  • 서비스: 주로 윈도우 운영체제에서 사용된다. 시스템의 다양한 프로그램과 서비스를 지원하며, 사용자가 직접 상호작용하지 않고 백그라운드에서 작업을 수행한다.

3. 사용처의 차이

  • 데몬:
    • 사용처: 서버에서 주로 사용되며, 시스템의 독립적인 기능을 수행한다. 예를 들어, 웹 서버나 데이터베이스 서버 등에서 사용된다.
    • 역할: 시스템 레벨에서 독립적으로 실행되며, 특정 작업을 수행하거나 시스템의 상태를 모니터링하는 등의 역할을 한다.
  • 서비스:
    • 사용처: 다른 프로그램이나 서비스를 지원하기 위해 실행된다. 예를 들어, 백업 서비스나 네트워크 서비스 등이 이에 해당한다.
    • 역할: 시스템의 상태를 모니터링하고 백그라운드에서 애플리케이션을 제어하며, 작업을 수행하는 역할에 초점이 맞춰져 있다.

4. 용어의 혼용

  • 두 용어는 때로 상호교환적으로 사용될 수 있으며, 컨텍스트에 따라 해석이 달라질 수 있다. 예를 들어, 리눅스에서 포트와 프로토콜 정보를 정의하는 /etc/services 파일이 있는 것처럼, 두 운영체제에서 용어가 혼용될 수 있다.
  • 윈도우 솔루션에서도 데몬이라는 용어를 사용하기도 한다. 이는 해당 솔루션이 항상 실행되어야 하는 경우, '프로세스'라는 용어보다는 '데몬'이라는 용어가 더 적합하다고 판단될 때 사용된다.

결론적으로, 데몬과 서비스는 비슷한 역할을 하지만, 주로 사용되는 운영체제와 그 사용 목적에 따라 약간의 차이가 있다.