더북(TheBook)

그림의 왼쪽 부분은 프로세스 A 다음으로 CPU를 점유할 프로세스 B가 (이전에 실행된 적이 있었다면) 마지막으로 실행된 시점의 CPU 정보(이전에 CPU를 양보한 시점의 정보)를 CPU의 레지스터로 가져옵니다. 이 정보에 포함된 프로그램 카운터로 다음에 실행할 인스트럭션을 가리키고 스택 포인터와 프레임 포인터로 다시 스택 프레임을 구성합니다. 연산 중이던 데이터는 범용 레지스터에 모두 복원될 테니 이전에 중단된 인스트럭션부터 실행하면 됩니다.

중요한 점은 CPU에서 PCB로 데이터를 저장(store)하고 PCB에서 데이터를 가져오는(load) 것은 시스템에 부담을 준다는 사실입니다. 잦은 컨텍스트 스위칭은 시스템 성능을 떨어트립니다. 이쯤에서 어떻게 하면 컨텍스트 스위칭을 덜 할 수 있는지 대안을 제시해야 하지만, 아쉽게도 정답은 없습니다. 어떤 프로그래머는 만드는 프로그램에 따라 다르다고 말하고, 어떤 프로그래머는 그걸 알아가는 게 실력이라고 말합니다. 명확한 답을 제시할 수는 없지만 지금은 이러한 개념을 정립하는 것만으로도 충분히 의미 있는 일이라 생각합니다.

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