동기화 (컴퓨터 과학)
보이기
컴퓨터 과학에서 동기화(synchronization)는 합의에 도달하거나 특정 작업 순서를 커밋하기 위해 특정 지점에 합류하거나 핸드셰이킹하도록 여러 프로세스를 조정하는 작업이다.
필요성
[편집]동기화의 필요성은 다중 프로세서 시스템에서만 발생하는 것이 아니라 모든 종류의 동시 프로세스에서 발생한다. 단일 프로세서 시스템에서도 마찬가지이다. 아래에는 동기화에 필요한 몇 가지 주요 요구 사항이 언급되어 있다.
- 포크 및 조인: 작업이 포크 지점에 도착하면 N개의 하위 작업으로 분할된 다음 n개의 작업으로 서비스된다. 서비스가 완료된 후 각 하위 작업은 다른 모든 하위 작업의 처리가 완료될 때까지 기다린다. 그런 다음 다시 합류하고 시스템을 떠난다. 따라서 병렬 프로그래밍에는 모든 병렬 프로세스가 여러 다른 프로세스가 발생할 때까지 기다리기 때문에 동기화가 필요하다.
- 생산자-소비자: 생산자-소비자 관계에서 소비자 프로세스는 필요한 데이터가 생성될 때까지 생산자 프로세스에 종속된다.
- 배타적 사용 리소스: 여러 프로세스가 리소스에 의존하고 동시에 리소스에 액세스해야 하는 경우 운영 체제는 특정 시점에 하나의 프로세서만 리소스에 액세스하도록 보장해야 한다. 이는 동시성을 감소시킨다.
같이 보기
[편집]외부 링크
[편집]- Anatomy of Linux synchronization methods at IBM developerWorks
- The Little Book of Semaphores, by Allen B. Downey
- Need of Process Synchronization Archived 2020년 8월 7일 - 웨이백 머신