티스토리 뷰
오늘은 일하다가 무슨 운영체제에 오류가 났는데~ 찾는 와중에 "데몬" 이라는 단어가 많이 들려 그것에 대하여 알아 보았다. 후에 나도 다뤄보기 위해서 미리 개념 정리를 해보았다.
데몬(daemon) 이란? 서비스의 요청에 대해 응답하는 오랫동안 실행중인 백그라운드(background) 프로세스다. 쉽게 말하면 사용자가 직접적으로 제어 하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 유닉스(리눅스 포함) 운영체제에서 이름이 "d"로 끝나는 프로세스들이 대표적인데 inetd, httpd, nfsd, sshd, named와 lpd 등이 있다.
다른 운영체제에서는 "시스템 프로세스"라 불린다. 대부분 시스템의 시작과 끝을 함께한다고 한다. 그렇기에 대개 관리자 권한으로 실행되어 네트워크 요청이나 하드웨어 동작 등 여러 기능을 담당하며 다양한 목적으로 사용된다.
그러면 여기서 "백그라운드(background) 프로세스" 백그라운드란 무엇인가에 대한 의문도 같이 들었다~
백그라운드 프로세스는 적어도 입력장치에 대해 터미널과의 관계를 끊은 모든 프로세스를 의미한다.
사용자에게 무언가를 키보드를 통해 전달받지 않고 스스로 동작하는 프로세스가 백그라운드 프로세스 이다.
그 반대의 개념으로 포그라운드 프로세스는 사용자와의 대화창구인 표준입출력장치 즉 터미널과 키보드(tty 혹은 pts로 표현되는)을 통해 대화한다.
데몬의 특징으로는 부모 프로세스가 없다는 것인데 이에 따라 PPID(부모 프로세스 ID)는 1이며 시스템의 첫 프로세스인 init의 바로 하위에 위치하게 된다(init은 자바의 Object 클래스처럼 모든 프로세스의 직간접 부모인 데몬이며 이것이 없다면 커널 패닉이 발생하게 된다) 엄밀히 말하면 어떤 프로세스가 부모 프로세스가 init, 즉 부모의 ID가 1이며 이를 제어하는 터미널이 없을 때, 즉 사용자 입력으로 종료시킬 수 없을 때 데몬으로 칭하는데 이들은 부모 프로세스가 종료되면 init이 이들을 받아들인다(입양).
데몬은 일반적으로 자식 프로세스를 포크(fork)하여 자기 자신을 복사, 생성한 후 자기 자신은 삭제하여 해당 프로세스를 고아 프로세스로 만든 후 이를 init이 자신의 자식 프로세스로 받아들이도록 하는 과정을 통하여 만들어지며 이를 'fork off and die'라 표현한다.
그렇다면 데몬은 어떻게 동작하는 걸까?(출처)
리눅스에서 데몬을 실행하는 방법은 크게 두 가지가 있다. 혼자 스스로 동작하는 독자형(standalone)방식과 데몬을 관리하는 슈퍼 데몬(super daemon)에 의해 동작하는 방식(xinetd)이 있다. 일반적으로 자주 사용하는 데몬을 독자형 방식으로, 자주 사용하지 않는 데몬을 슈퍼 데몬을 이용한 방식으로 실행한다. 독자형의 경우 시스템의 백그라운드에서 항상 동작하는데, 자주 호출되는 데몬이 아니라면 시스템의 자원을 낭비할 우려가 있다. 독자형 방식은 /etc/init.d/ 나 /etc/rc.d/init.d/에 있는 스크립트 파일로 실행된다. 대표적으로 SSH 서비스를 찾아볼 수 있으며 이는 '해당 서비스 절대 경로 + start/stop/restart' 나 '서비스 이름 + start/stop/restart'로 데몬을 시작하거나 멈추는 등 관리할 수 있다.
슈퍼 데몬에 의한 동작 방식은 평소에는 슈퍼 데몬만 동작하다가 서비스 요청이 오면 슈퍼 데몬이 해당 데몬을 동작시키는 것이다. 따라서 독자형보다는 서비스에 응답하는데 시간이 좀 더 걸릴 수 있지만 자원을 효율적으로 사용한다는 장점이 있다. 슈퍼 데몬을 이용한 방식의 서비스와 독자형 방식의 가장 다른 점은 클라이언트가 서비스를 요청할 때 자동으로 올라간다는 것이다. 슈퍼 데몬에 의해 동작하는 방식은 관리자가 서버를 올리거나 내리거나 할 필요가 없고 항상 메모리 점유하는 게 아니므로 편리하고 메모리 사용에 효율적이다. 만약 리눅스 서버를 웹서버로 사용한다면, 사용자의 웹 서비스 요청이 매우 빈번히 일어날 것이고, 따라서 HTTPS와 같은 웹서버 데몬은 독자형 방식으로 실행된다. 독자형이든 슈퍼 데몬에 의해 동작하는 형태든 데몬이 제대로 동작하지 않으면 시스템이 서비스를 제공할 수 없다.
- 독자형 방식에 해당되는 서비스 : 센드메일(sendmail), 아파치(apache), 마이에스큐엘(MySQL), 네임서버(name server), NFS
- 슈퍼 데몬 방식에 해당되는 서비스 : 텔넷(telnet), POP3, 핑거(finger)
'개발 공부' 카테고리의 다른 글
관계형 데이터베이스란? (0) | 2021.10.12 |
---|---|
WAS(Web Application Server)란? - WAS의 종류 (0) | 2021.09.08 |
- Total
- Today
- Yesterday
- SQL
- SQL오류
- 데이터베이스
- oracle오류
- from
- oracle
- 관계형 데이터베이스
- 톰캣
- 웹서버
- DAEMON
- web 서버
- 오라클
- select
- jeus
- WAS
- 데몬
- 오라클오류
- 아파치
- IE
- 인터넷익스플로러
- 백그라운드 프로세스
- 인터넷
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |