OS - Race Condition (Mutual exclusion, Deadlock, Starvation )

jaeha_lee·2022년 6월 2일
0

Race Condition?

  • 2 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황
  • 이렇게 경쟁하려고 하는 경우 3가지 문제가 발생
    • Mutual exclusion, Deadlock, Starvation

Mutual exclution

  • 하나의 프로세스/스레드가 공용 데이터를 사용하고 있으면, 그 공용 데이터를 다른 프로세스/스레드가 사용하지 못하게 하는 것

Deadlock

  • 공유 데이터를 여러 곳에서 사용할 때 발생하는 현상으로 프로세스/스레드가 공유 데이터를 접근할 수 없어 프로그램을 실행할 수 없는 상황 / 무한정 기다리게 됨
  • 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황
  • Deadlock 발생 조건 4가지
    1. mutual exclusion : 한 번에 하나의 프로세스/스레드만이 공유 자원을 사용할 수 있음.
    2. 점유 대기 (Hold and wait) : 자원을 최소한 하나는 가지고 있고, 대기 프로세스 존재
    3. 비선점 (No preemption) : 다른 프로세스가 사용하고 있는 자원 뺐을 수 없음
    4. 순환 대기 (Circular wait) : 대기 프로세스가 순환 형태로 공유 자원을 사용할 수 있도록 대기
  • Deadlock 해결 방법
  • 위에서 말한 4가지 중 하나를 어기게 만들면 됨
    업로드중..
    출처

Starvation

  • 프로세스가 공유 데이터를 사용하려고 하는데 무한 대기 중인 상태를 말함

Deadlock vs Starvation

  • 둘 다 공유 데이터를 사용하지 못하고 있는 상황인 것은 비슷함.

  • 교착 상태는 여러 프로세스가 동일한 자원 점유를 원할 때 발생하고 (접근하려고 할때)

  • 기아 상태는 여러 프로세스가 자원을 점유하기 위해 경쟁 할 때 특정 프로세스는 영원히 자원 할당을 받지 못하는 것 (접근 자체가 안됨)

  • 다른 점

    • Deadlock의 경우 : block 상태에서 발생
    • starvation의 경우 : ready 상태에서 발생

    업로드중..

    [출처] 한빛 미디어

0개의 댓글