작업 여러 개를 한 컴퓨터에서 동시에 실행하면 작업 간의 독립성이 보장되지 않는다. 효율적으로 실행하기 위해 작업끼리 정보 교환이 필요한 경우도 많다. 예를 들어 어떤 작업이 다른 작업의 수행 결과에 의존한다면 이 작업은 자신이 의존하는 작업의 수행이 완료될 때까지 실행을 잠시 멈추어야 한다.
이런 이유로 작업 간의 정보 교환은 동시적 시스템의 핵심이 된다. 작업 간의 정보 교환이 제대로 이루어지지 못한다면 동시성으로 얻은 성능 향상도 아무 의미가 없다. 이번 장에서는 프로세스와 스레드 간의 정보 교환이나 실행 조정을 목적으로 하는 통신을 구현하기 위해 운영체제가 제공하는 개념을 익힌다. 먼저 동시적 시스템에서 널리 쓰이는 통신 방식을 살펴보자.