x86-64 Linux 커널에서 컨텍스트 전환 중에 실행 상태는 어떻게 저장됩니까?

x86-64 Linux 커널에서 컨텍스트 전환 중에 실행 상태는 어떻게 저장됩니까?

TSS는 x86-64의 레지스터 값을 저장하지 않기 때문에 컨텍스트 전환이 발생할 때 이러한 레지스터의 값은 어떻게 저장됩니까?

답변1

범용 레지스터는 대부분 스택에 보관됩니다.PUSH_REGS그리고struct pt_regs. 실제 용도를 찾으려면 PUSH_AND_CLEAR_REGS및 를 찾으십시오 POP_REGS.

나머지 CPU 상태는 다음 위치에 저장됩니다.thread_struct.

Linux는 가능할 때마다 TSS를 방지합니다(초기 32비트 x86 버전에서는 이를 사용했지만 오래 전에 변경되었습니다).

관련 정보