IPC 선택의 기준..
글쓴이: 낙엽 / 작성시간: 목, 2003/04/24 - 8:37오전
프로젝트를 뛰다보면 여러 프로세스가 한 데이타에 접근해야 할 경우가 많은것이 대부분입니다.
보통 message queue나 shared memory를 많이 사용하는 편인데요..
(FIFO나 다른 IPC method들은 아직 실제 프로젝트에 적용한 경험은 없어서.. 여기서는 질문에 포함 안했습니다..)
그냥 일반적으로 가지고 있는 지식만 가지고서는 효율성을 따지기 힘들더군요.
(그냥 대략 알고있기로 shared memory가 message queue보다 속도면에서는 빠르고, message queue는 동기화 시켜줄 필요가 없어서 사용하기는 편하다고만 느끼고 있었습니다만..)
여러분들은 어떨때 shared memory를 사용하시고, 또 어떨때 message queue를 사용하시나요?
Forums:
메시지큐는 ...
메시지 큐는 스티븐스책에 보면
가장 속도가 느리다고 나오고
사용하지 말아야한다는 비추천글을 본것같습니다.
짧은 실무경력으로는
메시지큐는 사용되는걸 못보았는데요.
사실 메시지큐가 사용하기는 편한것같은데..
제 의견일뿐입니다.
역시. 다른분의 의견을 듣고 싶군요.
MSG Q는 휘발성입니다. 따라서 그냥 큐일 뿐이죠.SHM은 휘발
MSG Q는 휘발성입니다. 따라서 그냥 큐일 뿐이죠.
SHM은 휘발성이 아니라 메모리 공간인데 특수하게 여러 프로세스가 접근가능하다는 특징일 뿐이죠.
따라서 데이터가 날라와서 처리하는 버퍼적인 용도로 사용한다면 MSG Q가 정답이고(물론 다른 기법도 사용할수는 있습니다), 어떤 데이터를 여러 프로세스가 공통적으로 사용한다면, 그리고 그 변화나 그런것들을 공유해야 한다면 SHM 을 쓰는게 맞겠죠. 한가지 더 SHM을 동기화 하기 위해서는 세마포어를 쓰기도 합니다.
PS)메시지 큐도 많이 사용합니다. ^^*
========================================
* The truth will set you free.
UNP 2권 보고 정리하세요.^^
UNP 2권 보고 정리하세요.^^
Shared Memory는 프로세스의 주소공간에 매핑되기 때문에 속도는
Shared Memory는 프로세스의 주소공간에 매핑되기 때문에 속도는 가장 빠르지만 동기화 처리라던가 순차적으로 들어오는 데이터에 대한 Queuing 등은 직접 구현해줘야 하기 때문에 번거롭죠.(게다가 Queuing이라던가 동기화, 우선순위 처리 등을 구현해주다 보면 Message Queue와 별반 속도차이도 없습니다.)
Message Queue는 따로 동기화 처리가 필요없고 자동적으로 데이터를 Queuing하기 때문에 쓰기는 편하지만 역시 Shared Memory에 비해 속도는 느립니다.
IPC의 이름 그대로 공유데이터를 단순히 Sharing할 경우라면 Shared Memory + Semaphore, 프로세스간 자료전송을 위한 경우라면 Message Queue를 사용하시면 됩니다.
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
메세지 큐의 크기는 어떻게 되죠?
그렇다면 메세지 큐의 크기는 얼마나 됩니까?
그리고 메세지 큐의 크기를 늘릴수 있다면 어떤 방법이 있는 건지요?
진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서
메세지큐의 크기나 블럭의 제한은 시스템마다 다릅니다.(관리자가 제한을
메세지큐의 크기나 블럭의 제한은 시스템마다 다릅니다.
(관리자가 제한을 변경할 수 있습니다.)
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
/proc/sys/kernel 에 있습니다.
/proc/sys/kernel 에 있습니다.
댓글 달기