교착상태와 기아상태란?

hoon·2023년 2월 14일
0

교착상태(deadlock)

두 개 이상의 작업이 서로가 가진 자원을 기다리며 상대방의 작업이 끝나기만을 기다리고 있기 때문에, 다음 단계로 진행하지 못하는 상태로 프로세스, 스레드 모두 이와 같은 상태가 일어날 수 있다. 스마트폰에서 특정 앱이 실행중 동작이 안될때 이유중 하나로 데드락인 경우가 있다. 운영체제가 해당 앱이 특정 기간동안 반응이 없으면 강제종료 시킨다.

교착상태의 원인

  • 상화배제 : 한 프로세스가 자원을 독점해서 다른 프로세스들이 자원에 접근 불가 상태
  • 점유대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
  • 비선점 : 다른 프로세스의 자원을 강제적으로 가져 올 수 없음
  • 환형대기 : 프로세스 A,B가 서로의 자원을 요구하는 상황

교착상태 해결 방법

  1. 자원을 할당할때 애초에 교착상태 조건이 성립되지 않도록 설계한다.
  2. 교착상태 가능성이 없을때만 자원 할당되며, 프로세스당 요청할 자원 최대치를 통해 자원할당 가능여부를 파악하는 ‘은행원알고리즘’을 사용한다.
  3. 교착상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개씩 지운다.

기아상태(starvation)

특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태로 교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생하는 반면에 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 의미한다.

기아상태 해결 방안 (우선순위 변경)

  • 프로세스 우선순위를 수시로 변경해서, 각 프로세스가 높은 우선순위를 가질 기회주기
  • 오래 기다린 프로세스의 우선순위 높여주기
profile
프론트엔드 학습 과정을 기록하고 있습니다.

0개의 댓글

관련 채용 정보