교착 상태 Opera팅 시스템: 순환 대기(Circular Wait)란 무엇입니까(예)
⚡ 스마트 요약
운영 체제에서 교착 상태는 각 프로세스가 리소스를 점유하고 다른 프로세스가 점유한 리소스를 기다리면서 순환 고리를 형성하여 어떤 프로세스도 진행할 수 없을 때 발생합니다.

교착상태란 무엇인가?
이중 자물쇠 이는 ~에서 발생하는 상황입니다. 운영 체제 데드락은 다른 대기 프로세스가 요청한 리소스를 점유하고 있어 한 프로세스가 대기 상태에 들어가는 현상입니다. 데드락은 여러 프로세스가 소프트 락 또는 소프트웨어 락이라고 하는 특정 유형의 상호 배타적인 리소스를 공유할 때 발생하는 멀티프로세싱 환경에서 흔히 발생하는 문제입니다.
교착 상태가 발생하면 관련된 프로세스 중 어느 것도 계속될 수 없으므로 운영 체제가 개입할 때까지 해당 작업이 중단됩니다.
교착 상태의 예
- 실제 사례를 들자면, 차량 통행이 한 방향으로만 이루어지는 경우를 들 수 있습니다.
- 여기서 브리지는 리소스로 간주됩니다.
- 따라서 교착 상태가 발생하면 한 차량이 후진(리소스 선점 및 롤백)하면 해결될 수 있습니다.
- 교착 상태가 발생하면 여러 대의 차량을 백업해야 할 수도 있습니다.
- 그러므로 기아는 발생할 수 있습니다.
교착 상태의 예
순환 대기란 무엇입니까?
한 프로세스가 두 번째 프로세스가 보유한 리소스를 기다리고 있고, 두 번째 프로세스는 세 번째 프로세스가 보유한 리소스를 기다리고 있는 식으로 계속 이어집니다. 마지막 프로세스가 첫 번째 프로세스가 보유한 리소스를 기다릴 때까지 이러한 과정이 반복됩니다. 이렇게 해서 순환 고리가 형성됩니다.
예를 들어, 프로세스 A가 리소스 A를 요청하는 동안 리소스 B가 할당됩니다. 마찬가지로, 프로세스 B가 리소스 B를 요청하는 동안 리소스 A가 할당됩니다. 이로 인해 순환 대기 루프가 발생합니다.
순환 대기의 예
예를 들어, 컴퓨터에 USB 드라이브가 세 개 있고 프로세스가 세 개 있다고 가정해 보겠습니다. 각 프로세스는 USB 드라이브 하나씩을 점유하고 있습니다. 따라서 각 프로세스가 다른 드라이브를 요청할 때, 각 프로세스는 자신이 사용 중인 USB 드라이브가 해제되기를 기다리면서 교착 상태에 빠지게 됩니다. 이는 악순환으로 이어집니다.
순환 대기 예
OS에서의 교착 상태 감지
교착 상태 발생은 리소스 스케줄러에 의해 감지될 수 있습니다. 리소스 스케줄러는 운영체제가 리소스를 효율적으로 관리할 수 있도록 도와줍니다. track는 서로 다른 프로세스에 할당된 모든 리소스의 총합입니다. 교착 상태가 감지되면 리소스를 선점하거나, 프로세스를 롤백하거나, 교착 상태에 빠진 프로세스 중 하나 이상을 종료하여 해결할 수 있습니다.
OS에서의 교착 상태 방지
교착상태가 발생하기 전에 이를 방지하는 것이 중요합니다. 시스템은 모든 트랜잭션이 실행되기 전에 교착상태로 이어지지 않는지 검사합니다. 향후 교착상태를 유발할 수 있는 작은 작업이라도 절대 실행되지 않도록 차단합니다.
교착상태 방지란 네 가지 필수 조건 중 적어도 하나가 충족되지 않도록 보장하는 일련의 방법입니다.
선점 없음
리소스는 해당 리소스를 보유한 프로세스가 작업을 완료한 후에만 자발적으로 해제할 수 있습니다.
- 일부 리소스를 점유하고 있는 프로세스가 즉시 할당할 수 없는 다른 리소스를 요청하면 해당 프로세스가 점유하고 있던 모든 리소스가 해제됩니다.
- 선점된 리소스는 프로세스가 대기 중인 리소스 목록에 추가됩니다.
- 해당 프로세스는 기존 리소스와 요청하는 새 리소스를 모두 복구할 수 있을 때만 다시 시작됩니다.
상호 배제
상호 배제는 Mutex의 정식 명칭입니다. 이는 이진 암호화의 특수한 유형입니다. 신호기 이는 공유 리소스에 대한 접근을 제어하는 데 사용됩니다. 우선순위 역전 문제를 방지하고 우선순위가 높은 작업이 가능한 한 짧은 시간 동안 차단되도록 우선순위 상속 메커니즘을 포함합니다.
읽기 전용 파일과 같은 공유 리소스는 교착 상태를 유발하지 않지만 프린터나 테이프 드라이브와 같은 리소스는 단일 프로세스만 독점적으로 액세스할 수 있어야 합니다.
잡고 기다려라
이러한 상황에서는 프로세스가 하나 이상의 리소스를 점유한 상태에서 동시에 다른 하나 이상의 리소스를 기다리는 것을 중지해야 합니다.
순환 대기
이 방법은 모든 리소스 유형에 대한 완전한 순서를 적용합니다. 순환 대기 방지를 위해서는 모든 프로세스가 열거된 순서대로 리소스를 요청해야 합니다.
교착상태 회피 Algorithms
교착 상태가 발생한 후에 조치를 취하는 것보다 교착 상태를 애초에 방지하는 것이 더 좋습니다. 교착 상태 방지에는 자원 사용 방식과 같은 추가 정보가 필요합니다. 교착 상태 방지 모델은 각 프로세스가 필요할 수 있는 각 유형의 자원 최대량을 선언하는 방식입니다.
기피 Algorithms
교착상태 방지 알고리즘은 자원 할당 상태를 동적으로 평가하여 순환 대기 상황이 절대 발생하지 않도록 합니다.
리소스 유형의 단일 인스턴스에 대해:
- 자원 할당 그래프를 사용하십시오.
- 그래프에서 순환 구조는 교착 상태를 발생시키는 데 필요충분조건이다.
리소스 유형의 여러 인스턴스의 경우:
- 사이클은 교착 상태를 유발하는 데 필요조건이지만 충분조건은 아닙니다.
- 사용 은행가의 알고리즘.
기아와 교착 상태의 차이점
다음은 교착 상태와 기아 상태의 몇 가지 중요한 차이점입니다.
| 이중 자물쇠 | 굶주림 |
|---|---|
| 교착 상태는 프로세스 중 하나가 차단될 때 발생합니다. | 기아 현상이란 우선순위가 낮은 프로세스들이 모두 차단되고 우선순위가 높은 프로세스들만 실행되는 상황을 말합니다. |
| 교착상태는 무한한 과정이다. | 굶주림은 긴 기다림이지만, 무한한 과정은 아닙니다. |
| 모든 교착 상태에는 항상 기아 상태가 존재한다. | 모든 기아 사태가 반드시 교착 상태로 이어지는 것은 아닙니다. |
| 교착상태는 상호 배제, 대기, 선점 부재, 순환 대기가 동시에 발생할 때 발생합니다. | 이는 우선순위가 제대로 통제되지 않고 자원 관리가 부실하기 때문에 발생합니다. |
교착 상태의 장점
교착상태 처리 방식을 사용하는 장점은 다음과 같습니다.
- 이러한 상황은 단일 활동 폭발을 수행하는 프로세스에 적합합니다.
- 교착상태에는 선점권이 필요하지 않습니다.
- 이 방법은 상태를 쉽게 저장하고 복원할 수 있는 리소스에 적용할 때 편리합니다.
- 컴파일 시점 검사를 통해 이를 강제하는 것이 가능합니다.
- 시스템 설계 단계에서 문제가 해결되므로 런타임 계산이 필요하지 않습니다.
교착상태의 단점
교착상태 처리 방식을 사용하는 데 따른 단점은 다음과 같습니다.
- 이는 프로세스 시작을 지연시킵니다.
- 프로세스는 미래에 필요한 자원을 미리 파악해야 합니다.
- 필요 이상으로 자주 선제적으로 대응합니다.
- 이는 점진적인 리소스 요청을 허용하지 않습니다.
- 이는 본질적으로 선점 손실이 발생합니다.


