- 실제 사용환경에서는, 여러개의 프로세스와 스레드들이 거의 동시에 번갈아가며 수행되고 있다.
공유자원
**을 사용하는 상황이 있을 수 있다.race condition
**이 발생하지 않도록 자원 및 데이터의 **동기화
**에 신경을 써야 한다.공유자원 (shared resource)
임계영역 (critical section)
프로세스의 코드 중 공유자원에 접근하는 코드
공유자원 접근 순서에 따라 실행 결과가 달라지는 프로세스의 코드 영역
경쟁 상태 (race condition)
동기화 메커니즘
**이 필요하다!Deadlock
둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상
Starvation
상호배제 (Mutual Exclusion) ⇒ 임계영역은 하나씩 수행~!!
한 프로세스가 임계영역을 수행하고 있으면, 다른 프로세스들은 그들의 임계영역 코드를 수행하지 않도록 해야 한다. 데드락걸리면 안되니까…! atomic하게 수행하자~!
진행, 가용성 (Progress) ⇒ show must go on~!!
임계영역에 들어간 프로세스가 없는 상태에서, 임계영역 코드를 수행하려는 프로세스라면, 어떤 프로세스를 수행시킬 건지 정하긴 해야한다. 프로세스 수행은 하긴 해야지~!