기어가더라도 제대로

[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention 본문

CS/운영체제

[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention

Damagucci-juice 2022. 8. 8. 10:01

데드락을 예방하거나 회피하는 방법은 크게 3가지가 있다

  • 예방
  • 회피
  • 탐지 및 복구

이번 시간엔 예방에 대해 배워보자.

‏‏‎ ‎

4가지 조건이 성립할 때 데드락이 발생한다.

이중 하나를 삭제하면 데드락은 발생하지 않는다.

  1. 자원의 배타적 사용
  2. 비선점 자원
  3. 자원을 하나 Hold 하고 다른 자원 요청
  4. Circular wait

‏‏‎ ‎

예방은 4가지의 데드락 성립요건중에 하나를 제거하는 방법이다.

그 결과 deadlock 은 절대 발생하지 않는다.

‏‏‎ ‎

1. 모든 자원을 공유 허용

  • Exclusive use of resources 조건 제거
  • 현실적으로 불가능
  • CPU, memory, disk drive 등 공유하기 어려운 부분이 많다. 컴퓨터의 정의 부터 바꿔야할 거같다.

‏‏‎ ‎

2. 모든 자원에 대해 선점 허용

  • Non-preemptible resources 조건 제거
  • 현실적으로 불가능
  • 유사한 방법
    • 프로세스가 할당 받을 수 없는 자원을 요청한 경우. 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
      • 이후 처음(또는 check-point) 부터 다시 시작
    • 심각한 자원 낭비 발생 -> 비현실적

‏‏‎ ‎

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

  • Hold and wait 조건 제거
  • 자원 낭비 발생
    • 필요하지 않은 순간에도 가지고 있음
  • 무한 대기 현상 발생가능

‏‏‎ ‎

4. Circular wait 조건 제거

  • Totally allocation 을 일반화 한 방법
  • 자원들에게 순서를 부여
  • 프로세스는 순서의 증가 방향으로만 자원 요청 가능
  • 자원 낭비 발생

‏‏‎ ‎

교착상태(3/5)- Deadlock Prevention image

P1 - 1,2,3,4 의 자원이 필요하다.

P2 - 1,3 의 자원이 필요하다.

P1 이 1번 자원을 사용하고 있을 때, P2 가 1번 자원을 사용하지 못하는 경우가 발생할 수 있다.

‏‏‎ ‎

결론

  • Deadlock prevention 은 4개의 deadlock 발생 필요조건 중 하나를 제거
  • Deadlock 이 절대 발생하지 않음
  • 심각한 자원 낭비 발생
    • Low device utilization
    • Reduced system throughput
  • 비현실적

‏‏‎ ‎

‏‏‎ ‎

Comments