티스토리 뷰

운영체제/이론

(37) Deadlock

geonwoopaeng@gmail.com 2020. 9. 25. 16:41

### Deadlock ###

: process가 자원을 얻지 못해 다음 처리를 하지 못하는 상태로, '교착 상태'라고도 하며

시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할때 발생합니다.

=> 두개 이상의 thread가 동작할 때 thread가 무한 대기 상황

<Deadlock 전제>

1. 병렬/병행 일때

2. 자원이 유한할 때

<Resource를 사용하는 정식 절차>

1. < Request >

: Thread가 리소스를 요청할 때 요청을 즉시 할당 할 수 없는 경우 요청 스레드는 자원을 확보 할 때까지 기다려야 한다.

2. < Use >

: Thread는 리소스에서 작동할 수 있다

(ex. 리소스가 mutex lock인 경우 thread는 critical section에 접근 할 수 있다)

3. < Release >

: Thread가 작업 처리 후 자원을 해제한다.

< Deadlock 상황_CODE >

1.

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

(pthread_mutex_lock()은 parameter의 lock에 따라 할당 한후 lock(lock안걸림), 활성화 될때 까지 wait(lock걸림))

(pthread_mutex_unlock()은 parameter의 lock을 풀고 활성화 시켜준다.)

 

 

 

2. < Livelock >

: Deadlock(두개 이상의 thread가 동작할 때 thread가 무한 대기 상황)이랑 유사

: 두개 이상의 thread가 동작할 때 서로 방해를 하는 것

 

반응형
공지사항
최근에 올라온 글