cs(운영체제)

교착 상태(DeadLock)

그zi운아이 2023. 9. 6. 13:49

교착상태란 

두 개 이상의 프로세스나 스레드가 서로가 가지고 있는 자원을 기다리면서 영운히 대기하는 현상을 의마한다.

이 상태가 발생하면 프로세스나 스레드는 원하는 자업을 완료할수가 없다

 

교착 상태 발생 조건

  • 상호 배제
    • 한번에 한 프로세스만이 공유 자원을 사용할 수 있다.
  • 점유와 대기 
    • 자원을 보유한 채 다른 자원을 할당받기 기다리는 상태
  • 비선점
    • 이미 점유한 자원을 프로세스가 명시적으로 해제하기 전까지는 그 자원을 뺏을 수 없다.
  • 순환 대기 
    • 프로세스 A,BC가 있을 때 A는 B를 C가 가진 자원을 기다리는 원의 형태로 자원을 대기하는 것을 원형대기 라고 한다.

교착상태 해결 방법

교착상태가 일어나지 않게 하는 방법으론 크게 예방,회복,검출,회복이 있다

예방

상호배제 : 한번에 여러개의 프로세스가 공유 자원을 사용할 수 있도록 한다.

점유와 대기 : 프로세스가 시작할 때 필요한 모든 자원을 미리 할당 받도록 한다.

비선점 : 필요한 자원이 사용 중일 경우, 그 자원을 사용하고 있는 프로세스로부터 강제로 자원을 뺏을 수 있도록 한다.

순환 대기 : 자원에 번호를 매겨 순서대로 할당하면 이 조건을 무효화 시킬 수 있다.

회피

교착 삭태가 발생하지 않을 정도로만 조심 조심 자원을 할당하는 방식이다. 교착 상태가 발생하지 않고 모든 프로세스가 정장적으로 자원을 할당받고 종료될수 있는 상태를 안전 상태 교착상태가 발생할 수도 있는 상황을 불안전 상태라고 부르고 

안전 상태에 있을 경우에만 자원을 할당하는 은행원 알고리즘을 주로 사용한다.

검출 및 회복

검출 : 주기적으로 시스템 상태를 스캔하여 교착상태가 발생했는지를 확인한다.

회복 : 교착 상태를 해결하기 위해 하나 이상의 프로세스를 종료하거나 할당된 자원을 해제한다.

무시

교착 상태가 발생확률이 낮거나 큰 문제가 발생하지 않는 시스템에서 사용한다 타조알고리즘 이라고 불리는 방식이다.