6.[os] 교착 상태
교착 상태
- 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 말한다. 컴퓨터 시스템에서 교착 상태는 시스템 자원, 공유 변수(또는 파일), 응용프로그램 등을 사용할 때 발생할 수 있다
자원 할당 그래프
- 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것이다. 자원 할당 그래프를 사용하면 의 할당과 대기 상태를 한눈에 파악할 수 있다
교착 상태 필요조건
상호 배제: 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자 원이어야 한다.
비선점: 한 프로세스가 사용 중인 자원은 다른 프로세스가 빼앗을 수 없는 비선점 자원이 어야 한다.
점유와 대기: 프로세스가 어떤 자원을 할당 받은 상태에서 다른 자원을 기다리는 상태여야 한다.
원형 대기: 점유와 대기를 하는 프로세스 간에 관계가 원을 이루어야 한다.
식사하는 철학자 문제
- 철학자 4명이 둥그런 식탁에 둘러앉아 식사를 하는데, 왼쪽에 있는 포크를 잡은 뒤 오른쪽에 있는 포크를 잡아야만 식사가 가능하다는 조건이 있는 문제이다. 식사하는 철학자 문제는 교착 상태를 설명하기 위한 예로 오랫동안 사용되었다.
교착 상태 해결 방법
교착 상태 예방: 교착 상태를 유발하는 네 가지 조건이 발생하지 않도록 무력화하는 방식 이다.
교착 상태 회피: 자원 할당랑을 조절하여 교착상태를 해결하는 방식이다. 즉 자원을 할당 하다가 교착상태를 유발할 가능성이 있다고 판단되면 자원 할당을 중단하고 지켜본다.
교착 상태 검출과 회복: 자원 할당 그래프를 모니터링하면서 교착상태가발생하는지 살펴 보는 방식이다. 만약 교착 상태가 발생하면 교착 상태 회복 단계가 진행된다.
은행원 알고리즘
- 교착 상태 회피를 구현하는 방법으로, 자원의 총수와 현재 할당된 자원의 수를 기준으로 시스템을 안정 상태와 불안정 상태로 나누고 시스템이 안정 상태를 유지하도록 자원을 할당한다.
- 2개 이상의 프로세스가 서로의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 무엇이라 하는가?
교착 상태
프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 나타내는 방향성이 있는 그래프를 무엇이라 하는가?
자원 할당 그래프
네 가지 교착 상태 필요조건에 대해 설명하시오.
- 상호 배제: 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자 원이어야 한다.
- 비선점: 한 프로세스가 사용 중인 자원은 다른 프로세스가 빼앗을 수 없는 비선점 자원이 어야 한다.
- 점유와 대기: 프로세스가 어떤 자원을 할당 받은 상태에서 다른 자원을 기다리는 상태여야 한다.
- 원형 대기: 점유와 대기를 하는 프로세스 간에 관계가 원을 이루어야 한다.
- 교착 상태 해결 방법 중, 교착 상태를 유발하는 네 가지 조건을 무력화하는 방법은 무엇인가?
교착 상태 예방
교착 상태 해결 방법 중, 교착 상태가 발생하지 않는 수준으로 자원을 할당하는 방법은 무엇 인가?
교착 상태 회피
교착 상태 해결 방법 중, 자원 할당 그래프를 사용하여 교착 상태를 발견하는 방법은 무엇인가?
교착 상태 검출
교착 상태 해결 방법 중, 타임 아웃을 이용하여 해결하는 방법은 무엇인가?
교착 상태 회복
교착 상태 해결 방법 중, 은행원 알고리즘을 사용하여 해결하는 방법은 무엇인가?
교착 상태 회피
교착 상태 해결 방법 중, 모든 자원에 번호를 부여하고 낮은 번호의 자원을 사용할 수 없도록 하는 방법은 무엇인가?
- 원형 대기 예방
- (교착 상태 예방)
(낮은 번호의 자원 점유 후 높은 번호의 자원을 점유하도록 규칙을 강제하면 사이클 형태의 자원 점유가 발생하지 않는다.)
교착 상태 해결 방법 중, 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법은 무엇인가?
- 점유와 대기 예방
- (교착 상태 예방)
- (all or nothing 방식을 사용해 자원을 먼저 하나 점유한 상태에서 다른 자원을 요구하는 것을 막는 방식.)
- 교착 상태 해결 방법 중, 교착 상태가 검출되면 교착 상태를 일으킨 모든 프로세스를 종료하 는 방법은 무엇인가?
- 교착 상태 회복
12 자원 할당 그래프에서 무엇이 발견되면 교착 상태라고 판단할 수 있는가?
- 사이클이 존재하면 교착 상태가 발생한 것
교착 상태 해결 방법 중 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법이 있다. 이 방법의 단점을 설명하시오.
필요한 모든 자원을 미리 파악하기 어렵다.
자원 사용 효율성이 떨어진다.
- 나중에 필요한 자원까지 한 번에 점유해야 하기 때문에 당장 필요한 프로세스가 자원을 활용하지 못하는 일이 발생한다.
배치 시스템처럼 동작하게 된다.
- 필요한 자원을 모두 점유한 프로세스가 작업을 끝내야 그 다음 작업이 실행될 수 있다.
필요 자원이 많은 프로세스가 필요 자원이 적은 프로세스에 비해 불리하다. 이는 자원 사용의 공평성에 위배된다.
교착 상태 회피 방법인 은행원 알고리즘의 단점을 설명하시오.
실제로 교착 상태가 발생하지 않는데도 교착 상태가 발생할 것으로 판단해 자원 사용을 제약한다.
모든 프로세스가 자신이 사용할 자원을 미리 선언해야 한다.
교착 상태 검출 시 타임아웃을 이용하는 방법의 장단점을 설명하시오.
장점: 자원 할당 그래프보다 가볍다.
자원 할당 그래프를 사용하려면 자원을 요구하고 할당할 때 마다 갱신해야 하고 이를 유지하는데 드는 추가적인 오버헤드가 존재한다.
단점: 분산 시스템의 경우 네트워크 문제인지, 일반적인 처리의 지연인지, 교착 상태인지 판단하기 어렵다.
따라서 교착 상태가 아닌데도 프로세스를 강제 종료할 위험이 있다.