프로세스 간 통신은 같은 컴퓨터 내의 프로세스 간 통신 뿐만 아니라
네트워크로 연결되 다른 컴퓨터의 프로세스와의 통신도 포함된다.
프로세스 내부 데이터 통신
하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우
프로세스 내부의 스레드는 전역 변수나 파일을 이용하여 데이터를 주고 받는다.
프로세스 간 데이터 통신
같은 컴퓨터에 있는 여러 프로세스 끼리 통신하는 경우로, 공용 파일 또는
운영체제가 제공하는 파이프를 사용해 통신한다.
네트워크를 이용한 데이터 통신
여러 컴퓨터가 네트워크로 연결되어 있을 때
프로세스가 소켓을 이용하여 데이터를 주고 받는다.
소켓을 사용해 같은 컴퓨터 안의 프로세스 끼리도 통신할 수 있지만 오버헤드가 크기 때문에 잘 사용 안한다.
양방향 통신
데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조로, 일반적인 통신은 모두 양방향 통신이다.
프로세스 간 통신에서는 소켓 통신이 양방향 통신
반양방향 통신
데이터를 양쪽 방향으로 전송할 순 있지만, 동시 전송이 불가능하고 한쪽 방향씩 전송할 수 있는 구조.
무전기
단방향 통신
모스 신호처럼 한쪽 방향으로만 데이터를 전송할 수 있는 구조.
프로세스 간 통신에서는 전역 변수와 파이프가 단방향 통신에 해당한다.
전역 변수를 방식의 가장 큰 문제는 언제 데이터를 보내는지 수신측에서 모른다는 것이다.
우편함을 계속 확인하는 것처럼 반복문을 무한 실행 시키며 기다리는 것을 바쁜 대기라고 한다.
매우 비효율적이다. 이를 해결하기 위해 데이터가 도착했음을 알려주는 동기화를 사용한다.
문자 메세지가 오면 알림을 주는 것과 같다.
대기가 있는 통신
동기화를 지원하는 통신 방식. 데이터를 받는 쪽은 데이터가 도착할 때 까지 자동으로 대기상태에 머무른다.
대기가 없는 통신
동기화를 지원하지 않는 통신 방식. 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터가 도착했는지 여부를
직접 확인한다.
프로세스 간 통신에서 가장 중요한 것은 동기화이다.
전역 변수를 이용한 통신
공동으로 관리하는 메모리를 사용해 데이터를 주고 받는다.
데이터를 송신측은 데이터를 쓰고, 데이터 수신측은 데이터를 읽는다.
전역 변수를 사용하는 방식은 주로 직접적인 관련이 있는 프로세스 간에 사용한다.
예를들어 부모 자식 프로세스 간 통신하는 것이다.
수신 측이 데이터가 언제 도착하는 지 모르기 때문에 바쁜대기를 돌면서 주시해야 한다.
파일을 이용한 통신
저장장치에 파일을 읽고 쓰는 방식 주로 wait 함수를 사용해 자식 프로세스의 작업이 끝날 때까지 기다렸다가
데이터를 읽는다.