혼자 공부하는 운영체제 읽고 면접 준비 - 교착상태(23.2.13)

피아노과 개발자도전?·2023년 2월 13일
0

Today I learned

목록 보기
60/75
post-custom-banner



교착상태(deadlock)

일어나지 않을 사건을 기다리며 멈춰 버리는 현상

프로세스1은 자원 A를 점유한 채 프로세스2의 자원 B를 기다리고, 프로세스2는 자원 B를 점유한 채 프로세스1의 자원 A를 기다리는 상황

발생 조건

  • 상호 배제 : 자원을 한 번에 하나의 프로세스만 이용 가능할 때
  • 점유와 대기 : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태일 때
  • 비선점 : 다른 프로세스의 자원을 강제로 빼앗지 못할 때
  • 원형 대기 : 자원 할당 그래프가 원의 형태를 이룰 때(반드시 발생은 아님)



교착 상태 예방

발생 조건 중 하나라도 만족하지 않으면 교착 상태는 발생하지 않습니다.

없앨 조건

  • 상호 배제 : 모든 자원을 공유 가능하게 하기엔 무리가 있음
  • 점유와 대기 : 자원을 들고있을 때 다른 자원을 가지지 못함. 자원의 활용률이 낮아질 수 있고, 많은 자원을 사용하는 프로세스가 불리
  • 비선점 : 프린트 같은 경우 자원을 빼앗아 사용하기 어려움
  • 원형 대기 : 예) 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당(1~5번 자원이 있으면 1번과 5번 동시에 못가짐). 모든 자원에 번호를 붙이긴 어렵고, 각 자원에 어떤 번호를 붙일지가 어려움


교착 상태 회피

안전 상태 : 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태
불안전 상태 : 교착 상태가 발생할 수도 있는 상황
안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서 - 안전 순서열이 있는 상태는 안전 상태

위의 경우 P2에 할당후 반환 -> P1에 할당후 반환 -> P3에 할당하면 안전 순서열이 된다.



교착 상태 검출 후 회복

교착 상태 발생을 인정하고 사후에 조치

프로세스들이 자원을 요구할 때마다 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사함

회복 방식

  • 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
  • 프로세스 강제 종료 : 단순확실. 프로세스들이 작업 내역을 잃을 수도 있음
profile
공부한 내용 정리
post-custom-banner

0개의 댓글