기술 블로그

레이스 컨디션(Race Condition) 본문

온라인강의/선착순이벤트

레이스 컨디션(Race Condition)

parkit 2023. 10. 3. 11:16
728x90
반응형

 

레이스 컨디션(Race Condition)

  • 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근하여 작업하려고 할 때, 비정상적인 결과가 발생하는 것

 

 

레이스 컨디션으로 인해 발생할 수 있는 문제점과 해결방법

  • 멀티 스레드 환경에서는 프로세스 내의 모든 자원을 공유할 수 있다는 점에서 동기화 문제 발생
  • 해결방법 : 동시에 여러 스레드가 공유 자원에 접근할 수 없도록 함.(한 개의 자원에 한 스레드만 접근 할 수 있게 하는 것을 의미)

 

 

하지만, 위의 해결방법으로 아래와 같은 문제점이 발생

  • 스레드가 자원을 독점적으로 사용하고 있어 다른 스레드가 자원에 접근하려고 락을 획득하기 위해 무한 대기할 수 있는 상황이 발생할 수 있음. → 교착상태(DeadLock, 데드락) 발생
  • 교착상태는 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황

 

 

교착상태(DeadLock, 데드락) 발생 조건 4가지(모두 충족해야 발생)

  • 상호 배제 : 한 번에 프로세스 하나만 해당 자원을 사용할 수 있음
  • 점유 대기 : 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.
  • 비선점 : 이미 할당된 자원을 강제로 빼앗을 수 없음
  • 순환대기 : 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다.

 

 

 

 

728x90
반응형