티스토리 뷰
### 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.
(pthread_mutex_lock()은 parameter의 lock에 따라 할당 한후 lock(lock안걸림), 활성화 될때 까지 wait(lock걸림))
(pthread_mutex_unlock()은 parameter의 lock을 풀고 활성화 시켜준다.)
2. < Livelock >
: Deadlock(두개 이상의 thread가 동작할 때 thread가 무한 대기 상황)이랑 유사
: 두개 이상의 thread가 동작할 때 서로 방해를 하는 것
반응형
'운영체제 > 이론' 카테고리의 다른 글
(39) Deadlock - Resource Allocation Graph (2) | 2020.09.25 |
---|---|
(38) Deadlock이 발생할 수 있는 Condition (0) | 2020.09.25 |
(36) Dining Philosophers Problems (철학자들의 만찬 문제) (Synchronization Problems) (0) | 2020.09.24 |
(35) Readers and Writers Problem (Synchronization Problems) (0) | 2020.09.24 |
(34) Bounded Buffer Problem (Synchronization Problems) (0) | 2020.09.24 |
공지사항
최근에 올라온 글