티스토리 뷰
### Handling Deadlocks ###
< 방법 >
• Deadlock ignorance.
: Deadlock의 발생 빈도가 낮은 경우 사용
• Deadlock prevention.
: 처음부터 Deadlock 이 발생을 막는 것(Deadlock이 발생 전의 조치)
• Deadlock avoidance.
: Deadlock을 좀 더 정교하게 피하는 방법
### Deadlock prevention ###
: 이 4가지 조건을 만족 해야 Deadlock 발생!!!
1. < Mutual Exclusion (상호 배제) >
: 이 체계를 통해 여러 thread가 공통 리소스를 동시에 공유할 수 있다.
(이 공유 리소스에는 한번에 1개의 thread만 )
: 실용적이지 않다.
2. < Hold and Wait >
: thread가 리소스 하나 점유한 상황에서 다른 리소스를 요청한 것 => 다른 리소스에 thread가 있어 thread가 기다리는 상황
: 하나의 프로토콜은 각 thread가 실행을 시작하기 전에 요청하고 모든 리소스를 할당해야 한다.
: 다른 프로토 타입을 사용하면 thread에 리소스가 없을 때만 리소스를 요청할 수 있다.
: 낮은 자원 활용도 와 starvation(기아) -> 단점
3. < No preemption >
: thread에 할당된 리소스는 다른 thread가 할당된 리소스를 가져갈 수 없다.
: 이 프로토콜은 thread의 중간 상태를 쉽게 저장하고 복원 할 수 있으며 리소스에서 사용할 수 있다.
: Mutex locks 와 semaphores 같은 리소스에는 적용할 수 없다.
4. < Circular wait >
: 이 프로토콜은 모든 리소스 유형의 총 순서를 부과하며 각 thread가 열거 순서대로 리소스를 요청해야 한다.
: 교착 상태에 필요한 조건 중 하나를 무효화하여 실용적인 솔루션을 제공한다.
<Circular wait 요청 순서>
: 이 체계는 각 자원 유형에 고유한 정수를 할당하여 우리가 순서대로 한 자원이 다른 자원보다 우선하는지 여부를 결정할 수 있다.
: 리소스는 사전 정의 된 순서로 확보해야 한다.
'운영체제 > 이론' 카테고리의 다른 글
(42) Deadlocks Algorithm (0) | 2020.09.26 |
---|---|
(41) Deadlock avoidance (0) | 2020.09.26 |
(39) Deadlock - Resource Allocation Graph (2) | 2020.09.25 |
(38) Deadlock이 발생할 수 있는 Condition (0) | 2020.09.25 |
(37) Deadlock (0) | 2020.09.25 |