※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.
멀티 코어 시스템에서의 멀티쓰레딩은 아래 그림처럼 진행됩니다.

이때 멀티코어에서는 스케줄링이 여러 CPU 에 걸쳐 발생하게 됩니다.
원래 하나의 CPU 를 가질 때는 스케줄링을 통해 하나의 CPU 만 들락날락했었지만, 멀티코어의 경우 서로 다른 코어에 걸쳐서 Context Switching 이 발생할 수 있습니다.
이때 발생하는 문제점은 다음과 같습니다.
멀티 코어를 고려해서 프로그래밍을 진행하면, 해결해야하는 중요한 문제점이 하나 더 존재합니다.
하나의 프로세스에서 일어나는 작업을 여러 코어 / 쓰레드에 걸쳐서 진행하게 될 때, 공유 데이터에 두 쓰레드가 임의의 순서로 접근하게 된다면 공유 데이터가 훼손되는 문제점이 발생하게 됩니다.
그래서 공유 데이터에 다수의 쓰레드가 접근할 때는 어떤 쓰레드가 먼저 작업을 진행할지 서로 합을 맞추는 것이 굉장히 중요한데, 이를 동기화 ( Synchronization ) 라고 합니다.
좋은 글 감사합니다!