Skip to content

Latest commit

 

History

History
31 lines (19 loc) · 1.78 KB

RaceCondition_Deadllock.md

File metadata and controls

31 lines (19 loc) · 1.78 KB

동기화의 필요성: 레이스 컨디션과 교착 상태(데드락)

Race Condition

  • 두 개 이상의 프로세스가 공통 자원을 동시에 읽거나 쓰는 동작을 할 때 발생
  • 공용 데이터를 어떤 순서로 접근하냐에 따라 실행 결과가 달라지는 경우
  • 말그대로 두 스레드가 하나의 자원을 사용하기 위해 서로 경쟁하는 상태

image

Race Condition의 제어 문제

Mutual Exclusion

두 개 이상의 프로세스가 공용 데이터에 동시 접근하는 것을 막기 위해 한 프로세스가 공용 데이터를 사용하고 있으면 해당 자원을 사용하지 못하도록 막거나, 다른 프로세스가 자원을 사용하지 못하도록 막는 방법

Starvation

  • '기아 상태'
  • 프로세스들이 더이상 진행을 하지 못하고 영구족으로 블록되는 상태
  • 시스템 자원에 대한 경쟁 도중 발생 가능하며 프로세스간의 통신 과정에서도 발생 가능
  • 두개 이상의 작업이 서로 상대방의 작업이 끝나는 것만을 기다리고 있기 떄문에 결과적으로 아무것도 완료되지 못함

Deadlock

  • Mutual Exclusion을 시행 시 발생하는 추가적인 제어문제
  • 각자 프로그램을 실행하기 위해 두 자원 모두에 엑세스 해야 한다고 가정할 때, 프로세스는 두 자원 모두를 필요로 하므로 필요한 두 리소스를 사용하여 프로그램을 수행할 때까지 이미 소유한 리소스를 해제하지 않음
  • 이 상황에서 두 프로세스는 Deadlock 상태에 빠질 수 있음. image