핵심 키워드 : 동기화, 공유 자원, 임계 구역, 상호 배제

동시다발적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 서로 협력하며 영향을 주고 받기도 한다. 이렇게 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 **동기화(synchronization)**되어야 한다.

동기화의 의미

동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행될 수 있다. 하지만 협력 관계에서 실행되는 프로세스들은 아무렇게나 마구 동시에 실행해서는 안 된다. 올바른 실행을 위해서는 **동기화**가 필수다.

프로세스 동기화란?

→ 정보, 통신 분야에서의 동기화란 작업들 사이의 수행 시기를 맞추는 것이다.

프로세스들 사이의 수행 시기를 맞추는 것은 무엇을 의미할까?

NOTE

프로세스뿐만 아니라 스레드도 동기화 대상이다. 정확히 말하면 실행의 흐름을 갖는 모든 것은 동기화의 대상이다.

실행 순서 제어를 위한 동기화

Writer Process 와 Reader Process를 동시에 실행 중이라 가정한다. 이 두 프로세스는 무작정 아무 순서대로 실행되어서는 안된다. Writer가 값을 저장하기도 전에 Reader가 읽는 것은 올바른 실행 순서가 아니다. 이렇게 동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것이 첫 번째 프로세스 동기화이다.

상호 배제를 위한 동기화