No caso do Linux, uma tarefa (ideia interna do kernel de um encadeamento; encadeamentos podem compartilhar recursos, como memória e arquivos abertos; alguns executam apenas dentro do kernel) pode ser executada em um usuário ou (é encadeamento de execução) transferir para o kernel (e vice-versa) para executar uma chamada de sistema. Um thread de usuário pode ser highjacked temporariamente para executar uma interrupção (mas isso não é realmente aquele thread em execução).
Que um processo é um "processo do sistema" ou um processo de usuário regular é completamente irrelevante no Unix, eles são tratados da mesma forma. No caso do Linux, algumas tarefas são executadas no kernel para lidar com tarefas diversas. Eles são trabalhos do kernel, não "processos do sistema", no entanto.
Uma grande ressalva: livros de texto sobre produtos de software complexos (compiladores e sistemas operacionais são exemplos particularmente chocantes) tendem a explicar algoritmos simplistas (geralmente aqueles que não foram usados a sério por meio século ), porque as máquinas do mundo real e os requisitos do usuário são muito muito complexos para serem manipulados de alguma forma que pode ser descrita de maneira simples e estruturada. Grande parte do compilador é um ajuste ad-hoc (particularmente na área de otimização de código, as transformações são principalmente o subconjunto de possibilidades que aparecem no uso prático). No caso do Linux, a maior parte do código são drivers de dispositivo (mencionados de passagem como dependentes de dispositivo em textos do sistema operacional) e, desse código, uma grande fatia é manipular dispositivos que não se comportam corretamente, que não atendem às suas próprias especificações ou comportar-se diferentemente entre as versões do "mesmo dispositivo". Freqüentemente, o que é explicado em detalhes minuciosos é apenas o segmento do trabalho que pode ser reduzido a alguma teoria legal, deixando a parte irregular e bagunçada (quase) completamente fora. Por exemplo, Cris Fraser e David Hanson, em seu livro descrevendo o compilador LCC , dizem que os textos típicos do compilador contêm principalmente explicações na análise lexical e análise, e muito pouco na geração de código. Essas tarefas são cerca de 5% do código do seu compilador (projetado para ser simples!) E tinham uma taxa de erro insignificante. A parte complexa do compilador simplesmente não é abordada em textos padrão.