타이머 인터럽트 전에 프로세스가 종료될 때 Linux 커널은 어떻게 컨텍스트 전환을 수행합니까?
프로세스가 실행 중이고 타이머 인터럽트가 발생하면 schedule
플래그가 설정되면 함수가 자동으로 호출되고 스케줄링 기능이 실행할 다음 프로세스를 선택한다는 것을 알고 있습니다. 기본적으로 이 경우 스케줄링 기능은 현재 프로세스의 컨텍스트에서 실행되지만 타이머가 중단되기 전에 프로세스가 종료되면 어떻게 될까요? schedule
이 경우 누가 함수를 호출합니까? 어떤 맥락에서 작동하나요?
참고: 원래 stackoverflow에 이 질문을 올렸는데 stackoverflow에 답변이 없어서 여기에 다시 묻습니다.
답변1
타이머 인터럽트는 특정 프로세스와 연관되지 않습니다. 서비스가 제공되면 커널은 인터럽트 서비스 루틴을 실행합니다. 이 코드와 이 코드가 호출하는 모든 함수는 "인터럽트 컨텍스트"에서 실행됩니다.
인터럽트는 거의 모든 작업 중간에 서비스될 수 있습니다. 즉, 다른 인터럽트를 서비스하는 코드를 포함한 커널 코드의 실행을 일시 중지하여 인터럽트를 서비스할 수 있습니다.
스케줄러가 호출되면 해당 시점에 존재하고 실행 가능한 프로세스만 고려합니다.