프로세스가 생기면, Control Block(PCB)가 생기는데 서로 메모리가 얼마나 할당되고 사용중인지를 업데이트하면서 정보를 공유하기 위해서
**IPC(InterProcess Communication)**가 필요\
두 가지 모델이 존재합니다
(a) 커널을 매개체로 PCB(A), PCB(B)끼리 정보를 주고 받는 방식 (b) 프로세스들 끼리 메세지를 교환
Paradigm for cooperating processes 반드시 1 : 1 대응 관계는 아닙니다(1:N의 대응 관계도 많음)
<aside> ❓ Producer는 초당 M개를 생산하고, Consumer는 초당 N개를 소비한다고 가정해보자 이상적인 시나리오는 M=N의 경우 낭비의 경우는 M>N의 경우, 부족한 경우는 M<N의 경우
대부분의 경우는 낭비하거나 부족한 상황이므로 우리는 버퍼를 중간에 넣어줌으로써 처리해합니다.
이제 Consumer가 여러 개 사용하겠다고 가정해봤을때, 버퍼가 차례대로 소비할 수 있도록 해주고 Producer에게 업데이트된 정보를 알려줍니다.
</aside>
버퍼(Buffer) 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
Unbounded(제한 없는)-Buffer
버퍼의 용량에 제한이 없는 소리
그러니, Producer가 계속 생산
그러나, 이건 말도 안되는 소리(매우 이상적인 상황)
Bounded(제한된)-Buffer
버퍼의 용량에 따라 대기시간이 발생
여러 개의 프로세스들을 어떻게 동기화시킬 것인가에 대한 문제
Bounded-Buffer
공유 버퍼