예를 들어 다음과 같이 C 언어 구문이 있다고 합시다.
b = a * 2;
이때 이를 기계어로 실행하면 다음과 같이 작동합니다.
1. ... 2. r1 = a 3. r2 = r1 * 2 4. b = r2 5. ...
Tip
여기서 r1, r2는 레지스터고 a, b는 메모리 공간을 가리킵니다.
4를 실행한 후 5를 실행하기 전에 무조건 컨텍스트 스위치가 실행된다면, 이 C 언어 구문은 항상 정확한 결과가 나옵니다. 그러나 불행히도 우리는 컴퓨터가 1~5 중 어디까지 실행한 후 컨텍스트 스위치를 일으킬지 예상할 수가 없습니다. 그렇다면 이것이 어떤 문제를 일으키는지 살펴봅시다.