딱콩이의 봄

데드락(Dead Lock) 본문

개발/네트워크

데드락(Dead Lock)

코린이딱콩 2022. 9. 16. 16:10

데드락이란?

복수의 프로세스가 가능하지 못한 상태를 무한정 기다리는 상태입니다.

예를들어 두개 이상의 프로세스가 하나의 자원을 공유하여 사용하고 있을 때 서로 사용할 자원을 요구하지만 요구를 영원히 들어줄 수 없는 상태인거죠!

 

 

교착 상태가 발생하는 조건 4가지

교착 상태는 아래 4가지 조건이 모두 만족되는 경우(필요충분 조건) 발생할 가능성이 있으며,

하나라도 만족하지 않으면 발생하지 않습니다.

 

1.상호배제(Mutual Exclusion)

한번에 한 개의 프로세스만이 공유자원을 사용할 수 있습니다.

 

2.점유대기(Hold and Wait)

프로세스가 할당된 자원을 가진 상태에서 다른자원을 기다립니다.

 

3.비선점(No Preemtion)

프로세스가 작업을 마친 후 자발적으로 자원을 반환할 때까지 기다립니다.

(이미 할당된 자원을 강제적으로 빼앗을 수 없습니다.)

 

4.순환대기(Circular Wait)

프로세스의 자원점유 및 점유 된 자원의 요구관계가 원형을 이루면서 대기하는 조건입니다.

각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있습니다.

 

 

💡교착상태 해결방법

 

-예방(Prevention)

교착상태 예방 방법은 교착상태가 애초에 일어나지 않도록 방지하는 방법으로 교착상태 발생 4가지 조건중 하나를 부정함으로써 교착상태를 예방하는 방법입니다.

 

1.상호배제 부정

여러개의 프로세스가 동시에 공유자원을 사용할 수 있게 합니다.

 

2.점유대기 부정

프로세스가 실행되기 전에 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나, 자원이 점유되지 않은 상태에서만 자원 요청을 받도록 합니다.

 

3.비선점 부정

모든 자원에 대한 선점을 허용합니다.

 

4.순환대기 부정

자원을 선형으로 분류하여 고유번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유번호 보다 앞이나 뒤 한쪽방향으로만 자원을 요구하도록 합니다.

 

그러나 이렇게 교착상태 발생조건을 방지해서 데드락을 예방하는 방법은 시스템 처리량이나 자원 사용의 효율성을 떨어트리는 단점이 있습니다.

 

-회피(Avoidance)

교착상태가 발생할 가능성이 있는 자원 할당(Unsafe allocation)을 하지 않고 안전한 상태(Safe state)에서만 자원 요청을 허용하는 방법입니다. 하지만 교착상태 회피를 하기 위해서는 아래와 같은 가정이 필요합니다.

 

  • 프로세스 수 고정
  • 자원의 종류와 수 고정
  • 프로세스가 요구하는 최대 자원의 수를 알아야 함
  • 프로세스는 자원 사용 후 반드시 반납

'개발 > 네트워크' 카테고리의 다른 글

클라우드란?  (0) 2022.12.03
IP(Internet Protocol)  (0) 2022.09.14
네트워크 계층  (0) 2022.09.14
텍스트 파일 vs 바이너리 파일  (0) 2022.08.31
GET, POST  (0) 2022.08.31
Comments