예를 들어 다음과 같이 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 중 어디까지 실행한 후 컨텍스트 스위치를 일으킬지 예상할 수가 없습니다. 그렇다면 이것이 어떤 문제를 일으키는지 살펴봅시다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.