IPC 에 관한 질문
글쓴이: litdream / 작성시간: 수, 2006/05/03 - 10:31오전
예를 들어, apache 같은 프로세스가 시작하면, (apache2 라고 가정하면), child 프로세스들이 생기지 않습니까?
어떤방식으로 child 프로세스가 서로 잘 커넥션을 나누어 가지는지 궁금합니다.
여러개의 프로세스가 동일한 포트(80)을 들을수 없을테니, 분명히 어딘가에서 (메세지큐, signal, 파이프, FIFO) 에서 request 를 받아서, 서로 잘 나누어 가질듯 한데 (worker 라고 하면 될까요?), 어떻게 되는것인지 궁금합니다.
참고삼아, 부모 프로세스에서 4개의 fork() 프로세스를 만들어서, 임의로 갈라주는 실험을 FIFO 를 사용했습니다만, 이름을 지어주는 데서 scalable 한 방법이 별로 생각나지 않더군요. 제가 뭔가를 놓치고 있는것 같은데, 좀 지적해주시면 감사하겠습니다.
Forums:
일단 process-pool
일단 process-pool 개념을 이해를 하셔야 할듯 하군요.
이건 parent가 child를 여러개 만들어 같은 작업을 하게 합니다.
그러나 child가 여러개 이기 때문에 병렬 처리가 가능한건데...
apache도 이런 형식으로 10개의 child면 10개의 process가 전부 80포터를 listen하게 됩니다.
그러나 어떤 프로세스가 클라이언트에 응답을 할지는 알 수가 없습니다.
그러나 여러 프로세스가 한포트를 listen하는건 가능합니다.
그리고, 이의 관리는 아마 shared-memory와 semaphore를 이용해서 할것입니다.
이런 내용은 UNP(Stevens 아저씨 책)를 참조 하시면 나올겁니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <beer.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
질문자께서 언급하신
질문자께서 언급하신 것은 전형적인 reactor model입니다.
서버를 만드는 방법은 아주 다양하며, 제시하신 방법도 나쁘지 않습니다.
서지훈님께서 말씀하신 방법도 널리사용되는 모델입니다.
그외에도 많은 모델이 있고, 각각 일장일단을 가지고 있으니, 적절하게 사용하시는게
좋겠습니다..
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기