운영체제(OS)/keyword

(Project1-Threads) 경쟁 상태(Race Condition)

스탠딩 2023. 12. 15. 14:32

race condition(경쟁 상태)은 소프트웨어나 하드웨어에서 여러 실행 스레드나 프로세스가 공유된 자원에 동시에 접근할 때 예상치 못한 결과가 발생하는 상황이다. race condition이 발생하는 이유는 다음과 같다.

 

  1. 공유 자원 접근: 여러 스레드가 동시에 공유된 자원에 접근할 때, 어떤 스레드가 먼저 그 자원을 변경하면서 예상치 못한 결과가 발생할 수 있다.
  2. 비동기적 실행: 스레드나 프로세스의 실행 순서가 예측하기 어려운 경우 race condition이 발생할 수 있다. 특히, 동기화 메커니즘이 없을 때 문제가 될 수 있다.

출처 : https://www.rapitasystems.com/blog/race-condition-testing

1st run과 2nd run은 공유자원에 대한 스레드 1,2의 작업이 원자적으로 일어나면서 문제를 발생시키지 않는다.

출처 : https://www.rapitasystems.com/blog/race-condition-testing

반면 3rd run은 스레드 1과 2의 공유자원에 대한 접근 순서가 섞이면서 경쟁 상태에 의한 문제가 발생한다.

 

race condition을 방지하려면 적절한 동기화 메커니즘이 필요하다. race condition이 발생하면 프로그램의 동작이 예측 불가능해지며, 버그와 같은 심각한 문제를 야기할 수 있다.