프로세스 A가 CPU의 eax 레지스터에 2라는 값을 넣고 연산을 수행하다가 프로세스 B로 문맥교환이 되어서 프로세스 B는 eax 레지스터에 10이라는 값을 넣고 연산을 수행하게 되는 상황을 가정해보자.
다시 B에서 A로 문맥교환이 되었을 때, A가 제대로 수행하기 위해서는 CPU의 eax 값은 2인 상태가 되어야 할 것.
즉, 문맥 교환되는 시점에 어디까지 수행했는지, 그리고 현재 CPU의 레지스터 값은 얼마인지 등을 저장해 둔다. (문맥 저장
) 이게 리눅스에서는 task 구조체 안의 struct thread_struct 일 것이고 핀토스에서는 thread 구조체의 tf 에 해당!
struct intr_frame tf; /* Information for switching */
어디까지 실행했는지를 기억하기 위해 아래 값들을 intr_frame 내에 저장하고 있다.
실제로 문맥교환이 일어나는 과정 : 우선 A가 실행중이며