락(뮤텍스, 세마포어) 사용매우 까다로움

  • 락을 사용하려 하는 동기화 문제를 설명하는 오래된 예로 이게 있음 상황
  • 다섯명이 원탁에 앉아 만두 한 접시 나눠 먹으려함
  • 철학자와 철학자 사이에는 젓가락 한개만 있다.
  • 철학자들은 아무 말 없이 식사

  • 접시에서 만두를 집는 부분이 임계구역
  • 이 구역 보호하기 위한 상호 배제가 필요
    • 젓가락 한 쌍이 뮤텍스 역할
    • 철학자는 자기가 왼쪽의 젓가락 쓸 수 있다면 집어들고 락 건다
    • 그리고 오른쪽 집는거 가능하면 집어들고 락 검
    • 이제 2개 집었으니 임계 구역에 접어들어서 만두 집어 먹음
    • 그리고 오른쪽 젓가락 놓고 이어서 왼쪽 놓아서 락 해재

데드락!

교착상태(Deadlock) 원인과 해결방법 편의상 철학자 2명으로 줄인다. 동시성 프로그램에서 코드의 임계 구역에 상호 배제 수잔을 사용하는 주된 이유가 데드락 방지