ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 데몬의 차이
    성능, 오해와 진실 2021. 1. 2. 22:15

     

    프로세스 (Process)와 데몬 (Daemon)을 구분 없이 사용하는 사례가 많기에 정확한 이해를 돕고자 정리해본다.

     

    Process

    • 프로그램의 실행 상태
    • 실행 및 종료를 자유롭게 수행

     

    Daemon

    • 항상 수행되고 있는 프로세스
    • 사용자가 직접 제어하지 않고 백그라운드에서 수행
    • 주로, 시스템 스타트업 시 자동으로 기동되는 프로세스를 지칭
    • inetd, syslogd, crond, httpd ...

     

     


     

     

    프로세스와 데몬, 둘 다 프로세스이나, 데몬은 특별히 다르게 불린다.

     

    먼저, 프로세스를 살펴보면,

    디스크에 저장되어 있는 notepad.exe는 프로그램이다. 이것을 실행시키면 notepad.exe는 메모리로 올라간다. 주거지 이동이 일어난다. 이렇게 CPU가 프로그램에 생명을 불어넣어 메모리로 이동시켜 별도의 실행 오브젝트로 만든 상태가 프로세스이다.

     

    그러면, 데몬은?

    많이 사람들이 잘못 사용하고 있는, 디먼으로 발음되는 데몬의 뜻은 악령! 악령은 죽지 않는다. 둘 다 프로세스이긴 하나, 데몬은 항상 떠 있다. 죽지 않고..

    주로 OS가 기동 될 때 자동으로 실행되고, 이름 뒤에 데몬을 뜻하는 d가 붙는다. inetd, syslogd, crond 같은 것들이다. 이런 프로세스들은 네트워크 요청이나 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당하거나 주기적인 작업을 실행하게 된다.
    그런데, 일반 솔루션에서도 데몬이라는 용어를 쓰기도 한다. 그리고, 경우에 따라 데몬을 kill 시키기도 하고 다시 기동 하기도 한다. 하지만, 그 솔루션의 기능을 수행하기 위해서는 필수적으로 항상 실행이 되어 있어야 하기에 데몬이라 부르게 되는 것이고, 이것을 프로세스라 부르면 조금 어색해지게 된다. 또한, 일반적인 프로세스를 데몬이라 부르는 경우도 이상하게 들린다.

     

    [데몬의 실행 방식]

    1. Stand-alone 방식 (항상 실행 대기)
    이 방식의 데몬들은 자기 스스로 시스템에 상주하며 클라이언트 요청에 응답을 보내주는 방식으로, 주로 아파치 데몬 (httpd)처럼 클라이언트의 요청이 잦은 경우 이런 방식으로 실행된다.
    Stand-alone 방식의 데몬들은 inetd 방식보다는 클라이언트 요청에 신속하게 대응하는 장점이 있으나, 이들이 시스템에서 많이 생성되면 자원 낭비가 커지고 퍼포먼스도 영향을 받게 된다.

    2. inetd 방식 (클라이언트 요청이 있을 때만 실행)
    Stand-alone처럼 자기 스스로 독립적으로 시스템에서 실행되는 것이 아니라, inetd라는 수퍼 데몬이 시스템에서 대기하고 있다가 클라이언트 요청이 들어오면 inetd에 의해 해당 서비스를 제공해줄 데몬을 실행시키는 방식이다. telnet이나 ftp같이 비교적 클라이언트의 요청 빈도가 낮은 서비스들은 이런 inetd 방식이 시스템 리소스 활용 측면에서는 유리하다.
    그러나, 아파치 데몬같이 클라이언트의 자잘한 요청이 많은 서비스에 대해서는, inetd 방식이 오히려 시스템 효율을 떨어뜨리게 된다. inetd 데몬은 스탠드 얼론 방식으로 실행되는 수퍼 데몬이며, 서비스 요청 시 inetd 데몬의 Child process로 다른 데몬이 실행되는 것이다.

     

     

    댓글

Designed by Tistory.