데몬(daemon)의 개념
프로세스
프로세스는 메모리에 적재되어 CPU에 의해 실행되는 컴퓨터 프로그램을 지칭한다. 각 프로세스는 고유한 프로세스 ID(PID)를 가지며, 운영체제는 프로세스 간의 자원 공유를 관리한다. 예를 들어, 웹 브라우저를 실행하는 경우 브라우저라는 프로그램은 하나의 프로세스로 실행되는 것이다. 그리고 프로세스는 눈에 보이는 프로세스(foreground process) 와 눈에 보이지 않은 프로세스(background process) 로 구분된다.
백그라운드와 포그라운드
- Foreground
- 사용자와의 대화창구인 표준입력장치, 즉 터미널과 키보드를 통해 대화
- 사용자와의 대화창구인 표준입력장치, 즉 터미널과 키보드를 통해 대화
- Background
- 입력장치에 대해 터미널과의 관계를 끊은 모든 프로세스
- 사용자에게 무언가를 키보드(입력장치)를 통해 전달받지 않고 스스로 동작하는 프로세스
- 데몬이 백그라운드 프로세스에 속해있다!
포그라운드 프로세스 | 백그라운드 프로세스 |
---|---|
사용자와 상호작용하는 프로세스 | 프로세스는 사용자와 상호작용하지 않고 시스템에서 실행되는 프로세스 |
최소화를 하더라도 눈에 보이는 프로세스 | |
(= 포그라운드 프로세스) | 눈에 보이지 않지만 뒤에서 일을 하고 있는 프로세스(= 백그라운드 프로세스) |
인터넷, 카카오톡, 메모장, 그림판 등 눈에 보이는 프로그램 | 백신 프로그램, 그래픽 드라이버, 마이크 드라이버 등 눈에 보이지 않는 프로그램 |
⇒ 운영체제에서 데몬(Daemon) 프로세스와 일반적인 프로세스 간의 차이점을 나타내는 그림.
데몬 프로세스는 보통 백그라운드(background)에서 실행되며, 일반적으로 시스템 서비스와 관련된 작업을 수행한다. 이에 반해, 일반적인 프로세스는 사용자 인터페이스(foreground)를 통해 상호작용하며, 어느 순간에는 실행이 중단(inactve)될 수 있다. 즉, foreground에서 실행 중인 프로세스가 다른 프로세스나 작업에 의해 차단(blocked)되거나 대기(waiting) 상태가 되는 경우를 말하는 것이다.
그림에서는 데몬 프로세스가 백그라운드에서 계속 실행되고 있으며, 상호작용을 위해 일반적인 프로세스가 활성(active)되어 있다. 이를 통해 데몬 프로세스가 시스템 서비스를 지속적으로 제공하는 반면, 일반적인 프로세스는 필요할 때만 활성화되어 사용자와 상호작용할 수 있음을 보여주고 있다.
데몬(daemon)이란?
- 사용자가 직접적으로 제어하지 않고, 백그라운드에서 자동으로 돌면서 여러 작업을 하는 프로그램
- 데몬을 듯하는 d를 이름 끝에 달고 있음
- 일반적으로 프로세스로 실행
- 데몬은 특정 이벤트나 상태가 발생하면 실행
- 윈도우에서는 서비스, 리눅스에서는 데몬으로 불리지만 통용적으로 윈도우즈, 리눅스 둘 다 데몬으로 부름
⇒ 리눅스에서 백그라운드(background)에서 실행되는 프로그램을 의미합니다. 데몬은 사용자 인터페이스가 없으며, 시스템의 이벤트나 자원 사용을 모니터링하고, 이벤트에 따라 작업을 수행
데몬의 유형
- Standalone
- 시스템에 독자적으로 프로세스가 구동되어 서비스를 제공하는 데몬
- ex) 웹 서버(httpd) , DB 서버 (mysqld) , 센드 메일 서버(sendmail) 등.
- 메모리 상에 항상 구동되어 있다. => 그러므로 응답 속도가 빠름
- 실행 및 종료는 ‘ service Daemon-Name start/stop/restart ‘ 로 사용.
- xinetd
- ‘xinetd Deamon ‘ 은 일명 ‘ Super Daemon ‘ 이라고도 부르며 다른 데몬들의 상위에 존재
- 요청이 들어오면 xinetd 자신에 종속되어 있는 하위 Daemon 을 실행
- xinetd(부모) 자체는 standalone 방식 , xinetd 내부(자식) 는 xinetd 방식.
- 응답처리 속도가 standalone 에 비해 느리지만 요청이 들어오지 않을 때는 휴면 상태이므로 메모리를 차지 하지 않음.
데몬의 예시
- | 데몬 X | 데몬 O |
- | — | — |
- | ls, mkdir, rm… | Apache 웹 서버, SSH 서버, 네트워크 서비스, 스케줄러 실행 |
-
냉장고(cf. 모뎀, 전자도어락) 와 같은 가전제품은 항상 켜져있지만, TV (cf.전제레인지)와 같은 가전제품은 필요할 때 켰다가 필요 없을 때 끄는 특징
- ls, mkdir, rm과 같은 쉘 명령어 (Shell command) 프로그램들은 필요할 때 켜고 필요 없을 때는 꺼져 있는 상태의 프로그램 → TV와 유사
- 반면, 데몬에 해당되는 프로그램들은 항상 켜져있다는 특징을 가짐 → 냉장고와 유사
-
웹 브라우저의 주소창에다 네이버나 다음 구글 이런 식으로 주소를 입력하게 되면 웹 페이지가 표시됨 → but, 웹페이지는 컴퓨터 안에 있는 것이 아니다.
-
웹 브라우저가 설치된 컴퓨터(클라이언트) ↔ 네이버, 다음, 구글 등의 서버 클라이언트는 사용자가 필요한 정보를 서버에게 요청하고 서버는 그 요청된 정보를 응답해 주는 형태의 프로그램
-
웹브라우저는 우리가 필요할 때 켰다가 그리고 언제든지 필요할 때 켜서 웹 서버에 접속해서 정보를 가져옴. 반면 서버는 언제 웹브라우저가 접속을 할 지 알 수 없음
⇒ 웹 브라우저라는 이 소프트웨어의 카운터 파트너로써 서버쪽 컴퓨터에 설치되어 있어야 되는 프로그램이 웹 서버라는 프로그램인데 자 이런 프로그램들은 항상 켜져 있어야 함 바로 그런 특징으로 인해서 우리의 컴퓨터에는 소위 데몬 또는 서비스라고 부르는 형태의 소프트웨어가 존재해야 하는 것이다
-