운영 체제의 교착 상태 : 조건 및 감지 알고리즘

문제를 제거하기 위해 도구를 사용해보십시오





운영 체제의 주요 목적은 하드웨어와 소프트웨어 리소스 간의 적절한 통신을 제공하고 프로그램에 공통 서비스를 제공하는 것입니다. 운영 체제 프로세스가 리소스에 액세스하려고 할 때 먼저 액세스하려는 특정 리소스에 요청을 보낸 다음 리소스를 활용하고 마지막으로 사용 후 리소스를 해제합니다. 많은 프로세스가 동시에 하나의 리소스에 액세스하려고한다고 가정하면 교착 상태라는 개념이 발생하는 상황에서 한 번에 모든 프로세스에 하나의 리소스를 제공하기가 어려워집니다. 따라서이 문서에서는 교착 상태가 발생하는 방법과 이러한 교착 상태 상황을 극복하는 방법을 설명합니다.

운영 체제의 교착 상태는 무엇입니까?

정의: Dead-Lock은 두 개 이상의 프로세서가 어떤 이벤트가 발생하기를 기다리는 상황이지만 발생하지 않는 이벤트는 교착 상태이며 프로세서가 교착 상태에 있다고합니다. 예를 들어, 일방 통행 도로에서 두 명의 개별 운전자가 운전하는 두 대의 자동차 A와 B가있는 실시간 시나리오를 가정 해 보겠습니다. 이제 A 차 운전자가 북쪽으로 이동하는 것이 올바른 방향이라고 말하고, B 차 운전자가 남쪽으로 이동하는 것이 옳다고 말하는 상황이 발생합니다. 그러나 어느 쪽도 다른 차가 앞으로 나아갈 수 있도록 뒤로 이동하지 않습니다.이 상태를 교착 상태라고합니다.




자동차 예

자동차 예

더 나은 이해를 위해 두 개의 리소스 R1, R2 및 두 개의 프로세스 P1 및 P2가있는 또 다른 예를 고려해 보겠습니다. 여기서 R1은 P1에 할당되고 R2는 P2에 할당됩니다. 이제 P1이 R2에 액세스하기를 원하는 경우, 이미 알고 있듯이 R2가 P2에 의해 보유되고 이제 P2가 R1에 액세스하기를 원합니다. P1은 R2에 액세스 할 때만 실행되고 P2도 R1에 액세스 할 때만 실행됩니다. 교착 상태입니다.



프로세서 예

프로세서 예

데드락 조건

다음은 모든 조건이 동시에 발생하는 경우 교착 상태가 발생할 수있는 특정 기회가있는 경우 발생하는 네 가지 중요한 교착 상태 조건입니다.

상호 배제

그것은 우리가 사용하는 자원이 상호 배타적 인 방식으로 사용되어야 함을 의미합니다. 한 프로세스 만 한 번에 하나의 리소스 만 사용하는 경우. 예를 들어, 인쇄 프로세스가 진행 중이고 갑자기 다른 프로세스가 인쇄 프로세스를 중단하려고합니다. 따라서 여기서 상호 배제 상황에서는 인쇄 작업이 완료된 후에 만 ​​다음 작업 만 처리됩니다. 자원을 동시에 공유하면 상호 배제를 없앨 수 있지만 실제로는 불가능합니다.

상호 배제

상호 배제

선점 불가

에 따르면 선점 형 기반 알고리즘, 현재 작업을 중단하려는 우선 순위 작업이있는 경우. 선점 알고리즘은 현재 작업을 보유하고 우선 우선 순위 작업을 실행하고 첫 번째 작업으로 돌아갑니다. 프로세스가 실행되는 동안 리소스를 보유하는 위의 예에 따라 설명 된 상황, 즉 P1은 실행 후에 만 ​​R1을 해제 할 수 있으며, 마찬가지로 P2는 실행 후에 만 ​​R2를 해제 할 수 있습니다. 선점이 없으면 교착 상태가 발생할 수 있습니다.


선점 금지 예

선점 금지 예

잠시만 요

프로세스가 일부 리소스를 보유하고 있으며 추가 리소스를 기다리고 있지만 이러한 리소스는 다른 프로세스에 의해 획득됩니다. 위의 예에서 P1은 R1을 유지하고 R2를 기다리고 있습니다. 여기서 R2는 P2에 의해 획득되고, P2는 R2를 유지하고 R1을 기다리고 있습니다. 여기서 R1은 P1에 의해 획득되는 홀드이며 대기 상황은 시스템에서 교착 상태가 발생할 수 있습니다.

보류 및 대기 예제

보류 및 대기 예제

순환 대기

한 프로세스가 다른 프로세스에 할당 된 리소스를 기다리고 있고 해당 프로세스가 리소스를 기다리고있는 경우 프로세스 집합은 교착 상태에 있다고합니다. 이는 위에서 설명한 루프 형태의 예와 유사합니다. 여기서 P1은 R2를 기다리고 있고, R2는 P2에 할당되고, P2는이 조건이 교착 상태를 만족하면 순환 대기 형태 인 P1에 할당 된 R1과 R1을 기다리고 있습니다.

순환 대기 예

순환 대기 예제

데드락 감지 알고리즘

