본문 바로가기
Computer Science/Operating System

Deadlock

by Gofo 2021. 6. 20.

Deadlock

concurrent하게 실행되는 프로세스가 있을 때, 그 프로세스들이 progress를 만들지 못하고 영원히 정지되는 현상을 말한다.

 

다음과 같은 상황은 deadlock에 빠질 수 있다.

 

Deadlock의 조건

Deadlock이 발생하기 위해서는 아래 4가지 조건이 충족되어야 한다.

역은 성립하지 않는다.

즉, 아래 4가지 조건이 충족되어도 무조건 deadlock은 아니다.

  • mutual exclusion
    • critical section에 오직 하나의 프로세스만 들어갈 수 있다.
  • hold and wait
    • 어떤 프로세스가 이미 critical section에 들어가있고, 다른 critical section에도 들어가기 위해서 기다린다.
    • 다른 프로세스에서 이미 들어가있는 critical section에 들어가기 위해서 기다린다.
  • no preemption
    • 어떤 프로세스가 critical secton에 들어가있는데 다른 프로세스가 그걸 쫒아낼 수 없다.
    • 해당 프로세스의 작업이 완료되어야만 다른 프로세스에서 critical section에 들어갈 수 있다.
  • circular wait
    • hold and wait의 강화된 조건이다.
    • hold and wait이 사이클을 형성한다.

 


Resource-Allocation Graph

Deadlock 문제를 잘 표현하는 그래프이다.

  • node
    • process와 resource를 표현한다.
    • process는 원으로 표현한다.
    • resource는 네모로 표현한다.
    • n개의 instance가 있는 resource라면 큰 네모 안에 n개의 작은 사각형을 그려서 표현한다.
  • edge
    • request edge : process가 resource를 요청하는 것을 표현한다.
    • assignment edge : resource가 process에 할당되는 것을 표현한다.

 

 

Resource-Allocation Graph and Deadlock

아래에서 왼쪽 그래프는 사이클을 형성하므로 deadlock이 발생된다.

그러나 오른쪽 그림은 P2가 작업이 끝날 경우 사이클이 깨지기 때문에 deadlock이 발생하지 않는다.

 

 

'Computer Science > Operating System' 카테고리의 다른 글

Memory Management  (0) 2021.06.20
Deadlock Handling  (0) 2021.06.20
Synchronization Problems  (0) 2021.06.20
Synchronization with OS Support : Mutex  (0) 2021.06.20
Synchronization with OS Support : Semaphore  (0) 2021.06.20

댓글