코딩 기록들

데드락(교착상태)이란? 본문

면접준비하기

데드락(교착상태)이란?

코딩펭귄 2023. 9. 14. 02:46

데드락 정의  

  • 둘 이상의 프로세스가 점유하고 있는 자원(cpu, core,lam 즉 메모리)을 서로 기다릴 때 무한한 대기상태에 빠지는 것
  • 두개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해 다음 처리를 하지 못하는 상태
  • '교착 상태'라고도 부르며, 시스템적으로 한정된 자원을 여러곳에서 사용할때 발생
  • '외나무 양끝에서 두사람이 서로 비켜주기만 기다리는'것과 같음

 

데드락 조건  

: 아래의 4가지 조건이 모두 만족되야만 발생

  1. 상호 배제(Mutual Exclusion) : 한 번에  한 프로세스만 자원을 사용 할 수 있다.
  2. 점유대기(Hold and Wait) : 먼저 다른 프로세스가 점유한 자원을 뺏을 수 없다.
  3. 비선점((Nonpreeptive) : 자원을 점유한 상태로 다른 프로세스의 자원을 대기하는 프로세스가 존재한다. (여기서 선점(preemptive) 이란 우선권이 있을 수 있어, 우선권이 있는 프로세스가 다른 프로세스의 자원을 가져 올 수 있다는 말을 의미함. 비선점(Nonpreemptive)은 우선권 개념없이, 먼저 점유한 프로세스의 자원을 뺏을 수 없다는 의미가 됨)
  4. 순한대기 : 프로세스들이 순환 형태로 다른 프로세스가 요구하는 자원을 보유하고 있는 것

 

데드락 처리방법

1. 데드락 예방 : 위의 데드락 조건중 한가지 제거하는 방법

    1) 상호 배제 조건 방지 : 하나의 자원을 여러 프로세스가 공유 할 수 있게 함 (동기화 문제가 발생 할 수 있음)
    2) 점유 대기 조건 방지 : OS 에 필요한 자원을 모두 한꺼번에 요구하고, 처리하도록 하여 자원을 대기하지 않도록 함
    3) 비선점 방지 : 우선권이 더 높은 다른 프로세스가 자원을 점유를 가져 올 수 있게 함
    4) 순환대기 방지 : 자원을 순환 형태로 대기하지 않도록 일정한 한쪽 방향으로만 자원을 요구 할 수 있도록 함

 

2. 데드락 회피 avoidance 

  • OS가 자원을 할당해줄 때, 데드락의 가능성이 없도록 자원을 할당해주는 방식. 이렇게 데드락이 발생할 가능성이 없는 상태를 '안전상태'라고 함

3. 데드락 탐지 detection : 데드락이 발생했는지을 확인하는 알고리즘

  • 현재 자원 할당상태를 알 수 있는 자원 할당그래프 등의 방법을 이용하여 탐지함
  • 데드락 탐지 후에는, 순환대기 상태에서 벗어날 수 있도록 데드락 회복 기법을 사용
  • 데드락이 발생한 모든 프로세스를 중지시키는 방법, 프로세스를 종료시켜가며 탐지&회복을 반복하는 방법 등이 있음

4. 데드락 회복 recovery : 교착상태의 프로세스를 종료하거나 할당 자원을 해제함으로서 회복

  • 프로세스 종료
  • 교착상태의 프로세스를 모두 중지
  • 교착상태가 제거될때까지 한 프로세스씩 중지
  • 자원 선점. 즉, 데드락이 깨질때까지 프로세스로부터 자원을 계속 선점, 이들을 다른 프로세스에 주는 것
  • 교착 상태의 프로세스가 점유하는 자원을 선점하여 다른 프로세스에 할당, 해당 프로세스를 일시 정지
  • 우선순위가 낮은 프로세스를 위주로 프로세스 자원 선점

'면접준비하기' 카테고리의 다른 글

IP주소(1) - ARP, 홉바이홉 통신  (0) 2023.09.14
Loss Surface 란?  (0) 2023.03.01
RDBMS / NOSQL  (0) 2023.03.01
스레드 & 프로세스  (0) 2023.02.28
TCP / UDP  (0) 2023.02.27