Bounded-Buffer 문제 (유한버퍼 문제) 소비자와 생산자가 유한 개의 버퍼 자원을 공유하는 상황에서, 다음 문제를 해결하고자 한다. 소비자와 생산자가 버퍼에 상호 배타적으로 접근 소비자는 버퍼에 원소가 한 개라도 있으면 버퍼를 소비해야 하고, 생산자는 버퍼에 원소가 없으면 원소를 생산해야 한다. 위의 문제를 해결하기 위한 조건은 다음과 같다. 생산자가 먼저 실행된 적이 있어야 하고, 생산자의 실행 횟수가 소비자보다 많아야 한다. 위 문제를 해결하기 위해 사용하는 변수는 다음 세 가지이다. 세마포어 mutex(= 1): 생산자와 소비자의 상호배제를 위한 변수 세마포어 empty(= n): 비어있는 버퍼의 개수를 나타내는 변수 세마포어 full(= 0): 버퍼가 차있는 개수를 나타내는 변수 Read..
Bounded-Buffer 문제 (유한 버퍼 문제) 생산자(Producer)는 데이터를 생성하고, 소비자(Consumer)는 데이터를 소비한다. in과 out의 값으로는 버퍼에 있는 데이터의 양을 알 수가 없다. (위의 그림 참조) 따라서 counter 변수를 사용한다. 하지만 counter 변수는 생산자와 소비자가 동시에 접근하므로 Race condition이 발생한다. 따라서 동기화가 필요하다. Race condition 여러 프로세스(또는 스레드)가 공유자원에 동시에 접근할 때, 접근 순서에 따라 결과가 달라질 수 있는 상황 Synchronizaiton (동기화) Multi-threaded application 스레드는 프로세스 안에서 메모리를 공유한다. (스택은 별개로 가진다.) 데이터 손상을 막..
- Total
- Today
- Yesterday