Operating System Ch 08

LeemHyungJun·2022년 11월 1일
0

Operating System

목록 보기
7/14
post-thumbnail

운영체제 수업 + Operating System Concepts 10E 정리 내용

Operating System Ch08 : Deadlock

Deadlock Problems

1. Deadlock

  • deadlock
    • lock 상태를 해결하지 못하고 절대 빠져나오지 못하는 상황
    • 대기 중인 프로세스 중 하나로 인해 발생할 수 있는 이벤트를 두개 혹은 더 많은 프로세스가 무한정 기다리는 상태

2. Simple example

  • p0와 p1 프로세스가 존재하고 S와 Q라는 semaphore를 각각 wait하려고 하는 상황에서 deadlock이 발생한다.

Deadlock Characterization

1. Deadlock 발생 조건

  • 아래의 네개의 동작이 동시에 발생하면 deadlock 상황이 일어날 수 있다.
  1. Mutual exclusion
    한번에 하나의 프로세스만 공유자원에 접근할 수 있다.
  2. Hold and wait
    공유자원이 여러 개가 있는 상황에서 하나를 점유한 상태에서 다른 공유자원을 기다리는 상황
  3. No preemption
    공유자원을 가지고 내려놓지 않는 상황 (스스로 공유자원을 내려놓지 못하는 상황)
  4. Circular wait
    생각하는 철학자의 문제(모든 철학자가 자신의 왼쪽의 젓가락을 들면 오른쪽 젓가락이 없어서 무한정 기다리는 상황)와 유사한 상황

2. Handling Deadlocks

  • 개발자의 능력
    • Deadlock prevention:
      위에서 언급한 문제가 모두 발생하지 않도록 막기
  • OS의 개입
    • Deadlock avoidance:
      deadlock이 발생할 것 같은 상황을 확인하고 막아준다.
    • Deadlock detection and recovery:
      OS가 모니터링 하면서 deadlock 조건이 만족되면 발견 후 후속 조치를 한다.
    • Deadlock ignorance:
      deadlock이 발생하여도 무시한다.
  • Deadlock을 피하기 위해서는 스케줄링 이슈, deadlock의 원인 파악 등으로 인해서 OS에 매우 큰 overhead가 발생한다.
  • OS가 개입하는 방식은 overhead로 인해서 사용하지 않고 실제로는 개발자의 능력을 통해 방지하는 방식만 사용한다.

3. example

  • Deadlock이 발생하는 생각하는 철학자 코드

    • 이 상황에서는 hold and wait 현상이 발생한다.
  • Deadlock을 해결한 코드

    • 이 상황에서는 deadlock은 해결하지만 starvation은 발생할 수 있다.
    • starvation은 스케줄링 이슈이다.

0개의 댓글