교착상태 Dead lock

2019. 10. 31. 18:36임베디드/운영체제

두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리는 무한 대기 상태

 

예) 스레드 A, B가 존재하고 자신의 자원은 반환하지 않은 상태에서 상대방의 자원을 요구하는 상태

 

데드락이 생기기 위한 조건

1. 상호배제 : 둘 이상의 스레드는 동시에 공유자원을 사용할 수 없다

2. 순환대기 : 서로 원하는 자원이 있는 상대방이 순환적으로 연결되어 있다

3. 비선점 : 수행이 완료되기 전까지는 자원을 반납하지 않고, 상대방도 가져갈 수 없다

4. 점유대기 : 자신의 자원을 반환하지 않은 상태에서 상대방의 자원을 요구하고 있다

 

데드락을 방지하기 위해서는 조건 중 하나라도 성립하지 않으면 된다. 하지만 자원의 낭비가 심하다는 단점이 있다

'임베디드 > 운영체제' 카테고리의 다른 글

세그멘테이션 기법  (0) 2019.11.10
가상 메모리 동작 방식 정리  (0) 2019.11.08
thrashing 스레싱  (0) 2019.10.17
프로세스 상태 관계  (0) 2019.10.16
스케쥴링 알고리즘  (0) 2019.10.16