프로세스는 서로 만나지 못한다. --------------------------------------------------------------------------------
일반적으로 프로세스는 CPU안에서 동시에 실행되는것이 불가능 하다. 그 이유는 프로세스가 메인메모리에서 차지하는 영역은 서로 독립되어 있기 때문이다.
이런 식으로 서로간의 프로세스의 메모리 영역이 다르니 서로간에 절대 만날 수 없다. 윈도우시스템의 프로세스가 이와 같이 디자인된 이유는 간단하다. CPU의 메모리 영역상에서 하나의 프로세스만 실행되는것이 당연히 안정성이 더 높기 때문이다.
IPC 프로세스가 서로간에 교류할 수 있는 방법. --------------------------------------------------------------------
당연히 프로세스간 교류가 필요한 경우가 있을 것이다. 그런 경우를 위해서 윈도우시스템에서는 몇가지 프로세스간 통신방식을 지원하고 있고 그것을 IPC(inter-process-Communication)라고 한다.
IPC 의 종류. ------------------------------------------------------------------------------------------------
메일슬롯방식 : 단방향 통신 한쪽으로만 명령어를 보낼수 있고 메일슬롯이란 새로운 리소스를 생성하여 그곳을 통해서 한쪽 방향으로만 서로간의 정보 교환이 가능하다.
파이프방식 : (이름없는 파이프)Anonymous Pipe 방식과 (이름있는)Named Pipe방식이 존재한다.
간단히 설명하자면
(이름없는 파이프)Anonymous Pipe -> 이름이 없다. 즉 특별한 주소가 없다. 그러므로 이미 서로를 알고 있는(서로의 핸들이나 주소값을 알고 있거나 상속관계나 포함관계에 있는) 프로세스들 사이에서 사용이 될 수 있다.
(이름있는)Named Pipe -> 이름이 있다. 즉 자신의 주소가 있어 그 주소를 알고 있는 아무런 관련없는 프로세스 간에도 통신이 가능한 방법이라고 생각하면 된다.
한번더 정리. -----------------------------------------------------------------------------------------------
메일슬롯 : 브로드캐스트(Broadcast) 방식의 단방향 통신방식 메일슬롯에 할당된 주소를 기반으로 통신하기 때문에 관계없는 프로세스들 간에도 통신이 가능하다.
이름없는 파이프 : 단방향 통신방식을 취하여, 파이프를 통해서 생성된 핸들을 기반으로 통신하기 때문에 프로세스들 사이에는 관계가 있어야만 한다.
이름있는 파이프 : 메일슬롯과 유사하다. 차이가 있다면, 브로드캐스트 방식을 지원하지 않는 대신 양방향 통신을 지원한다.
핸들 테이블 -------------------------------------------------------------------------------------------------
핸들 테이블은 프로세스의 핸들정보를 저장하고 있는 테이블로서 프로세스별로 독립적이다. 하지만 자식프로세스가 부모 프로세스의 일부를 상속받는 경우도 있다. 이는 CreateProcess함수 핸들 상속 인자값등에서 확인이 가능하다.
'게임개발공부 > 서적공부' 카테고리의 다른 글
윈도우 시스템 프로그래밍 <쓰레드!> (0) | 2013.11.16 |
---|---|
윈도우 시스템 프로그래밍 <프로세스와 스케줄링> (0) | 2013.11.16 |
윈도우 시스템 프로그래밍 <커널오브젝트> (0) | 2013.11.16 |
윈도우 시스템 프로그래밍 <프로세스의 생성> (0) | 2013.11.16 |
시스템 프로그래밍 <프로세스의 기본> (1) | 2013.11.16 |