CS/운영체제

전통적 동기화 예제들

씩씩한 IT블로그 2023. 3. 16. 00:49
반응형

생산자 소비자 문제(Producer and Consumer Problem)

* 다른말로 유한버퍼문제(bounded buffer problem) 

- 생산자(producer)는 버퍼에 데이터를 생산하고, 소비자(consumer)는 버퍼에 데이터를 소비하는 상황

- 버퍼는 유한하기 때문에 버퍼에 데이터가 가득 차면 생산자가 생산할 수 없고, 비어있으면 소비자가 꺼내갈 수 없다.(이 상황에서 프로세스가 계속 대기하는 것을 busy waiting 이라고 한다)

 

독자 저자 문제(Readers Writers problem)

- 독자(reader)는 데이터를 읽기만 하고, 저자(writer)는 읽고 수정하는 상황

- reader는 데이터를 읽기만 하기 때문에 임계구역 문제가 발생하지 않음. 따라서 writer에만 임계구역 문제 해결원칙을 적용

 

식사하는 철학자 문제(dining philosopher problem)

- 철학자 양쪽에 젓가락이 하나씩 있다. 식사를 하고자 하면 왼쪽,오른쪽 순서로 젓가락을 집는다. 집고자 하는 젓가락을 옆사람이 쓰고있다면 옆사람이 다 쓸때까지 기다린다.

- 모든 철학자가 왼쪽 젓가락을 쥐고있다면 모든 철학자는 식사를 하지 못하고 starvation(기아)상태에 놓인다.(deadlock의대표적인 예시)

 

반응형