프로세스나 스레드는 독립적으로 실행되기에 서로 협업하거 여러 데이터를 병렬로 처리하기 위해서는 데이터를 주고 받아야한다. 하나의 프로세스에 속한 스레드끼리 통신은 어렵지 않다. 그러나 프로세스끼리 통신은 쉽지 않다. 운영체제는 이런 프로세스끼리의 통신을 쉽게 할 수 있는 방법을 제공하는데 이를 프로세스간 통신(IPC, Inter Process Communication)이라고 한다.
바쁜 대기: 공유파일 방식등에서 생기는 문제로 동기화를 위해 공유 메모리를 반복 조회하며 대기하는 것을 의미한다.
프로세스가 독립적으로 작업하는 것이 아닌 공유된 자원을 이용하는 경우가 발생한다.
프로세스간 공유자원을 병행해서 읽거나 쓴다면 경쟁 조건이 발생해 결과가 제대로 되었다고 보장할 수 없다. 이를 해결하기 위해 영역을 한번에 여러 프로세스가 접근하지 못하도록 하는 임계구역이 있다.
임계구역은 밑에 조건을 만족해야 문제가 없다.
이를 만족하는 대표적인 알고리즘은 아래와 같다.
임계구역을 잘 설계하더라도 어쩔 수 없이 임계구역을 사용하다보면 프로세스가 서로 대기하며 작업이 더 이상 진행되지 않는 교착상태에 빠지는 경우가 있다.
이때 교착 상태를 회피하는 대표적인 알고리즘이 은행원 알고리즘이다.