프로세스 혹은 스레드 간 공유 영역에 대한 동시 접근으로 인해 발생하는 데이터 불일치를 막고 데이터 일관성을 유지하기 위해 순차적으로 공유 영역을 수행하도록 보장하는 메커니즘이다.
모든 기계어 명령은 원자성을 갖는데 이는 하나의 기계어 명령어가 실행을 시작할 경우 그 명령의 수행 종료 시 까지는 인터럽트를 받지 않는다. 분리 불가능 이라고도 한다.
CPU가 두 개 이상의 명령어를 처리할 경우에는 원자성이 보장되지 않는데 이는 각 명령을 수행하는 중에 OS가 다른 스케줄링으로 CPU에게 다른 명령을 수행하게 함으로써 현재 수행 중인 명령을 인터럽트, 즉 중단하게 된다는 의미이다.
두 개 이상의 명령어를 원자성으로 묶기 위해서는 스레드 간 동기화 메커니즘이 필요하다. 즉, 한 스레드가 모든 명령을 다 수행할 때까지 도중에 중단되지 않도록 해야 한다.
CPU 에서 원자성을 보장하지 않는 모든 연산 처리는 스레드 간 동시적 접근에 의해 데이터 불일치가 발생할 수 있다.
실행할 때마다 값이 다르게 나온다.
동기화 기법으로 데이터 불일치를 방지할 수 있다.
이전 ↩️ - 동기화 개념 - 싱글 스레드와 멀티 스레드arrow-up-right
메인 ⏫arrow-up-right
다음 ↪️ - 동기화 개념 - 임계 영역arrow-up-right
Last updated 3 months ago