Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

DBMS의 교착 상태


교착 상태는 두 개 이상의 프로세스가 다른 프로세스가 보유하고 있는 실행을 완료하기 위해 일부 리소스가 필요할 때 발생합니다. DBMS의 교착 상태

위의 다이어그램에서 프로세스 1에는 리소스 1이 있고 리소스 2가 필요합니다. 마찬가지로 프로세스 2에는 리소스 2가 있고 리소스 1이 필요합니다. 이러한 각 프로세스는 완료하기 위해 상대방의 리소스가 필요하지만 어느 쪽도 리소스를 포기할 의사가 없습니다. 따라서 프로세스 1과 프로세스 2는 교착 상태에 있습니다.

코프만 조건

네 가지 Coffman 조건이 참인 경우에만 교착 상태가 발생합니다. 이러한 조건이 반드시 상호 배타적인 것은 아닙니다. 그들은:

상호 배제

한 번에 하나의 프로세스에서만 보유할 수 있는 리소스가 있어야 합니다. 아래 다이어그램에는 리소스 R1의 단일 인스턴스가 있으며 프로세스 P1에서만 보유하고 있습니다.

DBMS의 교착 상태

길게 누르고 기다리기

프로세스는 여러 리소스를 보유할 수 있으며 이를 보유하고 있는 다른 프로세스에서 더 많은 리소스를 요청할 수 있습니다. 아래의 다이어그램에서 프로세스 P1은 리소스 R1과 R2를 보유하고 있으며 프로세스 P2가 보유하고 있는 R3 리소스를 요청하고 있습니다.

DBMS의 교착 상태

선점 없음

리소스는 강제로 프로세스에서 선점될 수 없습니다. 프로세스는 자원을 자발적으로만 해제할 수 있습니다. 아래 다이어그램에서 프로세스 P1은 프로세스 P2에서 리소스 R3을 선점할 수 없습니다. 실행이 완료된 후 P2가 자발적으로 포기한 경우에만 해제됩니다.

DBMS의 교착 상태

순환 대기

프로세스는 마지막 프로세스가 첫 번째 프로세스가 보유한 자원을 기다릴 때까지 세 번째 프로세스가 보유한 자원을 기다리는 두 번째 프로세스가 보유하고 있는 자원을 기다리고 있습니다. 이것은 원형 체인을 형성합니다. 예:프로세스 P1에 리소스 R1이 할당되고 리소스 R2를 요청합니다. 유사하게, 프로세스 P2는 자원 R2를 할당받고 자원 R1을 요청하고 있습니다. 이것은 순환 대기 루프를 형성합니다.

프로세스는 마지막 프로세스가 첫 번째 프로세스가 보유한 자원을 기다릴 때까지 세 번째 프로세스가 보유한 자원을 기다리는 두 번째 프로세스가 보유하고 있는 자원을 기다리고 있습니다. 이것은 원형 체인을 형성합니다. 예:프로세스 P1에 리소스 R1이 할당되고 리소스 R2를 요청합니다. 유사하게, 프로세스 P2는 자원 R2를 할당받고 자원 R1을 요청하고 있습니다. 이것은 순환 대기 루프를 형성합니다.

DBMS의 교착 상태

교착 상태 감지

리소스 스케줄러는 서로 다른 프로세스에 할당된 모든 리소스를 추적하므로 교착 상태를 감지할 수 있습니다. 교착 상태가 감지된 후 다음 방법을 사용하여 해결할 수 있습니다.

  • 교착 상태에 관련된 모든 프로세스가 종료됩니다. 프로세스의 모든 진행 상황이 파괴되므로 이는 좋은 접근 방식이 아닙니다.
  • 교착 상태가 해결될 때까지 일부 프로세스에서 리소스를 선점하고 다른 프로세스에 제공할 수 있습니다.

교착 상태 방지

교착 상태가 발생하기 전에 이를 방지하는 것이 필수적입니다. 따라서 시스템은 교착 상태로 이어지지 않도록 각 트랜잭션을 실행하기 전에 엄격하게 검사합니다. 트랜잭션이 교착 상태로 이어질 가능성이 있는 경우라도 실행이 허용되지 않습니다.

교착 상태가 발생하지 않도록 하기 위해 타임스탬프를 사용하는 교착 상태 방지 체계가 있습니다. 이들은 -

  • 기다림 - 다이 스킴

    대기-다이 방식에서 트랜잭션 T1이 트랜잭션 T2가 보유한 리소스를 요청하면 다음 두 가지 가능성 중 하나가 발생할 수 있습니다.

    • TS(T1)
    • TS(T1)> TS(T2) - T1이 T2보다 젊다면, 즉 T1이 T2 이후에 시스템에 들어온 경우 T1은 종료됩니다. 나중에 동일한 타임스탬프로 다시 시작됩니다.

  • 상처 - 대기 방식

    상처 대기 방식에서 트랜잭션 T1이 트랜잭션 T2가 보유한 리소스를 요청하면 다음 두 가지 가능성 중 하나가 발생할 수 있습니다.

    • TS(T1)
    • TS(T1)> TS(T2) - T1이 T2보다 젊다면, 즉 T1이 T2 이후에 시스템에 들어온 경우 T2가 실행을 완료했을 때 해제될 리소스를 기다릴 수 있습니다.

교착 상태 회피

교착 상태가 발생한 후 조치를 취하는 것보다 교착 상태를 피하는 것이 좋습니다. 그래프 대기는 교착 상태를 방지하는 데 사용할 수 있습니다. 그러나 이는 더 큰 데이터베이스에서는 상당히 복잡해질 수 있으므로 작은 데이터베이스에만 유용합니다.

그래프 대기

대기 그래프는 리소스와 트랜잭션 간의 관계를 보여줍니다. 트랜잭션이 리소스를 요청하거나 이미 리소스를 보유하고 있는 경우 대기 그래프의 가장자리로 표시됩니다. 그래프 대기에 주기가 포함되어 있으면 시스템에 교착 상태가 있을 수 있으며 그렇지 않은 경우에는 교착 상태가 아닐 수 있습니다.

DBMS의 교착 상태

교착 상태 무시 - 타조 알고리즘

타조 알고리즘은 교착 상태가 단순히 무시되고 절대 발생하지 않을 것으로 가정됨을 의미합니다. 이것은 일부 시스템에서 교착 상태를 처리하는 비용이 매우 드물게 발생하므로 단순히 무시하는 것보다 훨씬 높기 때문에 수행됩니다. 따라서 교착 상태는 절대 발생하지 않을 것으로 가정하고 만일 발생하면 시스템이 재부팅됩니다.