Deadlock이란?
일련의 프로세스들이 서로 가진 자원을 요청하고 기다리며 blocked된 상태
Deadlock 발생 필요조건 4가지
Mutual Exclusion (상호 배제)
- 한 자원에 대해 여러 프로세스 접근이 불가함
Hold and Wait (점유와 대기)
- 프로세스가 자원을 가지고 있는 상태로 다른 프로세스가 사용하고 있는 자원의 반납을 기다림
No preemption (비선점)
- 다른 중요한 프로세스가 들어와도 현재 수행하는 프로세스를 계속 수행함
Circular Wait (순환대기)
- 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 소유함
Deadlock 처리 방법
Deadlock 해결 방법에는 예방, 회피, 회복, 무시 4가지가 존재하지만, 대표적인 방법인 회피에 대해서만 설명
Avoidance (회피)
Unsafe한 state에 들어가지 않도록 보장. Safe State란 운영체제가 판단했을 때 deadlock 발생 안하는 상태를 의미. Unsafe 상태는 deadlock이 발생이 가능한것이지 무조건 발생은 아님.
Banker's Algorithm (은행원 알고리즘)
대표적인 Deadlock 회피 방법으로 safe state를 유지할 수 있는 요구만을 수락하고 Unsafe state를 초래할수 있는 사용자의 요구는 계속 거절하는 것.
Available을 충족하는 Need 자원중 가능한 요청만을 처리함. Available < Need 경우에 자원 할당은 가능하지만, 완료하지 못하기 때문에 자원을 돌려받지 못하므로 deadlock이 발생함. Safe sequence가 하나라도 존재한다면 해당 시스템은 safe state라고 말할 수 있음.
'CS > 운영체제' 카테고리의 다른 글
[운영체제 OS] Kernel Thread vs User Thread (0) | 2021.08.23 |
---|---|
[운영체제 OS] 동기 VS 비동기 / Blocking vs Non-Blocking (0) | 2021.08.23 |
[운영체제 OS] Synchronization (0) | 2021.08.23 |
[운영체제 OS] Process vs Thread (2) | 2021.08.21 |
[운영체제 OS] CPU Scheduling (0) | 2021.08.21 |
댓글