• 캠퍼스북
  • LF몰 이벤트
  • 파일시티 이벤트
  • 서울좀비 이벤트
  • 탑툰 이벤트
  • 닥터피엘 이벤트
  • 아이템베이 이벤트
  • 아이템매니아 이벤트

Sleeping barber

*기*
최초 등록일
2010.12.22
최종 저작일
2009.04
4페이지/한글파일 한컴오피스
가격 1,500원 할인쿠폰받기
다운로드
장바구니

소개글

이발소에는 이발사 한 명, 한 개뿐인 이발용 의자, 그리고 기다리는 속님을 위한 의자 n개가 있다. 손님이 없으면 이발사는 그림과 같이 잠을 잔다. 손님이 오면 이발사는 잠에서 깨어난다. 이발을 하는 동안에 손님이 도착하면 대기용 의자에 앉아 기다리고 이 의자도 차 있으면 이발소를 떠나버린다. 문제는 이발사와 손님이 경쟁조건에 빠지지 않도록 프로그램을 짜는 일이다.

해결책으로는 세 개의 세마포어를 이용한다. 기다리지 않고 바로 이발할 수 있는 손님을 제외하고 기다리는 속님의 수를 계산하는 customers, 손님을 기다리며 쉬고 있는 이발사의 수를 나타내는 barbers(0 또는 1), 그리고 상호배제를 위하여 이용하는 mutex 등이 있다. 그리고 기다리는 손임을 카운트하는 waiting 이란 변수가 필요하다. 물론 이 변수값은 customers의 복사본이다. 이 변수를 갖는 이유는 세마포어의 현재 값을 읽어낼 방법이 없기 때문이다. 이 해결책에서 이발소에 오는 손님은 기다리는 손님을 헤아려야 한다. 만일 의자가 수가 손님의 수보다 여유가 있으면 앉아서 기다리지만, 의자가 모두 차 있으면 이발소를 떠난다.

만일, 여분의 의자가 있으면 정수 변수 waiting을 증가시킨다. 그런 후 세마포어 customers에서 up을 실행한다. 이 시점에서 이발사와 손님은 모두 깨어 있다. 이 손님이 mutex을 해제할 때 이발사는 비로소 이발을 시작한다. 이발이 끝나면 손님은 프로시저를 종료하고 이발소를 떠난다. 앞의 예와는 달리, 이발을 하는 손님은 각각 한 번의 이발을 하기에 루프를 갖지 않는다. 그러나 이발사는 루프에서 다음 손님에 대하여 반복 실행한다. 만약 손님이 없다면 이발사는 또 잠을 자야 한다.

컴파일 실행환경

baci

참고 자료

없음

이 자료와 함께 구매한 자료

*기*
판매자 유형Bronze개인

주의사항

저작권 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우
최근 본 자료더보기
탑툰 이벤트
Sleeping barber
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업