경쟁 조건(race condition)
- 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황
동기화(synchronization)
- 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것
임계 영역(critical section)
- 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역
critical section problem의 해결책이 되기 위한 조건
mutual exclusion (상호 배제)
- 한번에 하나의 프로세스/스레드만 critical section에서 실행할 수 있다.
progress (진행)
- 만약에 critical section이 비어있고 어떤 프로세스/스레드들이 critical section에 들어가길 원한다면 그 중에 하나는 critical section에서 실행될 수 있도록 해야한다.
bounded waiting (한정된 대기)
- 어떤 프로세스/스레드가 무한정 critical section에 들어가지 못하고 기다리고 있으면 안된다.
참조
쉬운코드_동기화(synchronization), 경쟁 조건(race condition), 임계 영역(critical section)을 자세하게 설명합니다! 헷갈리시는 분들 꼭 보세요!