동기화란


동기화의 의미

process synchronization: 프로세스들 사이의 수행 시기를 맞추는 것을 의미

생산자와 소비자 문제

물건을 계속해서 생산하는 프로세스인 생산자와 물건을 계속해서 소비하는 프로세스인 소비자가 있다. 생산자와 소비자는 총합이라는 데이터를 공유하고 있다.

생산자와 소비자는 총합이라는 데이터를 동시에 사용하는데, 앞서의 예제에서는 서로의 작업이 끝나기 전에 총합을 수정했기 때문에 엉뚱한 결과가 발생한다.

shared resource & critical section

image.png

생산자와 소비자 문제에서 잔액과 총합은 shared memory이다. 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 critical section이라고 함.

race condition: 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

고급 언어는 실행 과정에서 저급 언어로 변환되어 실행된다. 컴퓨터는 고급언어가 아닌 저급 언어를 실행하기 때문에 여러 줄의 저급 언어로 변환된 고급 언어 한 줄을 실행하는 과정에서 문맥교환이 일어날 수 있다.

image.png

임계 구역 문제 해결 원칙

동기화 기법