데드락

4.1 데드락 식사하는 철학자 문제(dining philosophers problem)는 데드락을 설명하는 유명한 예제이다. 여기서 설명하는 데드락의 원리는 다음과 같다. 왼쪽 포크가 비기를 기다렸다가 왼쪽 포크를 사용할 수 있는 상태가 되면 포크를 든다. 오른쪽 포크가 비기를 기다렸다가 오른쪽 포크를 사용할 수 있는 상태가 되면 포크를 든다. 식사를 한다. 포크를 테이블에 놓는다. 단계 1로 돌아간다. 데드락(deadlock) : 서로 자원(포크)이 비는 것을 기다리며 더 이상 처리가 진행되지 않는 상태 철학자 2명일 때 데드락 동시에 2명의 철학자가 왼쪽 포크를 들어 올린 뒤 오른쪽 포크를 계속 기다리게 되므로 더이상 처리가 진행 X 식사하는 철학자 문제는 스테이트 머신(state machine)에서..
지난번 포스팅 동기화 Part1에 이어서 데드락과 동기화의 고전적 문제들에 대해서 정리를 해 보려고 한다. 데드락(교착상태, Deadlock) 데드락은 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만을 기다리며 작업을 더이상 수행하지 않는 상태를 의미한다. 교착상태가 발생하는 조건은 여러가지가 있는데 아래와 같다. 상호 배제(mutual exclusion): 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다. 배타적인 자원은 임계구역으로 보호되기 때문에 다른 프로세스가 동시에 사용할 수 없다. 따라서 배타적인 자원을 사용하면 교착 상태가 발생한다. 비선점(non-preemption): 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선..
DevOwen
'데드락' 태그의 글 목록