동기화 (컴퓨터 과학)

컴퓨터 과학에서 동기화(synchronization)는 합의에 도달하거나 특정 작업 순서를 커밋하기 위해 특정 지점에 합류하거나 핸드셰이킹하도록 여러 프로세스를 조정하는 작업이다.

 필요성 
동기화의 필요성은 다중 프로세서 시스템에서만 발생하는 것이 아니라 모든 종류의 동시 프로세스에서 발생한다. 단일 프로세서 시스템에서도 마찬가지이다. 아래에는 동기화에 필요한 몇 가지 주요 요구 사항이 언급되어 있다.

 포크 및 조인: 작업이 포크 지점에 도착하면 N개의 하위 작업으로 분할된 다음 n개의 작업으로 서비스된다. 서비스가 완료된 후 각 하위 작업은 다른 모든 하위 작업의 처리가 완료될 때까지 기다린다. 그런 다음 다시 합류하고 시스템을 떠난다. 따라서 병렬 프로그래밍에는 모든 병렬 프로세스가 여러 다른 프로세스가 발생할 때까지 기다리기 때문에 동기화가 필요하다.

 생산자-소비자: 생산자-소비자 관계에서 소비자 프로세스는 필요한 데이터가 생성될 때까지 생산자 프로세스에 종속된다.

 배타적 사용 리소스: 여러 프로세스가 리소스에 의존하고 동시에 리소스에 액세스해야 하는 경우 운영 체제는 특정 시점에 하나의 프로세서만 리소스에 액세스하도록 보장해야 한다. 이는 동시성을 감소시킨다.

 같이 보기 
 퓨처와 프로미스
 메모리 배리어

 외부 링크 
 Anatomy of Linux synchronization methods at IBM developerWorks
 The Little Book of Semaphores, by Allen B. Downey
 Need of Process Synchronization 

분류:병행성
분류:컴퓨터 매개 통신
분류:동기화
분류:에츠허르 데이크스트라