상세 컨텐츠

본문 제목

[운영체제] Bounded Buffer Problem

운영체제

by ~지우~ 2021. 7. 23. 09:43

본문

728x90

오늘은 대표적인 동기화 문제 중 Bounded Buffer Problem에 대해 알아보겠습니다.

이 문제는 Producer-Consumer Problem이라고도 불립니다.

 

 

consumer는 버퍼가 비어있을 때 아무것도 가져올 것이 없기 때문에 기다려야 합니다.

 

producer는 버퍼가 가득 차있을 때 빈공간이 없기 때문에 기다려야 합니다.

 

semaphore를 사용하여 이 문제를 해결해보겠습니다.

 

semaphore full = 비어있지 않은 버퍼의 개수

semaphore empty = 비어있는 버퍼의 개수

semaphore mutex = critical section 진입 여부 (critical section 진입 전, 후에 바꿔주면서 critical section에 대한 상호 배제적 접근<mutual exclusive access>을 보장해준다)

 

full = 0이므로 consumer는 critical section에 진입하지 못하고 기다리게 됩니다.

empty = 4이므로 producer는 critical section에 진입할 수 있습니다.

 

producer가 critical section에 들어가기 전에 empty의 개수를 하나 줄입니다.

 

producer가 critical section에 진입해서 버퍼 하나를 채웠습니다.

 

producer가 critical section에서 나온 후 full의 개수를 하나 늘립니다.

 

consumer가 critical secton에 진입하기 전에 full의 개수를 하나 줄입니다.

 

consumer가 critical section에 진입하여 버퍼에서 하나를 가져옵니다.

 

consumer가 critical section에서 나온 후 empty의 개수를 하나 늘립니다.

 

728x90

관련글 더보기

댓글 영역