티스토리 뷰

운영체제/이론

(40) Handling Deadlocks & Deadlock prevention

geonwoopaeng@gmail.com 2020. 9. 26. 12:25

### 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
공지사항
최근에 올라온 글