본문 바로가기
CS/운영체제

교착상태란?

by taehee.kim.dev 2020. 11. 16.

교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?

또, 교착상태의 해결법은 무엇인가요?


  • 교착 : 어떤 상태가 굳어 조금도 진전이 없이 머물고 있다.

  • 교착 상태(deadlock : 데드락) : 둘 이상의 프로세스들이 이미 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상.

교착 상태의 발생 조건

  1. 상호 배제 : 프로세스들이 자원을 독점하고 싶어 한다.

  2. 점유 대기 : 프로세스가 이미 할당된 자원을 가졌음에도 불구하고, 추가적인 다른 자원을 더 갖기 위해 기다린다.

  3. 비선점 : 다른 프로세스가 이미 쓰고 있는 자원은 뺏을 수 없다.

  4. 순환(환형) 대기 : 각 프로세스는 순환적으로 다음 프로세스가 써야 하는 자원을 현재 쓰고 있다.

이 4가지 모든 조건들이 만족했을 때 교착상태(데드락)가 발생한다.

교착 상태의 예방

현재 대부분의 운영 체제들은 교착 상태를 막는 것은 불가능하다.

교착 상태의 예방을 위한 방법들이 있지만, 자원 사용의 효율성이 떨어지고 비용이 많이 드는 문제점이 있다.

교착 상태 예방의 방법은 아래와 같다.

 

  1. 상호 배제 조건의 제거 : 상호 배제는 프로세스들이 각자 자원을 독점해 사용하고 싶어 하면서 발생하는 문제이므로, 여러 프로세스가 하나의 자원을 공유할 수 있도록 한다.

  2. 점유 대기 조건의 제거 : 하나의 프로세스에 모든 자원을 할당시키고 나서, 점유하지 않을 때만 다른 프로세스가 자원을 요구하도록 한다.

  3. 비선점 조건의 제거 : 어떤 프로세스가 다른 자원을 요구할 때, 이미 점유하고 있는 자원이 있다면, 점유하고 있던 자원을 반납하고, 요구한 자원의 사용을 위해 기다리게 한다.

  4. 순환(환형) 대기 조건의 제거 : 자원 유형에 따라 고유 번호를 할당하고, 각 프로세스는 현재 점유하고있는 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 한다.

교착 상태의 회피

교착 상태가 발생하면 적절히 회피해 나가는 방법

주로 은행원 알고리즘(다익스트라가 제안)이 사용된다.

  • 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데에서 유래한 기법이다.

  • 각 프로세스에게 자원을 할당한다.

  • 은행원 알고리즘을 적용하기 위해서는 자원의 양과 프로세스의 수가 일정해야 한다.

  • 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간 안에 할당하는 것을 보장한다.

 

참조 :

ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C

 

교착 상태 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 데드락은 여기로 연결됩니다. 다른 뜻에 대해서는 데드락 (동음이의) 문서를 참조하십시오. 교착 상태(膠着狀態, 영어: deadlock)란 두 개 이상의 작업이 서로 상

ko.wikipedia.org

coding-factory.tistory.com/311

 

[OS] 교착상태란 무엇인가?

 교착상태란? 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다

coding-factory.tistory.com

 

'CS > 운영체제' 카테고리의 다른 글

컨텍스트 스위칭이란?  (0) 2020.11.19
뮤텍스와 세마포어란?  (0) 2020.11.17
프로세스와 스레드의 차이  (0) 2020.11.16

댓글