Deadlock의 개념
- blcoked : 프로세스가 특정 이벤트를 기다리는 상태
- asleep : 프로세스가 필요한 자원(메모리 등)을 기다리는 상태
- deadlock : 프로세스가 발생 가능성이 없는 이벤트를 기다리는 상태
- starvation과 deadlock의 차이
* deadlock은 사용할 수 없는 자원을 기다리는 상태
* starvation은 사용할 수 있는 자원(CPU)를 기다리는 상태
* 발생하는 상황이 다름
Deadlock 발생
- 2개의 프로세스(P1, P2)와 2개의 자원(R1, R2)
- ① P1이 자원 R2 요청
- ② P2가 자원 R1 요청
- ③ P1이 자원 R1 요청했으나 자원이 없음, 아직 deadlock이 아닌 상태, 왜냐하면 P2가 R1 사용하고 반납하면 되기 때문에 그런데 반납은 안하고 연이어 R2를 요청하는 게 문제
- ④ P2다 자원 R2 요청, 서로 다른 프로세스가 가진 자원 요청하는 상태, Deadlock
Deadlock 발생 필요 조건
- 자원의 특성
* Exclusive use of resources
* Non-preemptible resources
- 프로세스의 특성
* Hold and wait
* Circular wait
자원의 분류
- 선점 가능 여부에 따른 분류
- 할당 단위에 따른 분류
- 동시 사용 가능 여부에 따른 분류
- 재사용 여부에 따른 분류
1) 선점 가능 여부에 따른 분류
- Preemptible resources : 선점 당한 후, 돌아와도 문제가 발생하지 않는 자원
* processor : context switching의 saving과 restoring 덕분에
* memory : swap-device 덕분에
- Noe-preemptible resources : 선점 당한 후, 돌아오면 문제가 발생하는 자원
* disk drive : 데이터 저장 중에 멈추면 전체가 날아감. 따라서 rollback 같은 특별 동작 필요
2) 할당 단위에 따른 분류
- Total allocation resources : 자원 전체를 프로세스에게 할당하는 자원
* processor, disk drive
- Partitioned allocation resources : 하나의 자원을 여러 조각으로 나누어 여러 프로세스들에게 할당
* memory
3) 동시 사용 가능 여부에 따른 분류
- Exclusive allocation resources : 한 순간에 한 프로세스만 사용 가능한 자원
* processor, memory, disk drive
- Shared allocation resources : 여러 프로세스가 동시에 사용 가능한 자원
* program(source code, exe file), shared data
4) 재사용 가능 여부에 따른 분류
- SR(Serially-reusable resources) : 시스템 내에 항상 존재하는 자원
* processor, memory, disk
- CR(consumable resources) : 한 프로세스가 사용한 후에 사라지는 자원
* signal, message
Deadlock을 발생시킬 수 있는 자원의 형태
- Non-preepmtible resources
- Exclusive allocation resources
- Serially resuable resources
- consumable resources(너무 복잡해서 다루지 않음)
'Software Courses > Operating System' 카테고리의 다른 글
[Memory] Memory Basic (0) | 2020.12.07 |
---|---|
[Deadlock] Deadlock Solutions (0) | 2020.12.06 |
Process Synchronization and Mutual Exclusion (0) | 2020.12.02 |
Process Scheduling (0) | 2020.12.01 |
Thread 관리 (0) | 2020.11.30 |