jinsusong / CS-Study

CS
3 stars 5 forks source link

동시성과 교착 상태를 설명하는 예시 문제 : 식사하는 철학자들 문제 #40

Open jinsusong opened 1 year ago

jinsusong commented 1 year ago

여러 프로세스가 동시에 돌아갈 때 교착 상태가 나타나는 원인을 직관적으로 알 수 있는 문제임.

https://ko.wikipedia.org/wiki/%EC%8B%9D%EC%82%AC%ED%95%98%EB%8A%94_%EC%B2%A0%ED%95%99%EC%9E%90%EB%93%A4_%EB%AC%B8%EC%A0%9C

  1. 철학자 문제 교착상태 성립을 위한 조건을 젓가락으로 설명해보세요.

    • 상호 배제 :
    • 점유와 대기 :
    • 비선점 :
    • 환형 대기 :
  2. 특정 철학자(3번)가 기아 상태가 되는 경우에 대해 설명하는 설명해보세요

  3. 소스코드 해석 https://www.geeksforgeeks.org/dining-philosophers-problem/

SW-H commented 1 year ago
  1. 철학자 문제 교착상태 성립을 위한 조건을 젓가락으로 설명해보세요.
    • 상호 배제 : 철학자들은 포크를 공유할 수 없다
    • 점유와 대기 : 각 철학자가 오른쪽 포크를 쥐고 있어 왼쪽 철학자가 포크를 놓을 때까지 기다린다
    • 비선점 : 포크를 빼앗을 수 없다
    • 환형 대기 : 모든 철학자들이 자신의 왼쪽 철학자의 포크를 대기한다
anuu0916 commented 1 year ago

식사하는 철학자 문제 해결 방법

  1. 젓가락 개수 늘리기 젓가락 개수를 5개에서 6개로 늘려 최악의 경우 5명이 젓가락 하나씩 집어도 1명은 2개의 젓가락으로 식사를 마치고 이 과정을 반복한다.

  2. 철학자 위치 구분 (환형 대기 해결) a. 홀수 번 철학자, 짝수 번 철학자를 구분한다. b. 홀수 번 철학자 인 경우는 젓가락을 왼쪽, 오른쪽 순으로 집어서 밥을 먹고 젓가락을 왼쪽, 오른쪽 순으로 놓는다. c. 짝수 번 철학자인 경우는 젓가락을 오른쪽, 왼쪽 순으로 집어서 밥을 먹고 젓가락을 오른쪽, 왼쪽 순으로 놓는다.

  3. 각각의 철학자 상태 구분 철학자가 EATING상태가 되기 위해서 자신이 HUNGRY상태이고, 자신의 왼쪽, 오른쪽 모두 EATING상태가 아니어야 한다. HUNGRY: 철학자가 젓가락 집기를 원함. (임계구역 접근을 원함) THINKING: 철학자가 젓가락 집기를 원치 않음 (임계구역 접근을 원치 않음) EATING: 철학자가 2개의 젓가락을 집어 밥을 먹는다. (임계구역에 접근함)

  4. 세마포어 사용 왼쪽 포크와 오른쪽 포크를 동시에 들게끔하고 그것을 세마포어들로 감싼다. (임계 구역에 들어간 철학자만 포크를 들 수 있고, 다른 철학자는 임계구역 밖에서 기다리게 한다.)

출처 : https://velog.io/@minseojo/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%8B%9D%EC%82%AC%ED%95%98%EB%8A%94-%EC%B2%A0%ED%95%99%EC%9E%90-%EB%AC%B8%EC%A0%9C https://simsimjae.tistory.com/72