[운영체제] Mutex와 Semaphore를 이용한 producer/consumer 모델 구현
- 최초 등록일
- 2008.06.26
- 최종 저작일
- 2006.05
- 압축파일
- 가격 2,000원
소개글
운영체제에서 producer/consumer 모델을 프로그래밍으로 구현한 것입니다.
하나는 Mutex로 구현하였고, 다른 하나는 Semaphore로 구현하였습니다.
소스코드는 물론 문서(소스 사용법, 동작원리 상세히 설명)까지 자세히 적혀 있습니다.
#1. Mutex를 이용한 Producer/Consumer 모델 구현
프로그램의 구조는 복수개의 producer 쓰레드와 consumer 쓰레드가 존재하며 하나의 버퍼를 공유하는 형태이다. Producer는 데이터를 생성하여 버퍼에 저장을 하고 Consumer는 버퍼에 저장된 데이터를 읽어 들여 출력한다. Producer 쓰레드와 Consumer 쓰레드간의 버퍼 사용권을 위한 동기화를 위해 mutex를 이용하여 프로그램을 작성한다.
#2. Semaphore를 이용한 Reader/Writer Problem Solution 구현(Readers Have priority)
Reader/Writer problem은 공유데이터에 접근하는 두가지 타입의 클라이언트를 가지고 있다. Reader는 공유데이터를 오로지 읽기만 하며 Writer는 공유데이터를 수정 및 업데이트만 한다. Reader/Writer problem의 조건은 다음과 같다.
- 동시에 여러 Reader가 공유 데이터를 읽을 수 있다.
- 한 번에 하나의 Writer만이 공유 데이터에 쓸 수 있다.
- 하나의 Writer가 공유 데이터에 쓰고 있다면 어떠한 Reader도 공유 데이터를 읽을 수 없다.
컴파일 실행환경
Linux 또는 Cygwin 또는 VM 같은 준리눅스 환경에서 gcc로 컴파일
압축파일 내 파일목록
문제정의.doc
function_structure.vsd
소스코드/Makefile
소스코드/mutex
소스코드/mutex.c
소스코드/sema
소스코드/sema.c
문서/Document.doc
참고 자료
*열혈강의 TCP/IP 소켓 프로그래밍, 윤성우, FREELEC
*Programming with POSIX Threads, David R. Butenhof, Addison Wesley
*Operating Systems 5 th Edition, William Stallings, Prentice Hall
* POSIX Threads Programming
http://www.llnl.gov/computing/tutorials/pthreads/#PthreadsAPI
*조인시 위키 - semaphore 함수 및 예제
http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/%BC%BC%B8%B6%C6%F7%BE%EE%C0%C7%20%BB%E7%BF%EB
*KLDP man page
http://man.kldp.org/wiki/FrontPage
*조인시 위키 man page
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man
*김동근의 텀즈 컴퓨터 용어사전
http://terms.co.kr/