1. 경쟁 조건 (race condition)
ㅇ 발생 상황 : 주로, 병렬 프로그래밍이나 멀티스레드 환경에서 발생
- 여러 프로세스,스레드가 동시에 공유 자원(변수,메모리,파일 등)에 접근할 때 발생
- 적절한 동기화 없이 자원을 동시에 읽거나 쓸 때 발생
ㅇ 특징 : 실행 순서에 따라 결과가 달라질 수 있음
ㅇ 해결 방법 : 세마포어, 모니터, 뮤텍스 등
- 세마포어 (Semaphore) : 특정 자원에 동시에 접근할 수 있는 스레드 수의 제한
- 뮤텍스 (Mutex) : 공유 자원에 대한 접근을 하나의 스레드만 허용하도록 잠금 설정
- 모니터 (Monitor) : 객체 단위로 잠금을 관리하여 동기화를 제공
ㅇ 해결 요소
- 상호 배제 (Mutual Exclusion) : 한 번에 단 하나의 프로세스 만 자원에 접근토록 함
- 진행 (Progress) : 자원에 접근할 수 있는 프로세스가 대기 중이 아닐 때,
. 대기 중인 다른 프로세스가 자원 접근 가능토록 보장
- 한정 대기(Bounded Waiting) : 특정 프로세스가 자원에 접근하기 위해 무한정 대기 않도록 보장
. 자원 접근 기회가 반드시 돌아와야 함