Uma chamada do sistema kernel é executada dentro do contexto do processo de chamada, apenas em um nível de privilégio diferente e com infraestrutura de suporte diferente. O kernel do Linux tem uma variável por CPU que rastreia o processo atual, current_task
; Ele usa isso sempre que precisa saber qual é o processo atual. Em uma determinada CPU, a tarefa atual só é alterada quando o planejador decide, e a mudança de contexto se encarrega de salvar todas as informações necessárias para que o kernel possa acompanhar o que está acontecendo onde.
O LWN tem alguns artigos úteis em syscalls, Anatomia de uma chamada de sistema parte 1 e parte 2 . Eles explicam como as chamadas do sistema são definidas e como elas são executadas, embora talvez não com detalhes suficientes para responder à sua pergunta, pois elas não abordam a transição do espaço do usuário para o espaço do kernel em detalhes. mas isso é "apenas" qualquer suporte de transição baseado em armadilhas disponível na CPU.