🎈 Race Condition 이란?
- 두 개 이상의 프로세스, 스레드들이 하나의 공유자원에 접근할 때 마치 경쟁하듯이 동시에 접근하는 상황에서 동시성 문제가 발생할 수 있는 상태
- DeadLock의 일부로써 여러 프로세스가 공유자원에 동시에 접근하는 상황에 sequence가 서로 상이할 수 있기에 자료 처리에 대한 일관성 역시 떨어진다.
💡 주로 발생하는 경우
- 커널 작업 수행 시 인터럽트 발생한 경우
- 프로세스가 시스템 콜을 하여 커널모드로 진입해 작업 수행 중 Context Switching 발생한 경우
- 멀티 프로세스 환경에서 공유 메모리 내 커널 데이터에 접근 시
🎈 해결책은?
- Mutual Exclusion (Semaphore, Mutex)
- A 프로세스가 임계 영역에서 작업 수행 중이면, 타 프로세스는 해당 영역에 접근 X
- Progress (avoid deadlock)
- 임계 영역에 있는 프로세스 외에 다른 프로세스가 해당 영역에 진입하는 것 방해 X
- Bounded Waiting (avoid starvation)
- starvation 상태 방지하기 위해 프로세스가 임계 영역에 들어가기 위해 요청한 이후부터 타 프로세스들이 해당 영역에 들어가는 횟수에 limit을 걸어줌
참고 사항
링크텍스트 : https://www.techtarget.com/searchstorage/definition/race-condition