검색어 입력폼

Producer Consumer 문제를 위한 해결책

저작시기 2007.03 |등록일 2010.01.15 한글파일한글 (hwp) | 17페이지 | 가격 1,500원

목차

- 문제 분석

- Nachos

- Synchronization

- Producer & Consumer

- cross compile의 필요성

- 결과 및 실행 화면

- 소스 및 주석

- 정리 및 느낀 점

본문내용

1. 문제 정의

- 문제 분석 : Producer Consumer 문제를 위한 해결책

☞ Cooperating process에서 process들 간에 communication을 어떻게 할 것인가 하는 문제와 Cooperating process들 간에 공유 데이타 문제를 처리할 것인가의 문제가 큰
이슈가 되는데 두 문제의 해결을 위한 하나의 해결책의 예로 들어지는 것이
Producer-Consumer의 문제이다.

여기에서 Producer는 정보를 생산하고, Consumer는 정보를 소비하는 프로세스를 말 하는데, 이들은 circular buffer를 통해서 통신을 한다. Buffer의 구조가 중요한데, n개의 array로서 circular 구조를 갖는다. 포인터가 n-1까지 증가한 후에 다음을 0으로 보내면 이것이 circular구조가 되는 것이다. 이러한 것은 in = in +1 mod n<= 여기서 n은 처음에 선언한 array의 개수를 말 한다.

생산자(Producer)는 무한 loop에서 nextp라고 하는 pointer가 가리키는 곳에 item이라는 정보를 생성하고 이 정보를 in pointer가 가리키는 곳의 버퍼에 넣고 in point를 하나 증가시키는 과정을 반복한다. 이때 in point의 증가가 빠르면 out과 겹치에 되는 경우가 생기는데 이 경우에는 큐가 가득 차게 되므로 더 이상 정보를 넣을 수가 없는 상태가 된다. 이때에는 생산자를 sleep상태로 만들어서 큐의 공간을 만들어준다.

소비자(Consumer) 또한 무한 loop임은 생산자와 같지만, 소비자는 out pointer가 가리키는 버퍼의 item을 꺼내어 nextc에 넣은 후, out pointer를 한 개 증가시킨다. 그리고 나서 nextc에 있는 item을 소모 하는 program이다. 이때에도 역시 out의 속도가 빨라서
다운로드 맨위로