← Projects

philosophers

C·pthread·mutex로 공유 자원 접근과 실행 순서를 제어하는 Dining Philosophers 구현

기간
2022.11
인원
개인
역할
전체 구현
기술
C · pthread

제한된 자원을 공유하는 스레드 제어

  • 철학자가 양옆 포크 두 개를 모두 획득한 뒤 식사하고 반납하는 동시성 문제 구현
  • 철학자별 식사·수면 루틴과 시간 기반 상태 검사 구성

순환 대기와 공유 상태 경쟁

  • 모든 철학자가 한쪽 포크를 잡고 다른 포크를 기다리면 진행이 멈추는 교착 상태 발생 가능
  • 스레드 간 상태 갱신과 출력에 동기화 필요

자원 획득 순서 조정과 mutex 적용

  • 포크의 lock 획득 순서를 조정해 순환 대기 차단
  • 포크 접근과 스레드 상태 갱신을 mutex로 보호
  • 시간 기반 상태 검사와 출력 동기화 구현

자원 획득·식사·반납과 상태 검사

  • 철학자 스레드의 mutex 획득·상태 갱신·반납 흐름과 monitor 검사 흐름
philosophers UML sequence diagram
mutex 획득·임계 구역·상태 검사·반납 순서