<aside> ⚠️ ch3_part2 추가해서 시작

</aside>

Producer-Consumer Problem

두 경우 모두 bounded buffer(용량 제한이 있는, 현실적인, 버퍼)

Bounded Buffer
In : 버퍼에서 다음으로 비어있는 위치
Out : 버퍼에서 첫번째로 채워져 있는 위치
그렇기 때문에 사진 속 상황에서 In이 가리키는 인덱스 위치와 Out이 가리키는 인덱스 위치가 다름

Bounded Buffer In : 버퍼에서 다음으로 비어있는 위치 Out : 버퍼에서 첫번째로 채워져 있는 위치 그렇기 때문에 사진 속 상황에서 In이 가리키는 인덱스 위치와 Out이 가리키는 인덱스 위치가 다름

<aside> 💡 만약 IN == OUT인 경우엔, 버퍼가 비워져있다는 의미 ((In+1)%(buffer_size)) == out → buffer is empty

</aside>

프로세스들이 메모리를 공유함하는 방식은 결국 개발자가 분기를 추가함으로써, 공유메모리에 접근, 조작하는 방식을 다듬어야한다.

결론

Producer - Consumer Problem에서

Unbounded(Infinite) Buffer

Bounded(Finite) Buffer

Producer는 버퍼에 빈 공간이 생기는 것을 기다린다. 또한, 버퍼에 새로운 데이터를 넣었다는 signal을 발생시켜야한다.

Consumer는 소비가능한 데이터 존재 여부에 대한 signal을 기다리야한다. 또한, 버퍼에서 데이터를 소비(처리)했다는 signal을 발생시켜야한다.


⭐️ 예제 1

⭐️ 예제 2


Handle

응용 프로그램은 바로 하드웨어 자원을 사용할 수 없으니, OS를 통해서 자원 사용을 요청하거나 할당 받습니다.