Linux 커널은 커널 스택에서 인터럽트 스택으로 어떻게 전환합니까?

Linux 커널은 커널 스택에서 인터럽트 스택으로 어떻게 전환합니까?

사용자 모드 작업이 중단되면 어떻게 되나요? TSS를 참조하여 CPU가 커널 모드 스택으로 전환된다는 것을 알고 있습니다. 그러면 커널은 언제, 어떻게 IRQ 스택으로 전환됩니까?

답변1

x86_64에서 커널 코드는 인터럽트 시 인터럽트 스택으로 전환됩니다. 각 CPU에는 인터럽트 스택이 있습니다. 사용자 모드에서 실행되는 동안 인터럽트가 발생하면 실제로 두 개의 스택 스위치가 발생합니다. 먼저 해당 스레드/프로세스의 사용자 스택에서 커널 스택으로(하드웨어에 의해 자동으로 수행됨) 다음에는 인터럽트 스택으로 전환됩니다. 바라보다https://www.kernel.org/doc/Documentation/x86/kernel-stacks

관련 정보