OS 생산자 문제 mutex locks, semaphore를 이용해서 해결하기
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

OS 생산자 문제 mutex locks, semaphore를 이용해서 해결하기에 대한 보고서 자료입니다.

목차

○ OS 세 번째 과제.

1) mutex locks 을 이용하여 프로그래밍한 소스코드.

<<출력결과>>

2) Semaphore를 이용하여 프로그래밍한 소스코드.

<<출력결과>>

본문내용

cout << \" \" << arr[i] << \" \";
}
cout << endl< //메인 쓰래드.
//매인 쓰래드와 Thread_1이 count 값이 일정값에 도달할때까지 계속적으로 실행.
while(1)
{
count++;//while문을 빠져나오기 위한 조건.
if (count>10)
{
break;
}
produced_data = rand() % 100 + 1;//값을 radom하게 생성 (1~100사이의 정수).
WaitForSingleObject(Sem, INFINITE);//WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
arr[pros] = produced_data;//배열에 생성된 값을 넣는다
pros = (pros + 1) % 10;//배열의 index값++
//생성값과 생성값을 넣은 배열 출력.
cout << \"produced data : \" << produced_data << endl ;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout << endl < Sleep(100);// consume을 기다림.
ReleaseSemaphore(Sem, 1, NULL);
}
CloseHandle(Sem); //Mutex handle 닫음.
return 0;
}
DWORD WINAPI thread_func_1(LPVOID para)//consume 수행.
{
int cons=0; //소비되어 빠질값의 배열index
while(1)
{
WaitForSingleObject(Sem, INFINITE); //WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
int consumed_data = arr[cons];
arr[cons] = 0;//배열에 값을 빼고, 0을 넣는다.
cons = (cons + 1) % 10;//배열의 index값++
//소비한 값과 배열 출력.
cout << \"Consumed data : \" << consumed_data << endl;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout<< endl < ReleaseSemaphore(Sem, 1, NULL);
}
return 0;
}
<<출력결과>>

키워드

  • 가격2,000
  • 페이지수6페이지
  • 등록일2011.05.17
  • 저작시기2011.4
  • 파일형식한글(hwp)
  • 자료번호#677896
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니