운영체제 7. Deadlock (3) - Deadlock Prevention

728x90
반응형

출처 : https://www.youtube.com/watch?v=XMrlt3ZwfM4&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=21

 

 

 

이전 강의 마지막에서 Deadlock이 발생하려면 다음 4가지 조건이 모두 충족되어야 한다고 했다.

 

그렇다면 Deadlock을 발생시키지 않으려면 어떻게 해야할까?

바로 위 4가지 조건 중 1가지만 만족시키지 않게하면 deadlock은 발생하지 않을 것이다.

 

 

Deadlock 해결 방법

 

  • Deadlock prevention methods (교착 상태 예방)
  • Deadlock avoidance methods (교착 상태 회피)
  • Deadlock detection and deadlock recovery methods (교착 상태 탐지 및 복구)

 

 

Deadlock Prevention

 

  • 4개의 deadlock 발생 필요 조건 중 하나를 제거
    • Exclusive use of resources
    • Non-preemptible resources
    • Hold and wait (Partial allocation)
    • Circular wait
  • Deadlock이 절대 발생하지 않음

 

 

Deadlock Prevention

        1. 모든 자원을 공유 허용 = 모든 자원을 shared resource로 만들기
          • Exclusive use of resources 조건 제거
          • 현실적으로 불가능
        2. 모든 자원에 대해 선점 허용
          • Non-preemptible resources 조건 제거 = preemptible resource로 만들기
          • 현실적으로 불가능
          • 유사한 방법으로는 가능하기는 함
            • 프로세스가 할당 받을 수 없는 자원을 요청한 경우, 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
              • 이후 처음 (또는 check-point) 부터 다시 시작
            • 심각한 자원 낭비 발생 (내가 꽤 많은 작업을 수행한 상태임에도 자원이 없다는 이유로 포기하고 맨 처음 상태로 돌아감, 내가 수행한 작업에 대한 자원은 무용지물이 되어버림) -> 비현실적

 

 

 

3. 필요 자원 한번에 모두 할당 (Total allocation)

  • Hold and wait 조건 제거
  • 필요한 자원을 한 번에 모두 받고, 작업이 끝날 때까지 자원을 반납하지 않는다.
  • Deadlock은 발생하지 않음. but, 자원 낭비 발생
    • 필요하지 않은 순간에도 가지고 있음 (P1이 R1~R10까지 할당받았다고 했을 때, R7을 쓰지 않고 있는 상황에서 P2가 R7이 절실히 필요한 상황을 생각해보자. 엄청난 낭비다.)
  • 후순위의 프로세스는 무한 대기 현상 발생 가능

 

4. Circular wait 조건 제거

  • Totally allocation을 일반화 한 방법
  • 자원들에게 순서를 부여
  • 프로세스는 순서의 증가 방향으로만 자원 요청 가능
  • Deadlock은 발생하지 않음. but, 자원 낭비 발생
    • 프로세스 P1(R1, R2, R3, R4 필요), P2(R1, R3 필요)가 있고 자원은 R1(1개), R2(1개), R3(3개), R4(2개) 가 있다고 가정해보자.
    • 먼저 P1이 R1을 요청해서 할당받으면 R2를 요청하고, 차례대로 R4까지 할당받을 것이다. P2는 R1을 요청했는데 P1이 쓰고있으므로 작업을 시작할 수 없다.
    • 자원의 요청이 원형이 아닌 일직선의 형태를 이루므로 deadlock은 발생하지 않는다.
    • 하지만 P2는 R1이 없으면 R3를 받고 작업을 시작할 수 있는데도, R1의 자원이 생길 때까지 작업을 시작할 수 없다.

 

 

Deadlock Prevention

 

  • 4개의 deadlock 발생 필요 조건 중 하나를 제거해서 deadlock이 일어나지 않게 만들자
  • Deadlock이 절대 발생하지 않는다.
  • 심각한 자원 낭비가 발생한다.
    • Low device utilization
    • Reduced system throughput
  • 비현실적이다.

즉, Deadlock Prevention은 4가지 조건 중 하나만 없애면 deadlock을 완벽하게 예방할 수 있지만, 어느 하나도 없애기가 비현실적이거나 매우 비효율적이라는 문제가 존재한다.

 

 

728x90
반응형