💡 동기화 (Synchronization)
여러 프로세스 or 스레드를 동시에 실행해도 공유데이터의 일관성을 유지하는 것
💡 경쟁조건 (Race Condition)
여러 프로세스 or 스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가가 달라질 수 있는 상황
💡 임계영역 (Critical Section)
공유데이터의 일관성을 보장하기 위해 "하나의 프로세스 or 스레드"만 집입해서 실행가능한 영역
do{
entrysection
critical section
exit section
}
💡 임계영역 문제의 해결책이 되기 위한 조건
- mutual exclusion (상호배제) : 한번에 하나의 프로세스 or 스레드만 critical section에서 실행할 수 있음.
- progress (진행) : 만약에 critical section이 비어있는 경우 & 프로세스 or 스레드가 실행되길 원한다면 진행될 수 있어야 한다.
- bounded waiting (한정된 대기) : 프로세스 or 스레드가 무한정 기다리고 있으면 안된다.