협력적 프로세스는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스이다. 논리 주소 공간을 공유하는 협력적 프로세스의 질서 있는 실행을 보장하여, 이를 통해 데이터의 일관성을 유지하는 다양한 메커니즘이 필요하다.
동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 Race condition 이라고 한다. Race condition부터 보호하기 위해, 우리는 한순간에 하나의 프로세스만이 데이터를 조작하도록 보장해야 한다. 이러한 보장을 위해, 우리는 어떤 형태로든 프로세스들이 동기화되도록 할 필요가 있다.
둘 이상의 프로세스가 동시에 critical section에 진입하는 것을 막는 것을 Mutual Exclusion(상호 배제)라고 한다.
동시에 실행되면 안되는 코드들의 섹션을 critical section(임계 구역) 이라 한다.
Mutual과 Exclusion의 축약어
Critical Section을 해결하기위한 하드웨어 기반의 해결책보다 상위 수준의 해결책
Semaphores는 동기화 도구로써 프로세스의 활동을 동기화 하기 위해 제공되는 Mutual lock보다 좀 더 복잡한 방식이다.
Semaphores S - 정수 변수
표준 연산 wait()과 signal()로만 접근 가능
발명한 사람이 네덜란드 사람이여서 이를 P() 와 V()로 사용