검색어 입력폼

운영체제 (Semaphore를 사용하여 생산자-소비자 문제)

저작시기 2009.08 |등록일 2010.03.28 한글파일한글 (hwp) | 9페이지 | 가격 1,500원

소개글

1. 과제물에 대한 설명 (목표, 내용 등)
Semaphore를 이용한 생산자, 소비자 문제 프로그램 설명
- 기능
생산자 함수는 원형버퍼가 가득 찰 때까지 버퍼를 채운다. 소비자 함수는 원형버퍼가 빌 때 까지 계속해서 버퍼에서 데이터를 가져온다(생산자 함수는 버퍼가 가득 찼으면 대기, 소비자 함수는 버퍼가 비어있을 때 대기한다). 만약 생산자 함수에서 버퍼에 데이터를 채우고 있는데 소비자 함수로 문맥 교환이 이루어지면 이미 mutex 세마포어가 0이기 때문에 소비자 함수는 대기하게 된다. 생산자 함수가 모든 작업을 다 끝내고 나와야 signal(mutex)로 인해 mutex가 1이 되기 때문에 상호 배제를 만족 시킨다.

void insert_item(int item)
원형 버퍼에 item을 넣는 함수이다. mutex 세마포어 변수 때문에 다른 프로세스의 진입이 불가능함으로 원자적으로 처리할 필요가 없다.

int remove_item()
공유 버퍼에 item을 빼는 함수이다. 이 함수 또한 mutex 세마포어 변수 때문에 다른 프로세스의 진입이 불가능함으로 원자적으로 처리할 필요가 없다.

목차

1. 과제물에 대한 설명 (목표, 내용 등)
2-1. 소스 코드
2-2. 실행 결과 화면 캡쳐
3-1. 소스 코드
3-2. 실행 결과 화면 캡쳐
4. 과제 후기
5. 참고문헌

본문내용

1. 과제물에 대한 설명 (목표, 내용 등)
Semaphore를 이용한 생산자, 소비자 문제 프로그램 설명
- 기능
생산자 함수는 원형버퍼가 가득 찰 때까지 버퍼를 채운다. 소비자 함수는 원형버퍼가 빌 때 까지 계속해서 버퍼에서 데이터를 가져온다(생산자 함수는 버퍼가 가득 찼으면 대기, 소비자 함수는 버퍼가 비어있을 때 대기한다). 만약 생산자 함수에서 버퍼에 데이터를 채우고 있는데 소비자 함수로 문맥 교환이 이루어지면 이미 mutex 세마포어가 0이기 때문에 소비자 함수는 대기하게 된다. 생산자 함수가 모든 작업을 다 끝내고 나와야 signal(mutex)로 인해 mutex가 1이 되기 때문에 상호 배제를 만족 시킨다.

void insert_item(int item)
원형 버퍼에 item을 넣는 함수이다. mutex 세마포어 변수 때문에 다른 프로세스의 진입이 불가능함으로 원자적으로 처리할 필요가 없다.

int remove_item()
공유 버퍼에 item을 빼는 함수이다. 이 함수 또한 mutex 세마포어 변수 때문에 다른 프로세스의 진입이 불가능함으로 원자적으로 처리할 필요가 없다.

void producer()
생산자 함수이며, 버퍼가 가득 찰 때 까지 데이터를 입력한다.

void consumer()
소비자 함수이며, 버퍼가 빌 때까지 데이터를 빼낸다.

참고 자료

운영체제
다운로드 맨위로