교착상태의 발생 조건과 해결
설명 영상 교착상태의 발생 조건과 해결 · 2:25
핵심 정리
교착상태는 둘 이상의 프로세스가 서로 상대가 가진 자원을 기다리며 어느 쪽도 앞으로 나아가지 못하는 상태이다. 두 개 이상의 프로세스가 공유가능한 자원을 사용할 때 생기며, 자원을 쥔 채 다른 자원을 기다리는 구조가 그 바탕이다. 이 개념은 발생 조건, 처리 방법, 그리고 각 방법의 한계를 나누어 알아야 한다.
교착상태는 네 조건이 동시에 성립할 때 발생하며, 이 가운데 하나라도 깨지면 교착상태는 생기지 않는다. 교착상태 발생의 필요조건은 상호 배제, 비선점, 점유와 대기, 순환 대기이다. 필요조건을 가르는 기준은 이 네 가지 목록이다.
처리 방법은 예방, 회피, 탐지와 회복으로 나뉘며, 각각 교착상태를 다루는 시점과 방식이 다르다. 예방은 교착상태가 발생할 가능성을 사전에 없애는 것이다. 회피, 탐지, 회복은 예방과 다른 시점에서 대응한다.
예방 방법은 자원 사용의 효율성이 떨어지고 비용이 많이 드는 문제점이 있다. 그래서 교착상태를 다루는 방법은 어느 것이든 치르는 비용이 따르며, 상황에 맞는 방법을 고르는 것이 중요하다.
자세히
네 필요조건의 정의
상호 배제는 교착상태의 필요조건 중 하나이며, 최소한 하나의 자원이 비공유 모드로 점유되어 한 번에 한 프로세스만 사용할 수 있는 조건이다. 한 자원을 두 프로세스가 동시에 쓸 수 없으므로 뒤에 요청한 프로세스는 자원이 풀릴 때까지 기다려야 한다. 이 조건은 자원이 공유될 수 있는지에서 나온다는 점에서 다른 조건과 성격이 다르다.
비선점은 프로세스에 할당된 자원을 사용이 끝날 때까지 강제로 빼앗을 수 없는 조건이다. 비선점은 자원을 넘겨받는 방식에 관한 조건이며, 상호 배제와 달리 자원이 공유되는지와는 관계가 없다. 교착상태 발생의 필요조건은 비선점이며 선점은 필요조건이 아니다. 네 조건 중 하나라도 빠지면 교착상태가 생기지 않으므로, 분석할 때는 네 조건이 모두 성립하는지부터 확인하는 것이 순서이다.
점유와 대기는 프로세스가 자원을 점유한 채 다른 프로세스가 점유한 자원을 기다리는 조건이다. 자원을 한꺼번에 얻지 않고 하나씩 쥔 채 다음 자원을 요청하는 구조에서 이 조건이 성립한다. 네 조건 가운데 점유와 대기와 순환 대기는 프로세스 사이의 대기 관계에 관한 것이고, 상호 배제와 비선점은 자원의 성격과 할당 방식에 관한 것이다.
회피 기법
은행원 알고리즘 등으로 안전 상태를 유지하며 자원을 할당하는 것은 회피 기법이다.은행원 알고리즘 등으로 안전 상태를 유지하며 자원을 할당하는 것은 회피 기법이다. 안전 상태란 모든 프로세스가 어떤 순서로든 자원을 얻어 실행을 끝낼 수 있는 상태를 뜻한다. 자원 요청이 들어오면 할당한 뒤에도 안전 상태가 유지되는지 미리 따져 보고, 유지되지 않으면 할당을 미룬다.
교착상태 회피는 발생 가능성을 인정하고 발생하려 할 때 이를 피하는 것이다. 예방이 조건 자체를 미리 없애는 방식이라면, 회피는 조건이 성립할 수 있음을 전제로 할당 시점마다 판단하는 방식이다. 판단을 매번 해야 하므로 자원 요청마다 검사하는 부담이 따른다. 요청을 들어주면 안전 상태가 깨지는 경우에는 요청을 받아들이지 않고 프로세스를 기다리게 한다.
이어지는 내용
- 탐지와 회복
- 예방
- 자주 헷갈리는 것
- 기출에서는
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 절 읽기