
Bounded-Buffer 문제 (유한버퍼 문제) 소비자와 생산자가 유한 개의 버퍼 자원을 공유하는 상황에서, 다음 문제를 해결하고자 한다. 소비자와 생산자가 버퍼에 상호 배타적으로 접근 소비자는 버퍼에 원소가 한 개라도 있으면 버퍼를 소비해야 하고, 생산자는 버퍼에 원소가 없으면 원소를 생산해야 한다. 위의 문제를 해결하기 위한 조건은 다음과 같다. 생산자가 먼저 실행된 적이 있어야 하고, 생산자의 실행 횟수가 소비자보다 많아야 한다. 위 문제를 해결하기 위해 사용하는 변수는 다음 세 가지이다. 세마포어 mutex(= 1): 생산자와 소비자의 상호배제를 위한 변수 세마포어 empty(= n): 비어있는 버퍼의 개수를 나타내는 변수 세마포어 full(= 0): 버퍼가 차있는 개수를 나타내는 변수 Read..

Deadlock 모든 프로세스가 다른 프로세스의 작업이 끝나기를 기다리고있는 상태 Deadlock(교착상태) 발생 필수 조건 4가지 Mutual exclusion (상호배제) 최소한 1개의 자원은 공유할 수 없어야 한다. Hold and wait (점유대기) 최소한 1개의 자원을 소유한 프로세스가 다른 프로세스가 소유하고 있는 자원을 얻기를 기다려야 한다. No preemption (비선점) Preemption이 없어야 한다. Circular wait (순환대기) 서로 다른 프로세스가 자원을 소유하고 요청하는 사이클이 존재해야 한다. Resource Allocation Graph Resource 종류마다 1개의 인스턴스만 있고, 사이클이 존재한다면 항상 데드락이 발생한다. Resuorce 종류마다 여러개..
- Total
- Today
- Yesterday