<aside> ⚠️ ch3_part2 추가해서 시작
</aside>
두 경우 모두 bounded buffer(용량 제한이 있는, 현실적인, 버퍼)
Bounded Buffer In : 버퍼에서 다음으로 비어있는 위치 Out : 버퍼에서 첫번째로 채워져 있는 위치 그렇기 때문에 사진 속 상황에서 In이 가리키는 인덱스 위치와 Out이 가리키는 인덱스 위치가 다름
<aside> 💡 만약 IN == OUT인 경우엔, 버퍼가 비워져있다는 의미 ((In+1)%(buffer_size)) == out → buffer is empty
</aside>
프로세스들이 메모리를 공유함하는 방식은 결국 개발자가 분기를 추가함으로써, 공유메모리에 접근, 조작하는 방식을 다듬어야한다.
Producer - Consumer Problem에서
버퍼가 full 상태인지 확인 (Code 추가 필요)
버퍼가 full이라면, Consumer가 데이터 소비(처리)
→ 공간 발생
→ Producer process wake up
Producer는 버퍼에 빈 공간이 생기는 것을 기다린다. 또한, 버퍼에 새로운 데이터를 넣었다는 signal을 발생시켜야한다.
Consumer는 소비가능한 데이터 존재 여부에 대한 signal을 기다리야한다. 또한, 버퍼에서 데이터를 소비(처리)했다는 signal을 발생시켜야한다.
응용 프로그램은 바로 하드웨어 자원을 사용할 수 없으니, OS를 통해서 자원 사용을 요청하거나 할당 받습니다.