운영체제 ‐ 교착 상태(DeadLock) - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 교착상태(DeadLock)
식사하는 철학자
- 서로가 점유하는 자원을 서로가 계속 기다리는 문제로 인해 무한정 기다리는 상태
📚 자원 할당 그래프
프로세스는 원으로, 자원 종류는 사각형으로
사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현
프로세스가 어떤 자원을 할당 받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
Ex. 자원 할당 그래프 분석하기
- 프로세스A는 SSD로부터 자원을 할당받아 사용한다.
- 프로세스B는 CPU로부터 자원을 할당받아 사용한다.
- 프로세스C는 CPU로부터 자원을 할당받아 사용한다.
- 프로세스D는 프린터를 사용한다.
- 프로세스E는 프린터를 필요로 한다.
- 프로세스F는 CPU를 필요로 한다.
📚 교착상태의 특징
- 자원 할당 그래프가 원의 형태(순환형)를 띄고 있다.
- 교착상태가 발생하는 조건
상호 배제
- 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태점유와 대기
- 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태비선점
- 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태원형 대기
- 프로세스들이 원의 형태로 자원을 대기하는 상태
위 네 가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않으나 네 가지 조건을 모두 만족하면 교착 상태가 발생할 수 있다.
📚 교착상태 해결방법
교착상태 예방
: 교착상태 발생 조건 중 하나를 제거하면서 해결한다.- 교착상태 발생 조건 4가지 중 하나를 제거하면서 해결하는 방법
- 이 방법은 자원 낭비가 심하다.
교착상태 회피
: 교착상태 발생 시 피해나가는 방법은행원 알고리즘
: 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 사전에 검사하여 교착상태를 회피 / 안정 상태면 자원 할당, 아니면 다른 프로세스들이 자원 해지까지 대기
교착상태 탐지 & 회복
: 교착상태가 되도록 허용한 다음 회복시키는 방법탐지
: 자원 할당 그래프를 통해 교착 상태 탐지- 자원 요청 시, 탐지 알고리즘을 실행시켜 그에 대한 오버헤드 발생
회복
: 교착 상태 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법