프로세스에 리소스를 할당하고 운영 체제가 시스템에서 교착 상태가 발생했는지 여부를 재확인하는 경우 2 가지 주요 교착 상태 감지 알고리즘을 사용하지 않는 경우는 다음과 같습니다.

  • 단일 인스턴스
  • 리소스 유형의 여러 인스턴스

단일 인스턴스

단일 인스턴스는 시스템에 모든 리소스의 단일 인스턴스가있는 상황입니다. 대기 그래프 알고리즘 또는 리소스 할당 그래프라고도합니다. 자원 할당 그래프는 두 개의 서로 다른 정점으로 표현되는 일련의 프로세스와 자원 세트로 구성됩니다. 리소스 할당 그래프의 리소스가 수정되어 그래프 대기 형식으로 표시됩니다. 그래프 양식을 기다리면 아래와 같이 정점으로 표시되는 프로세스 만 있습니다.

  • 리소스 할당 그래프 : 프로세스 P1, P2, P3 및 리소스 R1, R2, R3이 리소스 할당 그래프에 표시됩니다.
  • 그래프 대기 : 그래프 대기에는 프로세스 P1, P2, P3 만 언급됩니다.
  • 사이클 조건이있는 경우 한 방향으로 프로세스의 연속 흐름이있는 경우 사이클 조건이 종료되고 그래프가 교착 상태에있을 때까지 기다린다는 의미입니다.

예 1 : 아래 예는 그래프를 기다리는 동안 연속적인 흐름이 관찰되지 않기 때문에 교착 상태가 없음을 보여줍니다.

단일 인스턴스 예 1

단일 인스턴스 example1

예 2 : P1에서 P4 로의 연속적인 순환 흐름이 있기 때문에 교착 상태가 발생했습니다.

단일 인스턴스-Example2

단일 인스턴스 example2

시스템에서 교착 상태가 자주 발생하면 탐지 알고리즘이 자주 사용됩니다. 탐지 알고리즘을 더 많이 사용하면 더 많은 오버 헤드와 계산 시간이 늘어납니다. 따라서이를 극복하기 위해 동일한 시간을 제공 한 후 알고리즘을 호출합니다. 그래프의 가중치가 교착 상태를 감지하는 데 사용되는 방법입니다.

리소스 유형의 여러 인스턴스

자원 유형의 다중 인스턴스는 시스템에 모든 자원의 다중 인스턴스가있는 상황이며 Bankers 알고리즘이라고도합니다. Bankers 알고리즘에 따르면 프로세스가 필요한 모든 리소스를 확보하자마자 리소스를 해제합니다.

다음 예를 고려해 보겠습니다. 프로세스 P0, P1, P2 및 리소스 유형 A, B, C가 있다고 가정합니다. 여기서 A는 CPU , B는 프린터가 될 수 있고 C는 키보드가 될 수 있습니다. 열의 숫자 '0'은 리소스 가용성을 나타냅니다.

사례 (i) : 조건 요청이 P0과 P2에 존재하는 '000'조건이라고 가정하면 어떤 요청이 충족되었는지 확인해야합니다. 프로세스 P0은 할당 된 후 프로세스를 해제하고 다음 P2 프로세스는 할당 된 후 해제합니다. 이와 같이 순서대로 하나의 프로세스가 순서대로 P0, P2, P3, P1, P4를 해제합니다. 마지막으로 P7, P2, P6으로 사용 가능한 리소스를 얻습니다. 사용 가능한 시퀀스는 교착 상태가없는 상태입니다.

은행가-알고리즘-예제 1

은행가 알고리즘 예제 1

주택 (ii) : P2가 000이 아닌 001 인 경우 은행가의 알고리즘을 적용하여 교착 상태를 확인합니다. 여기서 P0 만 5 개 프로세스 모두에서 실행됩니다. 따라서 P1, P2, P3, P4는 P0을 제외하고 교착 상태에 있습니다.

은행가-예제 2

bankers-example2

교착 상태의 응용

교착 상태의 적용은 온라인 시험 결과의 실시간 예를 통해 설명 할 수 있으며, 여러 학생이 공개 시점에 대학 웹 사이트에 액세스하려고합니다. 웹 페이지가 한 번에 여러 사용자에게로드되지 않는 경우가 있습니다. 이것은 교착 상태입니다. 이것은 알고리즘 중 하나를 사용하여 극복 할 수 있습니다.

장점

교착 상태의 장점은 다음과 같습니다.

  • 교착 상태 방지에서 선점이 관찰되지 않습니다.
  • 프로세스 지연 없음

단점

교착 상태의 단점은

  • 사용할 리소스를 미리 알고 있어야합니다.
  • 장기간 프로세스 막힘
  • 선점 손실은 상속됩니다.

이 기사에서는 두 개 이상의 프로세스가있을 때 교착 상태가 어떻게 발생하는지, 교착 상태가 발생하는 원인이되는 세 가지 조건과이를 감지하는 리소스 공유 알고리즘이라는 두 가지 유형의 알고리즘에 대해 간략히 설명합니다. 교착 상태 교착 상태 회피 알고리즘 인 은행가의 알고리즘. '교착 상태가 무시되면 어떻게됩니까?'라는 질문이 있습니다.